Russian Qt Forum

Qt => Вопросы новичков => Тема начата: U.B.M. от Октябрь 16, 2012, 16:04



Название: Работа с СОМ-портом
Отправлено: U.B.M. от Октябрь 16, 2012, 16:04
Доброго времени суток!

Делаю программу для работы с устройством по СОМ-порту (отлаживаю на двух компах, соединенных нуль-модемным кабелем). По сути делаю чат ;D

Прием с СОМ-порта должен работать постоянно, передача только по нажатию кнопки. Сделал 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 (армейский линукс) - поэтому сторонние компоненты нельзя - только встроенными функциями можно.


Название: Re: Работа с СОМ-портом
Отправлено: kuzulis от Октябрь 16, 2012, 16:16
Что-то сегодня прям аврал по ком-портам :)

Цитировать
P.S. Пишу на Qt 4.4.3 под МСВС 3.0 (армейский линукс) - поэтому сторонние компоненты нельзя - только встроенными функциями можно.

Возьми это  (http://qt-project.org/wiki/QtSerialPort_Russian)  переделай под свою задачу.
Исходники то открыты. Делов то на день два максимум, если не спеша.

ЗЫ: За "безопасность" страны я спокоен пока такие люди пишут на МСВС. :)
ЗЫЗЫ: А вообще гуголь в помощь.




Название: Re: Работа с СОМ-портом
Отправлено: U.B.M. от Октябрь 16, 2012, 16:22
Я за Qt сел 2 дня назад  :-\ Но в любом случае спасибо за ответ. Попробую