我正在设计一个控制系统,它应该通过串行端口处理过多的执行器(或执行器组)。新设计(尚未实现)应该通过多个 POSIX 线程控制执行器。
这是否可以(通过多个线程)多次打开串行端口?
如果是,我将编写同步写入/异步读取机制。会有n
线程M[0]
到M[n-1]
可以直接写数据到串口。他们不应该直接从串口读取。相反,线程 R
应该从 while(true)
循环中的端口读取数据,并将数据提供给等待它的相应线程。 (唤醒等待响应的 M[i]
,当数据准备好并且它属于 i
th 线程时)
这完全取决于是否可以通过多个线程写入串行端口的问题。
说明 :我无法测试串口的行为,因为目前我无法访问我大学机电一体化实验室的设备,
我正在使用内核 2.6.38-8 修补了 Xenomai 实时子系统(如果重要的话)
我正在将代码移植到与串行端口通信的传统 Linux 方式。 (打开 /dev/ttyS0
,设置波特率, read()
, write()
等)目前使用第三方库与串口通信。
最佳答案
同一个串口只能打开一次。第二次试验失败,拒绝访问。打开端口后,您可以使用端口句柄在不同的线程中使用它。当然,你需要同步这些线程之间的端口访问。
关于multithreading - 是否可以多次打开串口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12757707/