Buonasera ragazzi, dopo un bel po di giorni mi sono reso conto che sbaglio qualcosa nella configurazione della porta seriale (ambiente linux) poichè il buffer che legge da seriale alcune volte arriva sporco. Posto un piccolo esempio e , successivamente, la configurazione da me utilizzata.
Esempio:
buffer1 : #.#messaggio1#!# ->buffer corretto
buffer2 : #.#messaggio2#!##.#parte del messaggio3 ->buffer sporco
buffer3 : parte del messaggio3#!# ->buffer sporco
Dove (#.#) e (#!#) sono i limitatori di inizio e fine messaggio.
I parametri che dovrei settare sono:
- baud rate = 38400
data bits = 8
parity = none
stop bits = 1
handshaking = none
Mentre la funzione che utilizzo per configurare la seriale è la seguente:
speed=B38400;
cfsetospeed (&tty, speed);
cfsetispeed (&tty, speed);
tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
tty.c_iflag &= ~IGNBRK;
tty.c_lflag = 0;
tty.c_oflag = 0;
tty.c_cc[VMIN] = 0;
tty.c_iflag &= ~(IXON | IXOFF | IXANY);
tty.c_cflag |= (CLOCAL | CREAD);
tty.c_cflag &= ~(PARENB | PARODD);
tty.c_cflag |= parity;
tty.c_cflag &= ~CSTOPB;
tty.c_cflag &= ~CRTSCTS;
Spero qualcuno possa aiutarmi perchè davvero non capisco dove ho sbagliato poichè con il programma "Terminal.exe" , settando i parametri citati in lista il buffer non è mai sporco. Spero di essere stato chiaro, buona serata a tutti.