在Windows IOT中使用相同串行端口的两个任务

时间:2016-10-28 07:35:55

标签: c# windows serialization task

到目前为止,我已经创建了一个后台应用程序,其主要任务是读取/写入串行端口。为此,我创建了一个辅助类来处理串行通信。这个帮助器类基于这个例子(https://developer.microsoft.com/en-us/windows/iot/samples/serialuart),它首先做的是连接到串行设备。这很有效。

现在我想在后台应用程序中添加一个App Service,以便我可以通过第二个前台应用程序的串口发送消息。

我的问题是使用相同的助手类并不起作用,因为我无法打开连接两次。有没有办法分享两个任务之间的串行连接?我考虑过使用信号量,这样两个任务都不会同时发送消息,但我仍然需要两次打开连接。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

串口不允许多次连接,因为它没有多次感觉。如果有可能,你怎么能在并发环境中处理发送/接收?你需要一个物理协议来处理它,但串行协议基本上是一个移位寄存器。

您有两种选择:对多个任务的独占访问,或对单个代理的独占访问,管理任务的并发性。

在我看来,第一个选项更简单:定义一个将打开串口的主题。然后,各种线程(不仅仅是任务)应该访问由锁互斥的打开端口:假设一个线程应该向串口发送一些东西并等待答案(或超时)。之后必须释放另一个待处理线程的锁。

几年前我实施了类似的东西。这些库并不针对Windows IoT,但代码并没有那么不同。

http://cetdevelop.codeplex.com/