Micropython проблема с UART
По определенным причинам было принято решение перейти с ардуиновского С на микропитон и уперся в проблему, а именно: строка с hex которые работают в С и устройство на них отвечает:
byte Data1[] = {0x5A, 0xA5, 0x01, 0x3D, 0x22, 0x01, 0x10, 0x1E, 0x70, 0xFF};
но как бы я не пробовал отправлять ее через микропитона все четно. В качестве МК пробовал разный устройства, ESP32, ESP8266, RP.
bytes([0x5A, 0xA5, 0x01, 0x3D, 0x22, 0x01, 0x10, 0x1E, 0x70, 0xFF])
не работает
b'\x5A\xA5\x01\x3D\x22\x01\x10\x1E\x70\xFF'
не работает (в разных вариациях)
Часть кода на С:
void setup() {
load();
Serial.begin(115200,SERIAL_8N1);
Serial.setTimeout(100);
}
byte Data1[] = {0x5A, 0xA5, 0x01, 0x3D, 0x22, 0x01, 0x10, 0x1E, 0x70, 0xFF};
Serial.write(Data1, sizeof(Data1));
delay(10);
while (Serial.available() > 0) {
strData += String(Serial.read(), HEX);
delay(10);
}
Часть кода на микропитоне:
send_hex = b"5AA5013D2201101E70FF"
uart = UART(0, 115200, timeout = 100, tx=Pin(12), rx=Pin(13),invert=0)
uart.write(send_hex)
utime.sleep(0.2)
recv=bytes()
while uart.any()>0:
utime.sleep(0.2)
recv+=uart.read(1)
print (recv)
С компа, через TTL отвечает на bytes.fromhex("5A A5 01 3D 22 01 10 1E 70 FF")
но то же самое с микро не работает.
На выходе этого кода:
uart = UART(0, 115200, timeout = 5, tx=Pin(12), rx=Pin(13),invert=0)
uart.init(115200, bits=8, parity=None, stop=1)
test = b'\x5A\xA5\x01\x3D\x22\x01\x10\x1E\x70\xFF'
print(test)
print("Machine: \t" + uos.uname()[4]) # для информации о плате
print("MicroPython: \t" + uos.uname()[3]) # для информации о версии питона
print(f"TYPE - {type(test)}")
uart.write(test)
utime.sleep(0.2)
recv=bytes()
while uart.any()>0:
utime.sleep(0.2)
recv+=uart.read(1)
print (recv)
получается вот это:
b'Z\xa5\x01="\x01\x10\x1ep\xff'
Machine: Raspberry Pi Pico with RP2040
MicroPython: v1.20.0 on 2023-04-26 (GNU 12.1.0 MinSizeRel)
TYPE - <class 'bytes'>
b'\x00'
Направьте в правильное русло.
Заранее огромно спасибо.