我有来自 8 通道 ADC 芯片的多通道串行数据,我通过串行 USB 电缆连接到我的计算机。我想在 Pure Data 中使用这些单独的通道,但是 pd_comport 对象不读取多通道串行数据。我已经搜索了 Pd 讨论论坛,但没有提到如何做到这一点。关于我该如何去做的任何想法?
1 回答
根据定义,串行连接只是单通道。如果您有多个(同步)通道,则称为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]