我会通过 pySerial 在串行 COM 上编写一个列表。
我创建一个字符串列表,其中每个字符串都是一个参数,然后将该列表传递给串行写入函数。出现错误,因为我无法直接在串行上写入字符串列表
这是我的代码:
import datetime
import time
import sys
import serial
date = datetime.datetime.now()
dateStr = str(date.strftime('%d-%m-%Y'))
unixTime = int(time.time())
crc = str("1234")
packet = list()
packet.append('test')
packet.append(dateStr)
packet.append(unixTime)
packet.append('4')
packet.append('81')
packet.append('1')
packet.append('0')
packet.append('00.7')
packet.append('4')
packet.append('9')
packet.append('0')
packet.append('18.8')
packet.append('5')
packet.append('3')
packet.append('0')
packet.append('15.3')
packet.append('4')
packet.append('6')
packet.append('0')
packet.append('2')
packet.append('0')
packet.append('13')
packet.append('0')
packet.append('0')
packet.append('0')
packet.append('185.6')
# add semicolon between list elements
serialCOM.write(packet)
有没有办法将每个列表元素连接成列表或字节数组?
此外,我需要在每个列表元素之间添加分号。
感谢您的帮助!
最佳答案
如果您想要一个实际的 bytearray 对象,请将列表传递到 bytearray 构造函数中。
serialCOM.write(bytearray(packet))
请注意,unixTime
不会转换为字符串,因此您必须先将其转换。
但是您可能想要的(基于有关分号的注释)是使用字符串的 join 方法来连接字符串,如下所示:
# Force all items in the list to be strings
msg = ';'.join(map(str,packet))
serialCOM.write(msg)
连接的结果是:
In[50]: ';'.join(map(str,packet))
Out[50]: 'test;17-10-2016;1476708605;4;81;1;0;00.7;4;9;0;18.8;5;3;0;15.3;4;6;0;2;0;13;0;0;0;185.6'
关于python - 将 python 字符串列表转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086641/