Win32API和Qt库实现win32下串口编程解决方法

作者:袖梨 2022-06-25

使用的是Qt的界面,用了Qt的多线程,串口操作没有用控件,直接对Win32 API进行调用,大部分串口操作都封装在一个类中,在辅助线程中进行串口事件的设置和等待,根据我的需要,设置等待特定字符的到达,暂时设为‘n’,在NMEA语句中这是一条语句的结束符。

等到特定字符到达后,辅助线程emit一个信号给GUI主线程,在主线程中调用串口操作类进行非重叠读操作,读取的字节长度=此时输入缓冲区内字符串的长度,通过动态分配内存来满足需要。在主线程中将读取的字符串显示出来,然后释放动态分配的内存。

现在多线程部分没有问题了,今天大部分时间都是在调试多线程,开始时eclipse中好像不能用gdb在Windows下调试多线程,总是出错。后来不知怎么搞的又可以了,抓紧调了一下,发现主要问题出在等待500ms超时后,想让辅助线程休眠100ms,使用了sleep(100),嘿嘿,应该是msleep(100)。

相关文章

精彩推荐