一些COM口通讯传输的问题(结贴迅速)
本人新手,一些com口R232协议通讯的问题要问
现在是要实现一个功能,C#桌面程序 往COM1发送数据,然后接收COM1返回的数据,解析后保存。
发送数据的格式 以%开头+ 加2位机器编码+ #分割+之后是传输数据+BCC校验两位+回车符 BCC校验范围为BCC校验之前的所有字符。
返回的数据格式也是一样,有BCC校验。
问题一:我字符串如何转16进制符。协议文档里面转换后的都有 0x开头,这个实际传输的时候有这两个字符吗?
比如%05#转换后 为0x25 0x30 0x35 0x23 这其中的空格+0x是不是手动加上去的?
我代码如下:
private string StringToHexString(string s)
{
byte[] b = System.Text.Encoding.Default.GetBytes(s);
//按照指定编码将string编程字节数组
string result = string.Empty;
for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符,以%隔开
{
result += " 0x" + Convert.ToString(b[i], 16); }
return result;
}
问题二:如何BCC校验实现代码是不是如下:
public byte Get_CheckXor(byte[] temp, int len)
{
byte A = 0;
for (int i = 1; i < len; i++)
{
A ^= temp[i];
}
return A;
}
问题三:如何加回车符
[解决办法]
0x干吗用的 只是为了阅读时区分进制吧 计算机里不会存储0x哦
[解决办法]
'\n' 10 换行(newline)
'\r' 13 回车(return)
也可以表示为'\x0a'和'\x0d'.(16进制)