在纯数据中读取多通道串行usb

时间:2013-04-25 14:19:56

标签: linux-device-driver usbserial puredata

我有8通道ADC芯片的多通道串行数据,我通过串行USB电缆连接到我的电脑。我想在Pure Data中使用这些单独的通道,但pd_comport对象不读取多通道串行数据。我已经浏览了Pd讨论论坛,但没有提到如何做到这一点。 关于我如何去做的任何想法?

1 个答案:

答案 0 :(得分:0)

根据定义,串行连接只是单通道。如果您有多个(同步)通道,则称为 parallel

所以你的问题基本上是以下两个中的一个:

并行串行流

如果您通过不同的串行连接传输8个ADC通道,您的(特殊)电缆应注册8个不同的设备(例如/dev/ttyUSB5/dev/ttyUSB6,... /dev/ttyUSB12) 。 在这种情况下,只需使用多个[comport]对象(每个串行设备对应一个)

单一多路复用流

在(更可能)情况下,您的ADC通过多路复用数据在单个串行连接中传输8个通道,您必须自己对串行流进行解复用。如何做到这一点,很大程度上取决于数据的实际格式。

假设您的ADC仅为8位且您只有4个通道(为简单起见),那么您可能会收到一个串行流,如:... A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 ....(A,B,...是4个通道的样本;和1,2,...作为样本帧),然后您可以将信号解复用为4个流,如

|
[t b              f]
|                  |
|  +------------+  |
[i ]/[+ 1]/[% 4]/  |
|                  |
[pack      0      0]
|
[route 0 1 2 3]
|  |   |   |

在实践中你的协议可能看起来略有不同(例如,应该有一种方法来指定框架边界(仅通过查看数字,无论你是否实际看到A1 B1 C1 D1 A2 B2B1 C1 D1 A2 B2 C2都没办法,所以不清楚第一个样本是属于channelA还是channelB。

因此,您必须亲自参与协议定义并解释从[comport]获得的数据