关于使用VS实现MFC串口通信

本人小白,由于项目需要,研究了几天关于MFC串口通信,以下是这几天的心得。
串口通信主要有以下几种方法实现:
1、使用微软的官方ActiveX控件MSCOMM.
2、使用第三方串口通信类 CnComm.
3、自己写串口通信类.

第一种方法是最常使用的,网上的实例、源码也很多。对其实现过程不再赘述。源码参见VS2013下MFC使用MSCOMM实现串口通信编程
但是在运行程序后会发现,发送数据正常,但是接收数据却无法显示,调试程序,错误定位在get_Input()语句处。即缓存中有数据,但是无法读取,和很多其他人一样,我也遇到了这个问题,困扰了一整天终于排解。原因不在代码,实际上是串口线的问题。换一根线就可以使用了,使用串口助手调试发现,串口接收的数据是乱码。更换串口线或者换一台电脑就可以了。

第二种方法是一位程序员大牛写的串口类,使用很方便。只需要在项目的头文件中包含CnComm.h头文件即可。
具体过程参见
http://blog.csdn.net/u012234115/article/details/37914807
第三种方法难度有点大,这里不介绍。
串口通信测试过程中遇到的问题:
1、串口接收数据的过程中,每次数据的接收都会包括上次接收的数据的内容,例如,使用查巨口助手作为发送端,MFC程序作为接收端,用串口助手第一次发送的数据为“0000”,第二次发送“8888”,那么MFC程序在第一次接收的数据为“0000”,但第二次接收的数据却变成了“00008888”。
解决办法:在每次接受数据后并UpdateData(false);之后对变量进行清空。此外,还应该注意,将RThreadhold(length)函数中的length取值变成与想要接收的数据一样的长度.此时,每次发送length长度的数据后,会在接收文本框中得到我们想要的结果,且下一次接收时均不包含上次接收过的数据。

你可能感兴趣的:(MFC编程)