Я пытаюсь отправить число, подобное 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;
}
Как мне это сделать, поскольку я не получаю правильный результат и не вижу, что не так?