C#串口 上位机怎么向下位机发送命令和接收下位机上传的数据
1个回答
展开全部
很简单的,你从网上搜串口编程,出来一堆,我给你参考,仅供参考:
用串口类SerialPort
1、打开串口
public bool ComOpen(int OutTime, string ComNum, int BaudRate)
{
try
{
com.PortName = ComNum;
com.BaudRate = 9600;
com.DataBits = 8;
//com.Parity = Parity.Even;
com.WriteTimeout = OutTime;
com.ReadTimeout = OutTime;
com.Open();
}
catch
{
return false;
//MessageBox.Show("打开串口失败!", "系统提示");
}
return true;
}
2、先把你的协议转换为byte数据,具体的你自己拼写,下面的是把你的字符串转换为为ascII码,你的十六进制的其实是ascII码形式
ASCIIEncoding MyInfo = new ASCIIEncoding();
byte[] MySend = MyInfo.GetBytes(AlarmCode);
在数组中,起始位一般是0x02还是0x03啊,忘了,你自己看着拼一下
3、串口发送或者接受命令,把你的数组发送出去或者取出来,都一样
public byte[] ComSend(byte[] sendbyte,int SleepTime)
{
//byte[] refbyte = new byte[500];
int reallength;
//try
//{
com.Write(sendbyte, 0, sendbyte.Length);
//return sendbyte;
//}
//catch
//{
// //MessageBox.Show("发送数据失败!");
// return null;
//}
try
{
reallength = com.BytesToRead;
byte[] refbyte = new byte[reallength];
reallength = com.Read(refbyte, 0, com.BytesToRead);
return refbyte;
}
catch
{
return null;
// MessageBox.Show("接收数据失败!");
}
}
用串口类SerialPort
1、打开串口
public bool ComOpen(int OutTime, string ComNum, int BaudRate)
{
try
{
com.PortName = ComNum;
com.BaudRate = 9600;
com.DataBits = 8;
//com.Parity = Parity.Even;
com.WriteTimeout = OutTime;
com.ReadTimeout = OutTime;
com.Open();
}
catch
{
return false;
//MessageBox.Show("打开串口失败!", "系统提示");
}
return true;
}
2、先把你的协议转换为byte数据,具体的你自己拼写,下面的是把你的字符串转换为为ascII码,你的十六进制的其实是ascII码形式
ASCIIEncoding MyInfo = new ASCIIEncoding();
byte[] MySend = MyInfo.GetBytes(AlarmCode);
在数组中,起始位一般是0x02还是0x03啊,忘了,你自己看着拼一下
3、串口发送或者接受命令,把你的数组发送出去或者取出来,都一样
public byte[] ComSend(byte[] sendbyte,int SleepTime)
{
//byte[] refbyte = new byte[500];
int reallength;
//try
//{
com.Write(sendbyte, 0, sendbyte.Length);
//return sendbyte;
//}
//catch
//{
// //MessageBox.Show("发送数据失败!");
// return null;
//}
try
{
reallength = com.BytesToRead;
byte[] refbyte = new byte[reallength];
reallength = com.Read(refbyte, 0, com.BytesToRead);
return refbyte;
}
catch
{
return null;
// MessageBox.Show("接收数据失败!");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询