我正在设计一个控制系统,它应该通过串行端口处理太多的执行器(或多组执行器)。新设计(尚未实现)应该控制多个POSIX线程上的执行器。
这可以多次打开一个串口(通过多个线程)吗?
如果是,我将编写一个同步写/异步读机制。将n
个M[0]
个线程M[n-1]
添加到R
,它们可以直接将数据写入串行端口。他们不应该直接从串口读取。相反,线程while(true)
应该从M[i]
循环中的端口读取数据,并将数据提供给等待它的相应线程。 (当数据准备就绪并且它属于i
线程时),唤醒等待响应的/dev/ttyS0
这一切都取决于是否可以通过多个线程写入串口的问题。
备注:我无法测试串口的行为,因为目前我无法访问我所在大学机电一体化实验室的设备,
我正在使用内核2.6.38-8修补Xenomai实时子系统(如果重要)
我将代码移植到传统的Linux与串口通信的方式。 (打开read()
,设置波特率,write()
,{{1}}等。)目前,第三方库用于与串口通信。
答案 0 :(得分:4)
您只能打开一次相同的串口。第二次试验失败,Access Denied。打开端口后,您可以使用端口句柄在不同的线程中使用它。当然,您需要在这些线程之间同步端口访问。