Всем привет. Нужно написать программу для управления девайсом, подключенным к COM порту. Лучше всего работать с портом в асинхронном режиме, поэтому работу с ним советуют вынести в отдельный поток, как я и делаю. Но у меня нет опыта в написании многопоточных программ, поэтому возникли некоторые трудности.
Главный поток отвечает за GUI. Один поток отвечает за чтение порта, еще один за запись в порт- ведь чтение и запись могут происходить одновременно. Получается дескриптор порта должен быть доступен двум потокам.
Я открываю и настраиваю порт в главном потоке.
** main (**){
...
COMport = CreateFile(***);
...
}
class MyThread : public QThread
{
Q_OBJECT
protected:
void run();
};
void MyThread::run()
{
Тут все, что надо для записи в порт
}
Это информация по библиотеке QSerialDevice:
http://www.forum.crossplatform.ru/index.php?showtopic=3012&st=0&start=0
Потоки можно и не использовать, библиотеке может асинхронно сообщать тебе с помощью сигнала, что есть данные для чтения.
В QxtSerialPort 1.2 реализована асинхронная работа с портом и потоки создавать не приходится. Просто по сигналам.
Это информация по библиотеке QSerialDevice:
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)