我有8通道ADC芯片的多通道串行数据,我通过串行USB电缆连接到我的电脑。我想在Pure Data中使用这些单独的通道,但pd_comport对象不读取多通道串行数据。我已经浏览了Pd讨论论坛,但没有提到如何做到这一点。 关于我如何去做的任何想法?
答案 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 B2
或B1 C1 D1 A2 B2 C2
都没办法,所以不清楚第一个样本是属于channelA还是channelB。
因此,您必须亲自参与协议定义并解释从[comport]
获得的数据