我正在设计一个控制系统,它应该通过串行端口处理过多的执行器(或执行器组)。新设计(尚未实现)应该通过多个 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/

10-11 10:53