首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

串口通讯诡异现象,该如何处理

2012-02-01 
串口通讯诡异现象采用USB串口与手机进行通讯,MFC平台用了一个封装好的通讯库。成功发送数据并且接收成功的

串口通讯诡异现象
采用USB串口与手机进行通讯,MFC平台用了一个封装好的通讯库。成功发送数据并且接收成功的话,手机会返回相应的字符串。例如发送“DPAT=1”(手机背景光为白色),手机正确识别则返回“DPAT:OK”,否则返回“NOT FOUND”。
  现在的问题是当我直接发送时,重复很多次才有可能成功一次(即受到手机的正确反馈);而当我打开串口监视工具后在发送都一次成功,监控的结果显示发送的数据是正确的。
  请教一下这可能是哪里的问题。

[解决办法]
现在的问题是当我直接发送时,重复很多次才有可能成功一次(即受到手机的正确反馈);而当我打开串口监视工具后在发送都一次成功,监控的结果显示发送的数据是正确的。
---------
从这点可以确定你程序写的有问题
[解决办法]
楼上说了等于没说,肯定是程序有问题。这个东西我做过,串口会出现意想不到的情况。

不过,如果是你是调用API的话,应该问题不大。

调试时,注意监控接收缓存区。看看发送后,能否收到数据。
如果能收到,看看是不是含有DPAT=1,不要判断字符串等于这个。因为不同的设备可能在发送时,前面加一些乱七八糟的数据。

另外,串口是位传输的,你要等到你的数据,一位一位的过来,才进行判断的,而不是直接读取,如果直接读取可能只读取DPAT=。

建议收到消息后,里面用信号量或消息进行处理。
[解决办法]
注意接发缓冲区的大小。
假如你的接收缓冲区设定20,DPAT:OK只有7字节,他要接收够3次才会显示;
发送是一样的道理,不达到设定值他就不发送。
[解决办法]
该命令有么有需要用\r\n结尾?
[解决办法]
原因可能如下:
你每次发送的数据量没有达到发送缓冲区大小 所以不会立即传输的
设置你需要的发送缓冲区大小 多少个字节就立即发送 

热点排行