Я отправляю байты из Raspberry PI и получаю их на свой ноутбук через порты последовательной связи, используя терминальную программу.Параметры связи следующие:
Скорость передачи: 9600, Биты данных: 8, Четность: ODD, Стоповый бит: 1, Подтверждение связи: Нет.
После отправки двух байтов {0x10, 0x05}
Я получаю на терминале (в моем ноутбуке) {0x10, 0xC1}
.Я могу получить правильные байты, только если я изменю четность на терминале на НЕТ.
Как я могу работать с моим контролем четности, установленным на ODD
?
См. Мой код ниже:
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <fcntl.h>
int main()
{
struct termios RSopt;
char str[3] = { 0x10, 0x05, 0x0};
int fd;
fd = open( "/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
tcgetattr( fd, &RSopt);
cfmakeraw( &RSopt);
cfsetspeed ( &RSopt, (speed_t)B9600);
RSopt.c_cflag &= ~CSIZE;
RSopt.c_cflag |= CS8;
RSopt.c_cflag |= PARENB;
RSopt.c_cflag |= PARODD;
RSopt.c_cflag &= ~CSTOPB;
tcflush( fd, TCIFLUSH );
tcsetattr ( fd, TCSANOW, &RSopt);
write( fd, str, 2 );
close( fd );
}