打印

串口通信问题

[复制链接]
849|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-5-13 18:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个串口通信的代码,使用的是握手协议。

  硬件:usb转232

  串口参数:115200,n,8,1

  控件:mscomm

  语言:C++(MFC)

  方式:串口中断函数中读数据

  协议是这样的,当A向B发送一条命令以后,B如果收到并正确处理了会向A发送“ok”字串,A收到“ok”表明可以继续下一条命令,如果在规定的时间里收不到,则重复发送相同命令,直到收到回复。

  现在的情况是,我在发送一条命令的时候,由于超时相同进行了多次发送,比如发送“Start”命令时重复发送了3次,然后收到了回复,可是回复的内容是“okokok”,请问这是什么情况

相关帖子

沙发
txcy| | 2012-5-13 19:03 | 只看该作者
由于移位串行发送,速度较慢,或者其他原因造成乙机回信速度慢了。甲机等不及又发送第2、3次,乙机收到3次,因而响应3次。
  改正的办法,1)甲机发送命令后,多等一会儿,再考虑发第2次;
  或者 2)检查程序,让乙机及时响应。例如,使用中断来接收串行数据。

使用特权

评论回复
板凳
sjnh| | 2012-5-14 08:46 | 只看该作者
用计算机,VC做要考虑很多操作系统有关的方面;
WINDOW操作串口是缓冲方式,还有任务切换,中断响应等待,都不像单片机我们自己随意控制响应时间;
举个例子我做的控制器是串口第一字节是地址字节,高校验,其它字节低校验, 后来用VC做软件演示,操作串口,发完第一字节后该配置发第二字节,程序是顺序执行的,但用示波器看串口1、2字节之间竟然有100多ms的间隔。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝