Доброго времени суток!
Делаю программу для работы с устройством по СОМ-порту (отлаживаю на двух компах, соединенных нуль-модемным кабелем). По сути делаю чат
Прием с СОМ-порта должен работать постоянно, передача только по нажатию кнопки. Сделал 2 приложения - одно отсылает, другое принимает. При одновременном запуске обе прицепляются к СОМ-порту (lsof /dev/ttyS0 показывает так), что не айс и, как не трудно догадаться, обе работают коряво.
Начал решать следующим образом:
- открываю СОМ-порт в главном окошке
int fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY)
- по нажатию кнопки создаю диалоговое окошко (эдит + кнопка) для отправки сообщения;
- печатаю текст в эдите, по нажатию кнопки в диалоговом окошке отправляю
int n = write(fd, <текст>, <длина>)
- далее с грустью смотрю как на соседнем компе множество раз принимается это сообщение.
Если СОМ-порт закрывать после отправки сообщения - всё замечательно работает. Но проблема в том, что его закрывать нельзя - потеряется инфа которая приходит на комп отправителя.
Как его притормозить при отправке чтоб он отправил только 1 раз сообщение?
P.S. Пишу на Qt 4.4.3 под МСВС 3.0 (армейский линукс) - поэтому сторонние компоненты нельзя - только встроенными функциями можно.