Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将串行端口的数据转换为十进制显示_Python - Fatal编程技术网

在Python中将串行端口的数据转换为十进制显示

在Python中将串行端口的数据转换为十进制显示,python,Python,我正在启动一个从无线电接收器读取数据的程序。数据长度为6字节,每1秒更新一次。程序读取串行端口USB数据,但数据格式不正确。我只知道它应该是一个无符号整数 每个数据字符串以6个字节的形式输入,每个字节表示一个与接收器记录的数据相对应的数字 import serial t = 0 while t == 0: ser = serial.Serial('/dev/tty.SLAB_USBtoUART', 9600, bytesize=8, stopbits=1, timeout=None,

我正在启动一个从无线电接收器读取数据的程序。数据长度为6字节,每1秒更新一次。程序读取串行端口USB数据,但数据格式不正确。我只知道它应该是一个无符号整数

每个数据字符串以6个字节的形式输入,每个字节表示一个与接收器记录的数据相对应的数字

import serial
t = 0
while t == 0:
ser = serial.Serial('/dev/tty.SLAB_USBtoUART', 9600, bytesize=8, stopbits=1,      timeout=None, xonxoff=0, rtscts=0, dsrdtr=0)
s=ser.readline(6)
#s=ser.read(6)
print("Streams received during interval: ")
print (s)

print("__________")
end
我希望得到如下输出:

0 101 0 91 145

但我得到的是:

电动汽车�


我认为输入的数据和它在print语句中的打印方式有问题。在继续之前,我只需要确保数据输入正确。

这是因为您正在使用
'%s'%s
语句将字节转换为字符串。它显示为与您的字节对应的任意随机ASCII字符

请尝试将字节打印为整数:

print ' '.join([ord(ss) for ss in s])

好吧,我想我会发布我的解决方案。使用NumPy,我能够轻松地输出正确的数据。我正在使用Dorji DRF4432S接收机和Dorji DRF5150S发射机。这些设置用于从传感器发送模拟电压,该传感器在触发之前基本不输出任何信号,电压保持高电平几秒钟,然后返回零值。希望这可能会帮助一些人寻找这个传感器的编码帮助

import serial
import numpy as np

t = 0
while t == 0:
ser = serial.Serial('/dev/tty.SLAB_USBtoUART', 9600, bytesize=8, stopbits=1,  timeout=None, xonxoff=0, rtscts=0, dsrdtr=0)
s=ser.readline(6)
#s=ser.read(6)
print("Streams received during interval: ")

ss=np.fromstring(s, dtype=np.uint8, count=6)
sen_1_group=ss[0]
sen_1_id=ss[1]
sen_1_voltage=ss[2]+ss[3]
sen_1_battery=ss[4]
sen_1_signal=ss[5]

print (ss)
print "Group Id = ", sen_1_group , "Sensor ID = ", sen_1_id
print "Sensor ", sen_1_id, " Voltage = ", sen_1_voltage
print "Sensor ", sen_1_id, " Battery = ", sen_1_battery
print "Sensor ", sen_1_id, " Signal Strength = ", sen_1_signal

print("__________")
end
这导致数据正确显示,如下所示:

>> Streams received during interval: 
>>[  0 101   0   0  84 169]
>>Group Id =  0 Sensor ID =  101
>>Sensor  101  Voltage =  0
>>Sensor  101  Battery =  84
>>Sensor  101  Signal Strength =  169
>>__________

当我现在打印TypeError:sequence item 0:预期的字符串,int foundTry just
print s
,或
print map(int,s)