是否可以多次打开串口?

时间:2012-10-06 07:23:17

标签: multithreading synchronization pthreads

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

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

这一切都取决于是否可以通过多个线程写入串口的问题。

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

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

我将代码移植到传统的Linux与串口通信的方式。 (打开read(),设置波特率,write(),{{1}}等。)目前,第三方库用于与串口通信。

1 个答案:

答案 0 :(得分:4)

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