Из Raspberry Pi в серийный порт пишу строку "0123456789\r".
Кабель серийного порта подключен к компьютеру где считываю данные.
В основном посланная строка "0123456789\r" считывается правильно:
number char int
0 0 48
1 1 49
2 2 50
3 3 51
4 4 52
5 5 53
6 6 54
7 7 55
8 8 56
9 9 57
10 13
Но иногда вместо ожидаемого набора символов получаю такую последовательность:
number char int
0 ᆰ 86
1 10
2 ᄁ 94
3 j 106
4 ハ 118
5 ᄄ 88
6 8
7 * 42
8 ᅠ 96
9 ( 40
10 8
код:
struct termios PortSettings;
bool OpenPort(){
Port = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);
if(Port == -1){
printf("%s", "Error of opening port /dev/ttyUSB0");
printf("error %d opening %s: %s", errno, "", strerror (errno));
return false;
}
else{
printf("%s", "\n ttyUSB0 Opened Successfully\n");
}
tcgetattr(Port, &PortSettings);
cfsetispeed(&PortSettings,B9600);
cfsetospeed(&PortSettings,B9600);
PortSettings.c_cflag |= PARENB;
PortSettings.c_cflag &= ~CSTOPB;
PortSettings.c_cflag &= ~CSIZE;
PortSettings.c_cflag |= CS8;
PortSettings.c_cflag |= CREAD | CLOCAL;
PortSettings.c_cc[VMIN] = 0;
PortSettings.c_cc[VTIME] = 20;
PortSettings.c_iflag = 0;
PortSettings.c_oflag = 0;
PortSettings.c_lflag = 0;
tcflush(Port, TCIFLUSH);
tcsetattr(Port,TCSANOW,&PortSettings);
return true;
}
void WriteToPort(){
tcflush(Port, TCIOFLUSH);
write(Port, "0123456789\r", 11);
}
Параметры серийного порта: 9600, 8, evenparity, onestopbit
В чем может быть ошибка?
Спасибо!