Всем доброго времени суток.
Есть девайс на arm, под который я пишу приложение на Qt. Разрабатываю и тестирую сначала на хосте, потом кросс-компилирую и заливаю на плату. Пока писал гуй, все прекрасно работало.
Сейчас возникла необходимость реализовать работу с com-портом. Сначала для этих целей взял QextSerialPort. На компе все завелось и общение через com-порт (с помощью конвертера usb-rs232) идет нормально. Попробовал кросс-компилировать на плату - ничего не работает.
Стал грешить на то, что криво собрал QextSerialPort. Попробовал использовать вместо него обычные системные вызовы linux. Резальтат тот-же. На компе через конвертер все работает, а после того, как кросс-компилирую для платы - нет.
Более того, на проблемы с компилятором это также не похоже, т.к. если написать чистый сишный код работы с com-портом и откомпилировать его из консоли (arm-linux-gnueabi-gcc file.c -o file...), то все работает...
Инициализирую порт так:
int comInit (const char *name) {
int baud;
struct termios opt;
int fd = open (name, O_RDWR | O_NOCTTY);
if (fd < 0) {
perror ("open");
return fd;
}
fsync (fd);
tcflush (fd, TCIOFLUSH);
bzero (&opt, sizeof (opt));
opt.c_cflag |= (CREAD | CLOCAL);
opt.c_cflag &= ~PARENB;
opt.c_cflag &= ~CSTOPB;
opt.c_cflag &= ~CSIZE;
opt.c_cflag |= CS8;
opt.c_cflag &= ~CBAUD;
opt.c_cflag |= B115200;
opt.c_cc[VMIN] = 0;
opt.c_cc[VTIME] = 0;
baud = B115200;
cfsetispeed (&opt, baud);
cfsetospeed (&opt, baud);
tcsetattr (fd, TCSANOW, &opt);
return fd;
}
Как уже говорил, если просто скомпилировать это как сишный файлик, то все работает. Если же подсунуть этот кусок в проект на Qt, то попытки передачи данных в порт ведутся (если верить логам), но ответ мне так и не прочитать.
Возможно, кто-нибудь сталкивался с подобной проблемой. Буду признателен за любые конструктивные идеи.
upd: Если набросать простую тестовую программку на Си, которая бы открывала порт, писала туда что-то и считывала ответ, то тоже ничего не работает. Но полноценный проект, написанный на Си и собранный тем же компилятором, успешно использует com-порт. Код инициализации порта выдран как-раз из этого проекта...