На i.mx233 такая фигня происходит. Понятно что что то не настроено в termios. Крутил разные битики но без особого успеха. =(
Может кто сталкивался?
собственно, задача raw поток принимать и передавать.
код ниже...
int m_setparms(int fd, int baud) { int spd = 0; int error; struct termios tty;
error = tcgetattr(fd, &tty); if (error == -1) { return error; } switch (baud) { case 0: spd = B0; break; case 300: spd = B300; break; case 600: spd = B600; break; case 1200: spd = B1200; break; case 2400: spd = B2400; break; case 4800: spd = B4800; break; case 9600: spd = B9600; break; case 19200: spd = B19200; break; case 38400: spd = B38400; break; case 57600: spd = B57600; break; case 115200: spd = B115200; break; case 230400: spd = B230400; break; case 460800: spd = B460800; break; case 500000: spd = B500000; break; case 576000: spd = B576000; break; case 921600: spd = B921600; break; case 1000000: spd = B1000000; break; case 1152000: spd = B1152000; break; case 1500000: spd = B1500000; break; case 2000000: spd = B2000000; break; case 2500000: spd = B2500000; break; case 3000000: spd = B3000000; break; case 3500000: spd = B3500000; break; case 4000000: spd = B4000000; break; }
if (spd != -1) { cfsetospeed(&tty, (speed_t)spd); cfsetispeed(&tty, (speed_t)spd); }
tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8;
/* Set into raw, no echo mode */ tty.c_iflag = IGNBRK; tty.c_lflag = 0; tty.c_oflag = 0; tty.c_cflag |= CLOCAL | CREAD; tty.c_cc[VMIN] = 0; tty.c_cc[VTIME] = 0;
tty.c_iflag &= ~(IXON|IXOFF|IXANY);
tty.c_cflag &= ~(PARENB | PARODD); tty.c_cflag &= ~CSTOPB;
error = tcsetattr(fd, TCSANOW, &tty);
return error; }
Сообщение отредактировал Andy Sm. - Apr 7 2011, 16:23
|