将字符串“0x00 ...”转换为 python 中的字节数组

convert a string of "0x00... " into bytearray in python

我想通过我的 COM 端口发送十六进制代码以驱动引擎。 我在使用此方法(https://openclassrooms.com/forum/sujet/convertir-fichier-tableur-csv-en-liste-sur-python,法语)打开的 .txt 中拥有所有十六进制代码。这给了我一个十六进制代码列表:

问题是通过我的 com 端口发送该代码。使用 ser.write(bytearray([0X53,0X0B,0X01,0X02,0XFF,0X60,0X00,0X00,0X00,0X00,0X00,0XC2,0X45]));

有效,但我必须手动输入十六进制代码。我想从 .txt 中提取行并通过 COM 端口发送 这是我目前的代码

    import serial
import csv
 
def convertisseur(chemin):
    Tableau = []
    Temps = []
    Acc = []

    f = open(chemin)
    csv.reader(f, delimiter=',')

    for row in f:
        Tableau.append(row)
    
    f.close

    n = len(Tableau)
    for i in range(n-1):
        Temps.append(Tableau[i][0])
        Acc.append(Tableau[i][1])
             
    return (Tableau)

def main():
        print("TEST DE PySerial")
        print("----------------")
        print
        ser = serial.Serial('COM3', 115200, timeout=1)
        ser.close()
        ser.open()
        ser.write(bytearray([0X53,0X0B,0X01,0X02,0XFF,0X60,0X00,0X00,0X00,0X00,0X00,0XC2,0X45]));
        
        Code=convertisseur('C:/Users/Tdeba/Desktop/Cod.txt')
        ser.write(Code[0].encode())
        print(Code[0].encode())
        #ser.write(bytearray([0X53,0X0B,0X01,0X02,0XFF,0X60,0X00,0X00,0X00,0X00,0X00,0XC2,0X45]));
        ser.close()
        return   0
    

if __name__ == '__main__':    
    
    main()

您可以将生成器传递给 bytearray 构造函数:

bytearray(int(i, 16) for i in s.split(","))