Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: при приеме через tty заменяется 0A на 0D0A.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Andy Sm.
На 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;
}
sasamy
Цитата(Andy Sm. @ Apr 7 2011, 19:12) *
/* Set into raw, no echo mode */


Для этого есть более прямой путь - man cfmakeraw
Andy Sm.
в общем не помогло... =(

new_port_settings.c_lflag = 0x0.
new_port_settings.c_iflag = 0x4.
new_port_settings.c_oflag = 0x0.
new_port_settings.c_cflag = 0x18b5.

это то что она ставит...
sasamy
Цитата(Andy Sm. @ Apr 7 2011, 20:46) *
в общем не помогло... =(


Вы уверены что замена на принимающей стороне происходит а не на передающей ? Можете еще зациклить чтобы сразу программа не выходила и посмотрите
stty -aF /dev/ttyXXXX
какие параметры на устройстве реально выставлены в читабельной форме
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.