На 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;
}