想在同一个串口中实现多线程收发通讯

想在同一个串口中实现多线程收发通讯,第1张

串口是串行的,不能并发,所以排队竞争,做完换人。

8bit不能改,但是可以自己构造buffer等方法来缓存数据

线程间同步问题可一参考你所用语言的具体方法,不一而同。

HANDLE hCom;

hCom = CreateFile("COM1",

GENERIC_ALL,

0,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL);

ReadFile 、 WriteFile

char Buffer[100];

DWORD n;

ReadFile(

hCom, //文件的句柄

Buffer, //用于保存读入数据的一个缓冲区

100, //要读入的字节数

&n, //指向实际读取字节数的指针

0 //如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。该结构定义了一次异步读取 *** 作。否则,应将这个参数设为NULL

);

写入用WriteFile 同理

另一个线程完全可以运行,是否运行决定权在你。 如果另一个线程需要等待串口的数据,那么它应该调用wait来等待信号量 读取串口数据的线程应该在读取完成后通知等待在信号量上的线程,以继续运行。

TimersTimer 这个计时器是多线程的没错。

但是你整个处理还是在单主线程这条道上。

使用委托 和Thread 这种吧。

你用定时器是就延迟了错误的发生时间。

等到一个发命令,一个处理上传数据,一个更新UI 同时发生就错误了

以上就是关于想在同一个串口中实现多线程收发通讯全部的内容,包括:想在同一个串口中实现多线程收发通讯、求一个windows下c++的串口读写程序,单线程的,阻塞模式。简单点就行,我做个参考、Linux,通过串口实现线程对数据实现收发,为什么只能写线程,而读线程运行不了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9661369.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存