Название: Инициализация портов Отправлено: Fjts от Июль 15, 2013, 10:50 Не нашел раздела по железу, поэтому пишу здесь. Мне необходимо инициализировать COM-порт, причем не на передачу сообщения, а чтобы просто менять уровень на пине готовности (пин DTR). Стандартно в Си это делается так:
COMport = CreateFile(portname.c_str(),GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); //инициализация порта EscapeCommFunction(COMport, SETDTR); //выставляем высокий уровень на пин DTR Ну и потом еще надо закрыть порт. Проблема в том, что в Qt так сразу не получается перенести этот код. У кого есть опыт работы с такими зверями? Название: Re: Инициализация портов Отправлено: Bepec от Июль 15, 2013, 10:56 Никто не просит вас переносить это в Qt. Делайте так, как делали. Qt - библиотека С++. А то, что вы написали, это WinApi. В чём проблема?
Название: Re: Инициализация портов Отправлено: denka от Июль 15, 2013, 19:49 QextSerialPort ?
https://code.google.com/p/qextserialport/ (https://code.google.com/p/qextserialport/) Название: Re: Инициализация портов Отправлено: kuzulis от Июль 15, 2013, 20:37 http://qt-project.org/wiki/QtSerialPort
в Qt 5.1 уже есть по дефолту. Название: Re: Инициализация портов Отправлено: Fjts от Июль 23, 2013, 15:11 Спасибо всем за ответы. На англоязычном форуме мне предложили также отказаться от WinApi и использовать встроенные средства. Даже привели готовый код:
Код: class MyClass : public QObject Проблема в том, что предложенное решение подходит для Qt 5, где (как здесь правильно написали) есть готовый сериальный модуль. Как-то можно подключить в Qt 4.8.3 нужные библиотеки? Читал, что нужно добавлять их в файл .pro, но так и не разобрался как и какая именно мне нужна библиотека. Буду рад любой помощи. Название: Re: Инициализация портов Отправлено: VPS от Июль 23, 2013, 16:06 По ссылке, которую указал kuzulis написано, как собрать и использовать QtSerialPort в qt4.
Название: Re: Инициализация портов Отправлено: kuzulis от Июль 23, 2013, 17:35 Цитата: Fjts Даже привели готовый код: ГыГы, Я его и привел :D Название: Re: Инициализация портов Отправлено: Bepec от Июль 23, 2013, 17:38 Представлю.
Fjts - это kuzulis, автор QtSerialPort. ;D kuzulis - это Fjts, один из будущих ваших поклонников :P Название: Re: Инициализация портов Отправлено: Fjts от Июль 23, 2013, 22:22 Мир тесен)
У меня почему-то даже готовый пример из wiki не компиллируется. Ошибки: qextserialenumerator.obj:-1: error: LNK2019: unresolved external symbol __imp_RegQueryValueExW referenced in function "private: static class QString __cdecl QextSerialEnumerator::getRegKeyValue(struct HKEY__ *,unsigned short const *)" (?getRegKeyValue@QextSerialEnumerator@@CA?AVQString@@PEAUHKEY__@@PEBG@Z) ..\build\qextserialportd1.dll:-1: error: LNK1120: 2 unresolved externals Название: Re: Инициализация портов Отправлено: kuzulis от Июль 24, 2013, 11:06 Цитировать У меня почему-то даже готовый пример из wiki не компиллируется. Из какой Вики? Из этой?http://qt-project.org/wiki/QtSerialPort Если да - то причем тут qextserialenumerator и прочие бяшки? Не, ты что-то не то используешь или ты п@ц какой невнимательный! :) ЗЫ: Ты хоть документацию то читал, смотрел как в QtSerialPort именуются классы и пр.? >:( Название: Re: Инициализация портов Отправлено: BuRn от Июль 26, 2013, 06:00 А что простите это мешает сделать без Qt ? Когда я писал драйвер для ккм работающим на ком, классы и объекты у меня не использовали какие - то невероятные функции для работы с железом .
|