在 Python 中通过串口接收到的数据
Data received through serial in Python
我已经配置了 Raspberry Pi UART,这是我的串口读/写代码:
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.open()
string = '#SET0\r\n'
print string
ser.write(string)
bytes2read = ser.inWaiting()
print bytes2read
if (ser.inWaiting()>0):
incoming = ser.readline()
print incoming
time.sleep(5)
bytes2read1= ser.inWaiting()
print bytes2read1
if (ser.inWaiting()>0):
print "Data:"
cont = ser.read(bytesaleer1)
print cont
cont 格式如下:
#D0:0:0:10
#D1:0:0:56
#D2:0:0:23
#D3:1:1:90
--------
我的问题是,如何获取并保存该变量的最后一个 0?我想保存从 cont 获得的 c0、c1、c2、c3 值; 10、56、23 和 90。
已尝试 line.strip 但没有很好的结果。
如果 cont
是一个包含所有五行文本的字符串,包括 --------
分隔线,我首先将其分成几行:
cont.splitlines()
=> [ '#D0:0:0:10',
'#D1:0:0:56',
'#D2:0:0:23',
'#D3:1:1:90',
'--------' ]
然后你可以遍历所有行,如果该行包含一个冒号,提取最后一个值并保存它。
vals = []
for line in cont.splitlines():
if ':' in line:
v = int(line.split(':')[-1])
vals.append(v)
>>> vals
[10, 56, 23, 90]
我已经配置了 Raspberry Pi UART,这是我的串口读/写代码:
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.open()
string = '#SET0\r\n'
print string
ser.write(string)
bytes2read = ser.inWaiting()
print bytes2read
if (ser.inWaiting()>0):
incoming = ser.readline()
print incoming
time.sleep(5)
bytes2read1= ser.inWaiting()
print bytes2read1
if (ser.inWaiting()>0):
print "Data:"
cont = ser.read(bytesaleer1)
print cont
cont 格式如下:
#D0:0:0:10
#D1:0:0:56
#D2:0:0:23
#D3:1:1:90
--------
我的问题是,如何获取并保存该变量的最后一个 0?我想保存从 cont 获得的 c0、c1、c2、c3 值; 10、56、23 和 90。 已尝试 line.strip 但没有很好的结果。
如果 cont
是一个包含所有五行文本的字符串,包括 --------
分隔线,我首先将其分成几行:
cont.splitlines()
=> [ '#D0:0:0:10',
'#D1:0:0:56',
'#D2:0:0:23',
'#D3:1:1:90',
'--------' ]
然后你可以遍历所有行,如果该行包含一个冒号,提取最后一个值并保存它。
vals = []
for line in cont.splitlines():
if ':' in line:
v = int(line.split(':')[-1])
vals.append(v)
>>> vals
[10, 56, 23, 90]