-1

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

  • 代码[0] = "0X53,0X0B,0X01,0X02,0XFF,0X60,0X00,0X00,0X00,0X00,0X00,0XC2,0X45"

问题是通过我的 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()
4

1 回答 1

0

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

bytearray(int(i, 16) for i in s.split(","))
于 2020-08-19T07:56:01.143 回答