如何通过串行连接有效地使用设备?

Max*_*ing 6 .net serial-port .net-3.5

很长一段时间我一直在努力解决这个问题,我确实得到了一个最终解决方案,但它并不漂亮,我希望从stackoverflow社区获得一些关于如何做到这一点的智慧.

基本上我正在使用菊花链式连接到计算机的电机,我必须使用.Net中的SerialPort类与它们通信,它通过计算机上安装的一些驱动程序通过USB与电机通信.

问题是电机是菊花链式的,当我问的时候

对于来自一个人的信息,或者告诉它做某事,我必须等待结果回来之后再用那个马达或任何其他人做一些事情.

我刚刚度过了一段艰难的时光,而且我确信有更好的方法来处理我从未接触过的串行通信.对于这类事情,是否有任何良好的指导方针或最佳做法?这是一个相当标准的事情(串行通信 - > usb通过安装在计算机上的驱动程序)

我正在使用IMS的六个MDrive23Plus运动控制电机.

我可以提供更多细节,但我不确定这将导致什么.我希望这对StackOverflow来说足够具体,尽管我知道它有点模糊.我真的不知道如何更好地问它.

真正归结为如何有效地同步通信,以及如何有效地等待和读取有效的数据?我知道这对某些人来说可能很简单,但它对我来说效果不佳.

Cad*_*oux 1

您可能需要多个线程和/或异步操作。过去,在进行串行通信(不是在 .NET 中)时,我们会对端口上的读取进行排队。当读取完成时,回调函数(委托)将触发,将执行读取处理,可能会更改控制状态 - 我们的典型示例是条形码读取,同时具有键盘读取和计时器。其中一个事件将完成,这将导致一项操作(可能将其他排队的读取留在原地或取消它们,具体取决于状态要转移到的位置。)

您可能想研究使用状态机。在这种情况下,状态机知道正在进行什么操作、允许哪些转换、如何在它们之间进行转换以及转换会导致什么操作。