簡體   English   中英

將字符串的python列表轉換為bytearray

[英]Convert python list of string to bytearray

我會通過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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM