
串口是串行的,不能并发,所以排队竞争,做完换人。
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,通过串口实现线程对数据实现收发,为什么只能写线程,而读线程运行不了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)