【发布时间】:2013-03-22 21:07:27
【问题描述】:
我正在编写一个 gtk 应用程序(在 C++ 中)以通过串行端口与电机控制器进行通信。我正在使用 Linux Ubuntu 和 termios lib。 我需要有关最佳解决方案的建议。 所以这是我的限制: 1-当我发送请求时,控制器给我发回一条消息 2-如果发生错误,控制器可以随时向我发送错误通知 3- 请求是以 [CR] 结尾的 ANSII 字符串 4- 控制器答案是 ANSII 字符串以 [CR][NL]
结尾由于(3)和(4),我认为在CANONICAL模式下配置串口是合适的。 由于 GUI + (2),我想到了多线程:一个在串口上写入用户请求的主线程和另一个读取控制器答案的无限线程。你认为这是个好主意吗?
第二个问题:如果我正在使用多线程,我希望能够在需要时写入数据,所以我必须找到一种方法来在写入期间停止/休眠读取线程,也许可以使用 pthread_cond_wait。我对吗?我见过 poll 和 select 函数,但我不太了解它们,我不确定它们是否与规范模式兼容。
我开始使用多线程和串行端口。我在谷歌、论坛上阅读了很多东西......但是大量的信息对于初学者来说有点不知所措。
感谢您的帮助。
【问题讨论】:
-
最好的办法就是开始尝试。你的建议听起来很合理。当您遇到特定问题或有特定问题时,请返回 SO。
标签: c++ linux serial-port