4

我正在设计一个控制系统,它应该通过串行端口处理太多的执行器(或执行器组)。新设计(尚未实现)应该通过多个 POSIX 线程控制执行器。

这是否可以多次(通过多个线程)打开一个串口?如果是的话,我会写一个同步写/异步读机制。会有n线程M[0]可以M[n-1]直接将数据写入串行端口。他们不应该直接从串口读取。相反,一个线程R应该在while(true)循环中从端口读取数据并将数据提供给等待它的相应线程。(唤醒M[i]等待响应,当数据准备好并且属于i线程时)

这完全取决于是否可以通过多个线程写入串行端口的问题。

注意:我无法测试串口的行为,因为目前我无法访问我大学机电一体化实验室的设备,

我正在使用用 Xenomai 实时子系统修补的内核 2.6.38-8(如果重要)

我正在将代码移植到与串行端口通信的传统 Linux 方式。(打开/dev/ttyS0,设置波特率,,,read()write())目前使用第三方库与串口通信。

4

1 回答 1

4

同一个串口只能打开一次。第二次试用因拒绝访问而失败。打开端口后,您可以使用端口句柄在不同的线程中使用它。当然,您需要在这些线程之间同步端口访问。

于 2012-10-06T07:28:30.260 回答