Отправка данных из Python через последовательный порт и чтение их в C - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь отправить число, подобное 123, из python в C через последовательный порт с uart.

Вот что и как я сейчас отправляю в Python:

import serial
serialC = serial.Serial(port="COM4", baudrate=19200, timeout=1)

x = 123
serial.write((str(x)+":")).encode())

В CI я получаю это в цикле while и помещаю его в символ.

char typeChar[20];

char receive(void)
{
    loop_until_bit_is_set(UCSR0A, RXC0);
    return UDR0;
}

void transIncoming() {
    char x;
    int i1 = 0;
    int foo;

    while ((x = receive()) != ':') {
        typeChar[i1++] = x;
    }
    typeChar[i1] = '\0';

    foo = strlen(typeChar);
    if (typeChar[foo-1] == ':'){
        typeChar[foo-1] = '\0';
    }
    int p = typeChar - '0';

    if (p == 123) {
        // Do something
    }
}

int main(void){
    while(1) {
        uart_init(); // Init the uart port.
        transIncoming();
        _delay_ms(20);
    }

    return 1;
}

Как мне это сделать, поскольку я не получаю правильный результат и не вижу, что не так?

...