參考資料:https://blog.csdn.net/baidu_37503452/article/details/121506783
data_str = '0102030405060708090a0b0c0d0e0f' data_bin = bytes(bytearray.fromhex(data_str)) print(data_str) print(data_bin)
執行結果如下:
D:\WorkSpace\Code_Space\Arduino_python\day20220328\venv\Scripts\python.exe D:/WorkSpace/Code_Space/Arduino_python/day20220328/demo11.py 0102030405060708090a0b0c0d0e0f b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' Process finished with exit code 0
實例代碼1:
from time import sleep import serial # 獲取充電盒軟件版本指令:EF 02 31 22 send_list = [] d1 = 0xef send_list.append(d1) d2 = 0x02 send_list.append(d2) d3 = 0x31 send_list.append(d3) d4 = 0x22 send_list.append(d4) input_s = bytes(send_list) print(input_s) serialPort = "COM28" # 串口 baudRate = 115200 # 波特率 ser = serial.Serial(serialPort, baudRate, timeout=1) print("參數設置:串口=%s ,波特率=%d" % (serialPort, baudRate)) print("====休眠5秒=======") sleep(5) # 發送指令 ser.write(input_s) sleep(1) print("發送指令后的返回結果") num = ser.inWaiting() if num > 0: data = ser.read(num) num = len(data) # hex顯示 out_s = '' for i in range(0, len(data)): out_s = out_s + '{:02X}'.format(data[i]) + ' ' print(f"返回結果為:{out_s}。") ser.close() print("end")
實例代碼2:
from time import sleep import serial # cmd_str = 'EF023223' # 獲取充電盒當前溫度 cmd_str = 'EF023122' # 獲取充電盒軟件版本 # cmd_str = 'EF023021' # 獲取充電盒硬件版本 # cmd_str = 'EF02A697' # 獲取充電盒PCBA SN號 # cmd_str = 'EF023324' # 獲取充電盒固件FW_Checksum # cmd_str = ' EF02B2A3' # 獲取充電盒機身鐳雕碼編號 input_s = bytes(bytearray.fromhex(cmd_str)) print(input_s) serialPort = "COM28" # 串口 baudRate = 115200 # 波特率 ser = serial.Serial(serialPort, baudRate, timeout=1) print("參數設置:串口=%s ,波特率=%d" % (serialPort, baudRate)) print("====休眠5秒=======") sleep(5) # 發送指令 ser.write(input_s) sleep(1) print("發送指令后的返回結果") num = ser.inWaiting() if num > 0: data = ser.read(num) num = len(data) # hex顯示 out_s = '' for i in range(0, len(data)): out_s = out_s + '{:02X}'.format(data[i]) + ' ' print(f"返回結果為:{out_s}。") print(type(out_s)) ser.close() print("end")