首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

一些COM口通讯传输的有关问题(结贴迅速)

2012-07-28 
一些COM口通讯传输的问题(结贴迅速)本人新手,一些com口R232协议通讯的问题要问现在是要实现一个功能,C#桌

一些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进制)

热点排行