整理CSerialPort 的理解。遇到的问题
来源:互联网 发布:网络作家年收入十万 编辑:程序博客网 时间:2024/04/29 19:02
CSerialPort 一个很好用的串口类,但是最近在使用过成中遇到了一个小问题。就是在连续发送数据的时候一直出现发送的数据和接收的数据无法匹配,仅有第一次发送的可以完整匹配上。思考良久,终于找到如下解释:
//CSerialPort是异步串口操作,并且在每次WriteToPort()时,有清除发送缓冲区,要连续发送,只要把清除发送缓冲区的那个语句屏蔽就可以了。
//或者等待WriteFile真正操作成功,那样就和同步方式没有什么区别了。
我终于明白了,这个类没有办法同步发送数据,看它的cpp文件中的初始化:
m_hComm = CreateFile(szPort,// communication port string (COMX)
GENERIC_READ | GENERIC_WRITE, // read/write types
0, // comm devices must be opened with exclusive access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
FILE_FLAG_OVERLAPPED, // Async I/O
0); // template must be 0 for comm devices
FILE_FLAG_OVERLAPPED被设置为异步,并且不能改为同步,要同步的话用其他类吧,比如:
http://blog.chinaunix.net/u/32550/showart_365425.html
就是说:
m_ser.WriteToPort(chSend);
这句话执行好之后并不是马上发送串口数据
要等进入它的线程之后再发送.
你可以跟踪下是什么时候进入它的线程的.
三句writetoport都会进入这个线程
但是只能执行一个,最后一个.
答:对串口的操作,最好还是用Win32API函数。
答:自己顶一下
答:给你个简单的方法,在发送一个命令后,Sleep(10),然后发送下一个数据。因为这个类里在缓冲区没有发送完又发送新的数据的时候,会先请空缓冲区,再把新数据放入缓冲区,由于串口发送数据没有程序运行的快,造成只能发送一个命令的假象。最简单办法,发送后加个Sleep即可
答:我也遇到相同的问题了楼主有没解决啊zzmwz的方法不行啊。我的是通过串口循环发送数据我的就是每发送一次后SLEEP(100)但还是不行很有趣的是,有最前面一个和最后面一个非常奇怪
答:贴代码出来看看
答:这个怎么没有下文了呢,我也碰到这种情况了,原先用Sleep还有用,最近不知道怎么回事,有时候会丢失,有时候不会。楼主和大家有没有解决呢!
答:把它发送前清空发送缓冲区的代码去掉
答:这个类需要改写一下,它不能发字节型值为0的字符
答:不使用writeevent就可以了。
- 整理CSerialPort 的理解。遇到的问题
- CSerialPort串口类使用中遇到的问题
- CSerialPort类的问题求助
- 基于CSerialPort修改类的串口调试助手编写过程中遇到的问题总结
- 基于CSerialPort修改类的串口调试助手编写过程中遇到的问题总结
- CSerialPort不能连续发送的问题
- 今日遇到的问题整理
- 平时遇到的问题整理
- CSerialPort类的使用
- CSerialPort的WriteToPort 连续发送的问题分析
- 使用CserialPort类出现的一些问题的解决
- 使用CSerialPort类编写串口通信程序的问题
- 串口通信CSerialPort类WriteToPort不能连续发送的问题
- 串口通信CSerialPort类WriteToPort不能连续发送的问题
- 使用CSerialPort类编写串口通信程序的问题
- 【解决CSerialPort 串口类不能连续发送的问题】
- 关于CSerialPort串口类死循环的问题
- 使用CSerialPort类编写串口通信程序的问题
- Strategy(策略模式)
- JNI_编程技术__网文整理(上)
- Return to the Basic - 类 (class )
- android实现触摸屏校准
- MySQL count(*) 与 count(col) 查询效率比较
- 整理CSerialPort 的理解。遇到的问题
- Java六大必须理解的问题
- JNI_编程技术__网文整理(中)
- PL/SQL Developer使用技巧
- js向action中传参中文乱码
- Linux C编程,复习写Makefile。
- NetSH使用方法
- CreateObject 函数
- win7下添加microsoft loopback adapter实现xp mode网络共享