[ O4SiS @ 04.07.2007. 23:15 ] @
Molio bih pomoć Dakle, imam problem sa half duplex komunikacijom po linuxom... Izvorni kod preuzet od nekog howto manuala Code: #include <stdio.h> #include <sys/ioctl.h> #include <fcntl.h> #include <termios.h> #include <stdlib.h> struct termios tio; int main() { int fd, status, whichBaud, result,i; long baud; char buffer[255]; varijabla[2] = "\x31\x31"; baud = B9600; fd = open(device ,O_RDWR | O_NOCTTY); if (fd <0) { printf("error"); exit(1); } tio.c_cflag = baud | CS8 | CREAD | CLOCAL; tio.c_iflag = IGNPAR; /* ignore parity errors */ tio.c_oflag = 0; /* set output flag non-canonical, no processing */ tio.c_cc[VTIME] = 18; /* no time delay */ tio.c_cc[VMIN] = 0; /* no char delay */ tcflush(fd, TCIFLUSH); /* flush the buffer */ tcsetattr(fd, TCSANOW, &tio); /* set the attributes * /* Set up for no delay, ie non-blocking reads will occur. When we read, we'll get what's in the input buffer or nothing */ fcntl(fd, F_SETFL, FNDELAY); write(fd,varijabla,2); result = read(fd,buffer,255); printf("%c\n",result); buffer[result] = 0; // zero terminate so printf works printf("%s\n",buffer); } /* close the device file */ close(fd); Ovdje kad posaljem varijablu "31 31" trebao bih dobiti odgovor od 18 bytova. Primim je i sve radi OK, ali ako ne primim 18 bytova program ceka u nedogled. Moze li se namjestit recimo, ako se ne pojavi nista na portu u 200 ms...prekini sa cekanjem tih 18 bytova nego posalji opet varijablu? |