0

我正在做一个项目,我必须从一个很小的 ​​2.0(我正在用 arduino 编程)收集电压并将这些电压发送到 Python。我还必须发送获取数据的微秒。我正在使用 PySerial 与青少年交流。我首先将所有数据读入一个长度为 3998 的数组。我还有两个数组,一个timeData跟踪微秒的radarData数组,一个跟踪电压的数组。每个数组携带一半的数据,即 1999 个点。

SerialData 的示例部分:

b'1468095384\r\n'
b'0.01\r\n'

这将重复 1999 次。Python 代码接受这些输入并将它们写入数组“SerialData”。完成读取所有数据后,它将所有点分成两个数组,如下所示:

for i in range (0,3998):
    if(i % 2 == 0):
        radarData[samples] = float(str(SerialData[i], 'utf-8'))
        samples = samples + 1
    else:
        timeData[samples1] = float(str(SerialData[i], 'utf-8'))
        samples1 = samples1 + 1

Sample 和 Sample1 是计数器变量。

从打印出来float(str(SerialData[i], 'utf-8')),我知道将字符串解析为浮点数是可行的,但是每当我打印出radarData[samples]ortimeData[samples]时,我只会看到 0。我做错了什么?任何帮助表示赞赏。

谢谢!

4

1 回答 1

0

我怀疑您对列表的工作方式有一个错误的前提,这会让您感到困惑。这有效:

SerialData = [ b'468095384\r\n', b'0.01\r\n'] * 10                              

radarData = []                                                                  
timeData = []                                                                   

for i in range(0,len(SerialData)):                                              
    if(i % 2 == 0):                                                             
        radarData.append(float(str(SerialData[i], 'utf-8')))                    
    else:                                                                       
        timeData.append(float(str(SerialData[i], 'utf-8')))                     

print(radarData)                                                                
print(timeData)       

(顺便说一句,这就是我们要求MCVE时的意思)

我将您的代码更改为附加到空列表并删除了示例索引。

似乎要使您的代码正常工作,必须已经是一个包含(或更多)项目SerialData的已分配列表。len(SerialData)

如果您在脚本退出时实际上正在运行SerialData[samples],那么您正在查看列表中某种预先初始化的项目。看的时候有什么价值samples

这是我的输出:

[468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0, 468095384.0]
[0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]

为了好玩:

serialData = [ b'468095384\r\n', b'0.01\r\n'] * 10                              
tmp = list(map(lambda d: float(d), serialData))                   
radarData = tmp[0::2]                                                           
timedata = tmp[1::2]                                                            
print(radarData)                                                                
print(timeData)      
于 2016-06-10T21:33:31.390 回答