Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Melvin77 от Март 07, 2015, 08:23



Название: QT библиотека Modbus
Отправлено: Melvin77 от Март 07, 2015, 08:23
Привет всем.
Подскажите, а есть библиотека Modbus для Qt и библиотека для работы с COM портом?
Дайте ссылочку плиз.


Название: Re: QT библиотека Modbus
Отправлено: torwig от Март 07, 2015, 11:59
Для работы с COM-портом можно использовать QSerialPort.


Название: Re: QT библиотека Modbus
Отправлено: sergek от Март 07, 2015, 12:28
Привет всем.
Подскажите, а есть библиотека Modbus для Qt?
Посмотрите эти ссылки:
http://www.freemodbus.org/ (http://www.freemodbus.org/)
http://sourceforge.net/projects/qmodbus/ (http://sourceforge.net/projects/qmodbus/)
http://sourceforge.net/projects/qtmodbustcpip/files/ (http://sourceforge.net/projects/qtmodbustcpip/files/)
http://sourceforge.net/projects/freemodbus.berlios/files/latest/download?source=files (http://sourceforge.net/projects/freemodbus.berlios/files/latest/download?source=files)
http://libmodbus.org/download/ (http://libmodbus.org/download/)
http://qtmodbustcpip.sourceforge.net/ (http://qtmodbustcpip.sourceforge.net/)
http://sourceforge.net/projects/libmodbus/ (http://sourceforge.net/projects/libmodbus/)
http://www.cyberforum.ru/asutp/thread429964.html (http://www.cyberforum.ru/asutp/thread429964.html)
http://www.owen.ru/forum/showthread.php?t=1574 (http://www.owen.ru/forum/showthread.php?t=1574)

Но когда сам искал библиотеку (мне нужен был Modbus TCP/IP), решил, что лучше и проще сделать самому. На самом деле, там все просто. К примеру, формирование фрейма modbus tcp для  функции 0x3 выглядит так:
Код:
// 3 (0x03) - чтение значений из нескольких последовательных регистров хранения
QByteArray CModbusTcp::readHoldingRegisters(int regNum, int regCount){
    registerStartNumber = regNum;
    registerCount = regCount;

    QByteArray frame;
    QDataStream out(&frame,QIODevice::WriteOnly);

    out << (quint16) transId
        << (quint16) 0
        << (quint16) 0
        << (quint8)  this->getUnitId()
        << (quint8)  ReadHoldingRegisters
        << (quint16) regAdress(registerStartNumber)
        << (quint16) registerCount;

    setLength(frame);
    return frame;
}
Ну и десяток вспомогательных функций-членов. К сожалению, проект коммерческий и полностью выложить не могу :(
И вот программка, очень полезная при отладке:
http://sourceforge.net/projects/qmodmaster/?source=recommended (http://sourceforge.net/projects/qmodmaster/?source=recommended)

Большая просьба - если что-нибудь подберете для себя, сообщите, что именно :)


Название: Re: QT библиотека Modbus
Отправлено: lit-uriy от Март 07, 2015, 12:42
В Qt5 уже встроена QSerialPort, под именем QtSerialPort, её же можно использовать и для Qt4


Название: Re: QT библиотека Modbus
Отправлено: Icarus от Июнь 11, 2017, 22:10
Подскажите QModMaster красиво написан в смысле стиля C++ и QT? Можно на него ровняться?


Название: Re: QT библиотека Modbus
Отправлено: kuzulis от Июнь 12, 2017, 00:06
Есть же QtSerialBus.


Название: Re: QT библиотека Modbus
Отправлено: Icarus от Июнь 12, 2017, 15:46
Да я знаю, там столкнулся с ошибкой (за раз не читалось больше 64 регистров), нашел в инете как ее исправить.
А с QModMaster больше разбираюсь для себя и хочу от профессионалов услышать можно что то полезное извлечь из проекта в целях обучения С++ и Qt.