在Python中使用Numato ADC的数据

2024-09-21 07:51:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写一个Python脚本,它从Numato板读取ADC数据,对接收到的字节进行切片以检索数据,这将是一个介于0和1023之间的整数,并更改该值以给出一个电流值。此值与读取的时间一起插入到Numpy数组中。你知道吗

此代码引发错误“TypeError:字节索引必须是整数或片,而不是元组”。你知道吗

检索数据所涉及的脚本片段如下:

def readdata(a, serPort):
global elapsed
serPort.write(str.encode("adc read 0 " +v "\r"))
response = serPort.read(25)
current = response[8,-8]*0.0322265625
b = numpy.array([elapsed, current])

感谢所有的帮助。非常感谢。你知道吗

更新:回复[8,-8]的打字错误已修改为:

response[8,:-8]

现在抛出另一个错误,如:

TypeError: can't concat into bytes

Tags: 数据脚本read字节response错误切片整数
1条回答
网友
1楼 · 发布于 2024-09-21 07:51:12

问题在于response[8,-8]。您已经使用元组(8,-8)作为索引,这不能用于字节数组。(Numpy对象确实支持此索引和其他类型的复杂索引。另一方面,字节数组只接受整数或片作为索引)。你知道吗

要获取从设备接收到的部分数据,请使用切片,例如:

response[4:8] # get 4 bytes at offsets 4,5,6,7

注意bytes类型的片也是bytes,您将不能在算术运算中使用它,例如将它乘以浮点数。您必须首先将字节转换为Python整数值。使用struct模块完成此操作。7.1. struct — Interpret bytes as packed binary data。下面是如何获得4字节big endian整数(从偏移量4开始,仅作为示例):

value = struct.unpack(">I", response[4:8])

相关问题 更多 >

    热门问题