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

本文关键字:任务 两个 串行端口 IOT Windows | 更新日期: 2023-09-27 18:15:31

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

现在我想添加一个App Service到后台应用程序,这样我就可以通过串行从第二个前台应用程序发送消息。

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

任何想法?谢谢。

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

串行端口不允许多个连接,因为它没有意义超过一次。如果可能的话,如何在并发上下文中处理发送/接收?你需要一个物理协议来处理它,但是串行协议基本上是一个移位寄存器。

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

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

我几年前实现了类似的东西。这些库不是针对Windows IoT的,但代码不会有太大的不同。

http://cetdevelop.codeplex.com/