Micropython проблема с UART

Рейтинг: 0Ответов: 0Опубликовано: 20.07.2023

По определенным причинам было принято решение перейти с ардуиновского С на микропитон и уперся в проблему, а именно: строка с 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'

Направьте в правильное русло.

Заранее огромно спасибо.

Ответы

Ответов пока нет.