2010-09-23 3 views
1

Я знаю, что этот вопрос может показаться странным из-за новых существующих альтернатив, но поверьте мне, есть причина.Использование mscomm ActiveX с Qt

Я хотел бы использовать активный элемент управления mscomm для связи через последовательный порт с Qt. Да, я знаю, что есть QextSerialPort, QSerialDevice и множество примеров того, как писать код последовательной связи. Но из-за проблем, которые у меня есть, я хотел бы протестировать mscomm.

Я знаю, что у Qt есть система для использования элементов управления ActiveX, но я не могу найти четкой информации о том, как их использовать (я не понимаю официального документа qt об этом).

Visual C++ 6 имеет mscomm.h и mscomm.cpp, которые, как я думаю, реализуют активный интерфейс x, но во всем мире много макросов mcc и зависимостей microsoft.

Любой ключ?

+0

Вы должны опубликовать ответ на вопрос, как ответ вместо того, чтобы редактировать его в свой вопрос. – murgatroid99

ответ

1

Хорошо, кажется, я достиг этого.

Вы должны использовать QAxObject для переноса activeX, который вы хотите выполнить. Для этого вам нужно знать CLSID, в моем случае:

QAxObject* activex = new QAxObject("648A5600-2C6E-101B-82B6-000000000014"); 

Тогда вам нужно использовать только dynamicCall (QString, QVariant), чтобы вызвать какие-либо из членов управления ActiveX имеет. Для того, чтобы создать список всех доступных методов использования:

QString doc = activex->generateDocumentation(); 

Это замечательно, вы получите HTML документ со всеми имеющимися членами, свойства и примеры, которые объясняют, как использовать их (Qt документации Сообщать, что вы можете использовать dumpdoc генерировать ту же информацию)

Вот пример того, как открыть порт (номер порта 4):

QAxObject* activex = new QAxObject("648A5600-2C6E-101B-82B6-000000000014"); 
    activex->dynamicCall("SetCommPort(int)", 4); 
    activex->dynamicCall("SetPortOpen(bool)", true); 

 Смежные вопросы

  • Нет связанных вопросов^_^