串口通信数据处理问题 点击:955 | 回复:4



刘新华

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 29回
  • 年度积分:0
  • 历史总积分:158
  • 注册:2005年4月01日
发表于:2005-07-21 20:56:00
楼主
请教各位,在PC机与单片机之间通过串口进行通信的话,如果单片机只能接收十六进制的数据,那么在PC机中的通信程序中,我们所发的数据应该怎样进行处理。 比如:单片机要接收的数据为“68H 58H 25H” 那我们在发送数据时,如果发送Ox68 Ox58 Ox25可以吗? 我对这个不太明白,所以特请教大家!!!!!!!!!!!!



GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2005-07-22 10:23:00
1楼
观念很简单, 这边送出什么, 对方就会收到什么. "68H" 不等于 0x68, 前者占用三个字符, 后者只占一个字符. 要收到 "68H 58H 25H", 就得送出 0x36, 0x38, 0x48, 0x20, 0x35, 0x38, 0x48, 0x20, 0x32, 0x35, 0x48.

窝头

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 66回
  • 年度积分:0
  • 历史总积分:98
  • 注册:2005年1月17日
发表于:2005-07-22 14:03:00
2楼
其实很简单,测试一下就可以了。Gary似乎没理解刘工的意思。刘工的表达里面:68H中H表示的是68是用16进制表示

刘新华

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 29回
  • 年度积分:0
  • 历史总积分:158
  • 注册:2005年4月01日
发表于:2005-07-22 18:45:00
3楼
敢问窝头, 单片机所要接收的数据68H中H正如你所说的,68H代表一个字节,那么我们在上位机的程序中该如何发送数据,才能使单片机接收的数据是十六进制68???

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2005-07-25 16:52:00
4楼
Computer 的世界里就只有 0 与 1, 不管是在 memory 里, 还是在信号线上都一样. 并无 "单片机/Computer 只能接收十六进制" 的说法, 真正的限制在于您所使用的 protocol. 八进制, 十进制, 十六进制都只是给 "人" 看的, 方便 "人" 去使用而已. ASCII 字符 "6" = 0011 0110 B = 0x36 = 54 都是一样的, 都意指 memory 中的那 8 个 bit 的状态. 所以, 要让对方收到 "6", 您可以发出 "6" 或 0011 0110 B 或 0x36 或 54. 结果一样, 只是表示法不一样而已. 若您的单片机想收到 "68 58 25" 这8个字符所组成的字符串, 那您就得依序送出 0x36("6"), 0x38("8"), 0x20(" "), 0x35("5"), 0x38("8"), 0x20(" "), 0x32("2"), 0x35("5") 若您送出 0x68, 0x58, 0x25; 则对方也是收到 0x68, 0x58, 0x25 这三个字啰!

热门招聘
相关主题

官方公众号

智造工程师