Я использую raspberry pi 3 и этот код для отправки запроса на устройство и получения ответа от него.
#!/usr/bin/python3.7
import socket # Import socket module
import thread
import time
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
input = '5A03010d0a75'
print "Sending request... "+input
ser.write(input.decode("hex"))
print "Request sent."
output=""
while True:
output += ser.read(1)
#time.sleep(0.1)
print "Reading... "+output.encode('hex')
Он обрабатывает ответ, но отсутствуют байты, он должен получить строку длиной 56 байтов вместо 53.
Это вывод:
a5030119010000010001000a20120118180130090100020505030117501701051421000301040120010516039833630004060104c200007d
3 пропущенных байта
Последовательная конфигурация - это то, что производитель говорит в документации.
Это устройство хорошо работает с другим моим приложением, созданным в Delphi.
EXTRA
Это сравнение с моим приложением delphi и сценарием py:
Delphi app
A5030119010000010001000A20120118180130090100020505030117501701051421000301040120010516039833630004060104C200007D
Python script
a503011901000001000100 1201181801300901000205050301175017010514210003010401 010516039833630004060104c200007d