Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QtSerialPort
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Страницы: 1, 2, 3
lkslks
При сборке получаю такое сообщение:
....
g++ -Wl,-s -o release\libSerialPort.a release/serialport.o release/serialportinfo.o release/serialport_win.o release/serialportinfo_win.o
-L".\lib" -L"c:\Qt\4.8.3\lib" -lsetupapi -ladvapi32 -lQtCore4
c:/qt/qtcreator-2.5.2/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16' collect2: ld returned 1 exit status
-------------------
Qt 4.8.3
MinGW 4.4.0
Кто может прояснить ситуацию ?
kuzulis
Все отлично собирается. Смотри проблему у себя со своей Qt и MinGw.
iReset
Добавь в .pro-файл строки
TEMPLATE = lib
CONFIG += staticlib


Виноват, ерунду написал.
RazrFalcon
Аналогичная проблема.

Лог сборки:
Раскрывающийся текст
15:19:50: Выполняется сборка проекта serialport...
15:19:51: Запускается: «c:\qtsdk\desktop\qt\4.8.1\mingw\bin\qmake.exe» C:\Users\razr\Desktop\qserialdevice-qserialdevice\serialport.pro -r -spec win32-g++ "CONFIG+=release"
Reading C:/Users/razr/Desktop/qserialdevice-qserialdevice/src/src.pro [C:/Users/razr/Desktop/serialport-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_______/src]
15:19:52: Процесс «c:\qtsdk\desktop\qt\4.8.1\mingw\bin\qmake.exe» завершился нормально.
15:19:52: Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe»
cd src\ && C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile
mingw32-make.exe[1]: Entering directory `C:/Users/razr/Desktop/serialport-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_______/src'
C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Release
mingw32-make.exe[2]: Entering directory `C:/Users/razr/Desktop/serialport-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_______/src'
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DSERIALPORT_BUILD -DSERIALPORT_SHARED -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include" -I"..\..\qserialdevice-qserialdevice\include" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"release" -I"..\..\qserialdevice-qserialdevice\src" -I"." -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o release\serialport.o ..\..\qserialdevice-qserialdevice\src\serialport.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DSERIALPORT_BUILD -DSERIALPORT_SHARED -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include" -I"..\..\qserialdevice-qserialdevice\include" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"release" -I"..\..\qserialdevice-qserialdevice\src" -I"." -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o release\serialportinfo.o ..\..\qserialdevice-qserialdevice\src\serialportinfo.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DSERIALPORT_BUILD -DSERIALPORT_SHARED -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include" -I"..\..\qserialdevice-qserialdevice\include" -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"release" -I"..\..\qserialdevice-qserialdevice\src" -I"." -I"c:\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o release\serialportengine_p_win.o ..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp
In file included from ..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:45:
..\..\qserialdevice-qserialdevice\src\/serialportengine_p_win.h:17:50: error: QtCore/private/qwineventnotifier_p.h: No such file or directory
In file included from ..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:45:
..\..\qserialdevice-qserialdevice\src\/serialportengine_p_win.h:65: error: expected class-name before ',' token
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In destructor 'virtual WinSerialPortEngine::~WinSerialPortEngine()':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:140: error: 'setEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In member function 'virtual bool WinSerialPortEngine::isReadNotificationEnabled() const':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:879: error: 'isEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In member function 'virtual bool WinSerialPortEngine::isWriteNotificationEnabled() const':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:925: error: 'isEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In member function 'virtual bool WinSerialPortEngine::event(QEvent*)':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1175: error: 'QWinEventNotifier' has not been declared
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In member function 'bool WinSerialPortEngine::createEvents(bool, bool)':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1210: error: 'setHandle' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp: In member function 'void WinSerialPortEngine::setMaskAndActivateEvent()':
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1246: error: 'isEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1247: error: 'setEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1250: error: 'isEnabled' was not declared in this scope
..\..\qserialdevice-qserialdevice\src\serialportengine_p_win.cpp:1251: error: 'setEnabled' was not declared in this scope
mingw32-make.exe[2]: Leaving directory `C:/Users/razr/Desktop/serialport-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_______/src'
mingw32-make.exe[1]: Leaving directory `C:/Users/razr/Desktop/serialport-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_______/src'
mingw32-make.exe[2]: *** [release/serialportengine_p_win.o] Error 1
mingw32-make.exe[1]: *** [release] Error 2
mingw32-make.exe: *** [sub-src-make_default] Error 2
15:20:03: Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта serialport (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»
kuzulis
Цитата
Аналогичная проблема.


Во 1: Это не QtSerialPort а QSerialDevice.
Во 2: Не аналогичная проблема:
Цитата
..\..\qserialdevice-qserialdevice\src\/serialportengine_p_win.h:17:50: error: QtCore/private/qwineventnotifier_p.h: No such file or directory

Эта проблема уже стопитсотраз обсуждалась: нжно взять qwineventnotifier_p.h из сорцов Qt.
Гугл в помощь.
В 3: QSerialDevice больше не поддерживается, поэтому исправляйте баги сами.
RazrFalcon
Так кого лучше использовать?
QtSerialPort или QSerialDevice?
kuzulis
Цитата
QtSerialPort или QSerialDevice?

Почитай тут и тут
lkslks
QSerialDevice уже не поддерживается, вместо него QtSerialPort.
Подробности и исходники здесь: http://qt-project.org/wiki/QtSerialPort
Вот рекомендуемый процесс сборки с этого сайта:

для Qt4:

mkdir serialport-build-release
cd serialport-build-release
qmake ../serialport-src/serialport.pro CONFIG+=release
make (or nmake)
cd ..
mkdir serialport-build-debug
cd serialport-build-debug
qmake ../serialport-src/serialport.pro //or can add CONFIG+=debug
make (or nmake)
cd ..

cd serialport-build-release // install release build
make install (or nmake install)
cd ..
cd serialport-build-debug // install debug build
make install (or nmake install)

При выполнении nmake появлялась ошибка с отсутствием WinMain@16, описанная в начале темы.
После изменения строки qmake ........... на
qmake ../serialport-src/serialport.pro CONFIG+=release CONFIG+=DLL ошибка исчезла.
Правда, осталась проблемка с отсутствием одного файла при компиляции примера Terminal, с этим разберусь чуть позже.
Да, библиотека собралась и нормально вызывается.
Буду тестировать дальше.
RazrFalcon
Почитал. Понял.
lkslks
1. Проект QtSeriallPort скомпилировался после добавления CONFIG += DLL. Подозреваю, что виноваты настройки версии Qt4.8.3 (у меня).

2. Не скомпилировался пример Terminal. Выяснил, что причина в том, что не собирается файл ресурсов из terminal.qrc в файл qrc_terminal.cpp.
Пробовал подключать ресурсы в QtCreator 2.5.2. Не получается, тот же результат, даже с тестовым проектом. Решил, что у меня QtCreator неверно настроен.
Создал файл вручную командой "rcc -o qrc_terminal.cpp terminal.qrc" и подсунул куда надо, пример скомпилировался и заработал.

Есть ли у кого какие идеи по неработающим ресурсам ? Подозреваю настройки Qt4.8.3, но опыта не хватает найти причину.

PS: Ресурсы, конечно не главное в данном проекте.
kuzulis
@lkslks

Qt4.8.3 сам собирал или качал готовые бинарики под MinGW 4.4 отсюда?
lkslks
Цитата(kuzulis @ 19.10.2012, 12:59) *
@lkslks

Qt4.8.3 сам собирал или качал готовые бинарики под MinGW 4.4 отсюда?


Да, качал готовые.
lkslks
У кого есть идеи по неработающим ресурсам в Qt Creator 2.5.2 и Qt4.8.3 ?
Просто в проекте создаю ресурс с картинкой и программа не компилируется.
Может работа rcc.exe где-то не прописана ?
Гость
Цитата(lkslks @ 20.10.2012, 6:39) *
У кого есть идеи по неработающим ресурсам в Qt Creator 2.5.2 и Qt4.8.3 ?
Просто в проекте создаю ресурс с картинкой и программа не компилируется.
Может работа rcc.exe где-то не прописана ?

Цитата(lkslks @ 20.10.2012, 6:39) *
У кого есть идеи по неработающим ресурсам в Qt Creator 2.5.2 и Qt4.8.3 ?
Просто в проекте создаю ресурс с картинкой и программа не компилируется.
Может работа rcc.exe где-то не прописана ?


это бага 4.8.3
нужно добавить в pro-файл строчку
QMAKE_RCC = $$[QT_INSTALL_BINS]/rcc.exe
lkslks
Да, решение верное, проверил, работает.
Но в моём случае всё оказалось проще.
Нужно в системной переменной PATH или в настройках проекта прописать путь c:\Qt\4.8.3.
Именно к верхнему уровню, а не только к папке bin. Потому что Qt пытается запустить RCC.EXE из подкаталога bin.
Это прописано в файлах Makefile/Debug и Makefile/Release, которые создаются при открытии проекта в QtCreator.
В файле c:\Qt\4.8.3\configure.exe нашёл следующее QMAKE_RCC = $$QT_BUILD_TREE...bin/rcc.exe.
А сюда это попало, возможно, из файла c:\Qt\4.8.3\configure (QT_INSTALL_BINS="$QT_INSTALL_PREFIX/bin"),
и, возможно, при установке. В общем, можно, конечно, и дальше копать, но решение найдено, смысл понятен.
Удачи всем, спасибо за помощь.
asket
kuzulis, У меня к Вам вот такой вопрос, я использую в своем проекте библиотеку QtSerialPort под Windows, все работает и все замечательно, если бы не одно НО. Оно заключается в следующем, при первом запуске своего приложения, функция open открывает порт, однако поступаемые данные почему-то Ваша библиотека не видит (используется write и waitForReadyRed(), read), чтобы привести в нормальное состояние, мне приходится принудительно закрывать порт с помошью close, запускать любую терминалку (terraterm или hyperterminal), а после можно будет открывать порт и работать. Хотелось бы понять как решить эту проблему? QtLib 4.8, QtSDK 1.2, кстати со старой библиотекой QserialDevice аналогичных проблем не было.
lkslks
Рекомендую посмотреть пример Terminal в исходниках QtSerialPort.
Алексей1153
asket, сильно смахивает на то, что ты не задаёшь какие-то настройки порта. Толт же терминал их задаёт, поэтому после него у тебя волшебным образом начинает всё работать )
asket
Алексей1153, в том то и дело что порт настроен соответствующим образом, скопировал кусок кода из примера terminal,
какие еще настройки влияют на работу приложения?

    if (m_Port->isOpen())
        m_Port->close();

    sleep(1);

    m_Port->setDataBits(SerialPort::Data8);
    m_Port->setRate(SerialPort::Rate115200);
    m_Port->setParity(SerialPort::NoParity);
    m_Port->setStopBits(SerialPort::OneStop);
    m_Port->setFlowControl(SerialPort::NoFlowControl);
    
    if (!m_Port->open(QIODevice::ReadWrite)){
        return ErrPortNotOpen;
    }
Алексей1153
там ещё по меньшей мере 5 таймаутов точно нужно настроить. Описание параметров можно найти, к примеру, здесь


http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa...0(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa...0(v=vs.85).aspx
kuzulis
Цитата(asket @ 15.1.2013, 14:53) *
Алексей1153, в том то и дело что порт настроен соответствующим образом, скопировал кусок кода из примера terminal,
какие еще настройки влияют на работу приложения?


Да неужели правильно скопировал?

Цитата(asket @ 15.1.2013, 14:53) *
    if (m_Port->isOpen())
        m_Port->close();

    sleep(1);

    m_Port->setDataBits(SerialPort::Data8);
    m_Port->setRate(SerialPort::Rate115200);
    m_Port->setParity(SerialPort::NoParity);
    m_Port->setStopBits(SerialPort::OneStop);
    m_Port->setFlowControl(SerialPort::NoFlowControl);
    
    if (!m_Port->open(QIODevice::ReadWrite)){
        return ErrPortNotOpen;
    }


Едрить-колотить! Да сколько же можно? Доколе все ВЫ будете повторять эти ошибки?
Ты делаешь все неправильно! Читай документацию!
Или, для начала, хотя-бы проверяй возвращаемые значения методов setXXX()!

PS: Блин, задолбали с такими вопросами
Litkevich Yuriy
Цитата(kuzulis @ 15.1.2013, 22:28) *
Едрить-колотить! Да сколько же можно? Доколе все ВЫ будете повторять эти ошибки?Ты делаешь все неправильно! Читай документацию! Или, для начала, хотя-бы проверяй возвращаемые значения методов setXXX()!PS: Блин, задолбали с такими вопросами
Денис, а это всё от неестественности, я тебе ещё на прогорге про это говрил.
Гораздо естественнее: создать объект, настроить, а потом использовать. Поэтому люди так и делают.
NAUGREEM
Здравствуйте!
Проблема тоже в винде (в линуксе всё работает)...
порт открываю так:
    SerialPort dev;
    dev.setPort(QString(port));
    bool res = dev.open(QIODevice::ReadWrite);
    if (!res)
    {
        return false;
    }
    if (res) res = dev.setRate(SerialPort::Rate9600);
    if (res) res = dev.setDataBits(SerialPort::Data8);
    if (res) res = dev.setParity(SerialPort::NoParity);
    if (res) res = dev.setStopBits(SerialPort::OneStop);
    if (res) res = dev.setFlowControl(SerialPort::NoFlowControl);
    if (!res)
    {
        dev.close();
        return false;
    }


далее пишу в порт строку байтов 'write()', а из порта 'read()' приходит в бесконечном цикле первый байт строки...
winXP|win7|win8 - одна беда((
на старой версии QtSerialPort такой проблемы в винде небыло
kuzulis
Цитата(NAUGREEM @ 16.1.2013, 18:26) *
далее пишу в порт строку байтов 'write()', а из порта 'read()' приходит в бесконечном цикле первый байт строки...
winXP|win7|win8 - одна беда((
на старой версии QtSerialPort такой проблемы в винде небыло


Ну чтож, приведи минимальный компилябельный пример, который воспроизводит проблему.
Из приведенного тобой описания ничего не понятно.
NAUGREEM
вот простой пример:

#include <QCoreApplication>
#include <QtAddOnSerialPort/serialport.h>

QT_USE_NAMESPACE_SERIALPORT

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    if (argc != 2) return -1;
    qDebug("port: %s", argv[1]);

    QByteArray id;
    SerialPort dev;
    dev.setPort(QString(argv[1]));
    bool res = dev.open(QIODevice::ReadWrite);
    if (!res)
    {
        return -1;
    }
    if (res) res = dev.setRate(SerialPort::Rate9600);
    if (res) res = dev.setDataBits(SerialPort::Data8);
    if (res) res = dev.setParity(SerialPort::NoParity);
    if (res) res = dev.setStopBits(SerialPort::OneStop);
    if (res) res = dev.setFlowControl(SerialPort::NoFlowControl);
    if (!res)
    {
        dev.close();
        return -1;
    }
    dev.write(QByteArray(2, 0x90));
    dev.write(QByteArray(1, 0x26));
    for (int i = 0; i < 100; i++)
    {
        if (dev.bytesAvailable() > 0)
        {
            id.append(dev.read(1));
            qDebug("Read IDa: %x", (uchar)id.right(1).data()[0]);
        }
        else
        {
            if (dev.waitForReadyRead(100))
            {
                id.append(dev.read(1));
                qDebug("Read IDw: %x", (uchar)id.right(1).data()[0]);
            }
            else break;
        }
        if (id[id.length() - 1] == (char)0) break;
    }
    dev.close();


    return a.exec();
}


запущен на winXP SP3, qt-4.8.4, MinGW-w64 - for 32 bit Windows (gcc-4.7.1)
kuzulis
Цитата(NAUGREEM @ 16.1.2013, 20:15) *
вот простой пример:
...
...
...
запущен на winXP SP3, qt-4.8.4, MinGW-w64 - for 32 bit Windows (gcc-4.7.1)


И опять же, ты тоже неправильно используешь библиотеку.

В твоем случае см. в сторону примера BlockingMaster и внимательно читай комментарии в нем (точнее в qtserialport\doc\src\examples\).
NAUGREEM
Экспериментируя с кодом заметил забавную вещь:

если строку
if (dev.bytesAvailable() > 0)

заменить на
if (dev.bytesAvailable() - 512 > 0)

то всё отлично работает

отсюда вопрос: почему в виндовсе при пустом буфере чтения функция bytesAvailable() возвращает 512?
kuzulis
Цитата(NAUGREEM @ 17.1.2013, 14:22) *
отсюда вопрос: почему в виндовсе при пустом буфере чтения функция bytesAvailable() возвращает 512?


Не знаю, не может такого быть.

Слинкуй статически исходники библиотеки с твоим приложением через "serialport-lib.pri" и пробегись дебаггером.
NAUGREEM
что-то не собирается((

Раскрывающийся текст

g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../Qt/4.8.4/include/QtCore' -I'../../Qt/4.8.4/include' -I'../qtserialport/src/serialport' -I'../../Qt/4.8.4/inc
../qtserialport/src/serialport/serialport.cpp:382:1: warning: 'QtAddOn::SerialPort::SerialPort::SerialPort(QObject*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:393:1: warning: 'QtAddOn::SerialPort::SerialPort::SerialPort(const QString&, QObject*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:405:1: warning: 'QtAddOn::SerialPort::SerialPort::SerialPort(const QtAddOn::SerialPort::SerialPortInfo&, QObject*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:415:1: warning: 'virtual QtAddOn::SerialPort::SerialPort::~SerialPort()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:430:6: warning: 'void QtAddOn::SerialPort::SerialPort::setPort(const QString&)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
../qtserialport/src/serialport/serialport.cpp:441:6: warning: 'void QtAddOn::SerialPort::SerialPort::setPort(const QtAddOn::SerialPort::SerialPortInfo&)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
../qtserialport/src/serialport/serialport.cpp:483:9: warning: 'QString QtAddOn::SerialPort::SerialPort::portName() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:500:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::open(QIODevice::OpenMode)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:530:6: warning: 'virtual void QtAddOn::SerialPort::SerialPort::close()' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
../qtserialport/src/serialport/serialport.cpp:553:6: warning: 'void QtAddOn::SerialPort::SerialPort::setRestoreSettingsOnClose(bool)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:568:6: warning: 'bool QtAddOn::SerialPort::SerialPort::restoreSettingsOnClose() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:599:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setRate(qint32, QtAddOn::SerialPort::SerialPort::Directions)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:613:8: warning: 'qint32 QtAddOn::SerialPort::SerialPort::rate(QtAddOn::SerialPort::SerialPort::Direction
s) const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:638:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setDataBits(QtAddOn::SerialPort::SerialPort::Da
taBits)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:649:22: warning: 'QtAddOn::SerialPort::SerialPort::DataBits QtAddOn::SerialPort::SerialPort::dataBits() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:672:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setParity(QtAddOn::SerialPort::SerialPort::Pari
ty)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:683:20: warning: 'QtAddOn::SerialPort::SerialPort::Parity QtAddOn::SerialPort::SerialPort::parity() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:705:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setStopBits(QtAddOn::SerialPort::SerialPort::St
opBits)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:716:22: warning: 'QtAddOn::SerialPort::SerialPort::StopBits QtAddOn::SerialPort::SerialPort::stopBits() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:738:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setFlowControl(QtAddOn::SerialPort::SerialPort:
:FlowControl)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:749:25: warning: 'QtAddOn::SerialPort::SerialPort::FlowControl QtAddOn::SerialPort::SerialPort::flowControl() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:773:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setDtr(bool)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:784:6: warning: 'bool QtAddOn::SerialPort::SerialPort::dtr() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:809:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setRts(bool)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:820:6: warning: 'bool QtAddOn::SerialPort::SerialPort::rts() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:844:19: warning: 'QtAddOn::SerialPort::SerialPort::Lines QtAddOn::SerialPort::SerialPort::lines() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:864:6: warning: 'bool QtAddOn::SerialPort::SerialPort::flush()' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:876:6: warning: 'bool QtAddOn::SerialPort::SerialPort::clear(QtAddOn::SerialPort::SerialPort::Directio
ns)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:907:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::atEnd() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:921:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setDataErrorPolicy(QtAddOn::SerialPort::SerialP
ort::DataErrorPolicy)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:934:29: warning: 'QtAddOn::SerialPort::SerialPort::DataErrorPolicy QtAddOn::SerialPort::SerialPort::dataErrorPolicy() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:962:23: warning: 'QtAddOn::SerialPort::SerialPort::PortError QtAddOn::SerialPort::SerialPort::error() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:968:6: warning: 'void QtAddOn::SerialPort::SerialPort::clearError()' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
../qtserialport/src/serialport/serialport.cpp:993:8: warning: 'qint64 QtAddOn::SerialPort::SerialPort::readBufferSize() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1015:6: warning: 'void QtAddOn::SerialPort::SerialPort::setReadBufferSize(qint64)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1027:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::isSequential() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1037:8: warning: 'virtual qint64 QtAddOn::SerialPort::SerialPort::bytesAvailable() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1050:8: warning: 'virtual qint64 QtAddOn::SerialPort::SerialPort::bytesToWrite() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1062:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::canReadLine() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1080:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::waitForReadyRead(int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1088:6: warning: 'virtual bool QtAddOn::SerialPort::SerialPort::waitForBytesWritten(int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1107:6: warning: 'bool QtAddOn::SerialPort::SerialPort::sendBreak(int)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1121:6: warning: 'bool QtAddOn::SerialPort::SerialPort::setBreak(bool)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
../qtserialport/src/serialport/serialport.cpp:1129:8: warning: 'virtual qint64 QtAddOn::SerialPort::SerialPort::readData(char*, qint64)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1137:8: warning: 'virtual qint64 QtAddOn::SerialPort::SerialPort::readLineData(char*, qint64)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
../qtserialport/src/serialport/serialport.cpp:1144:8: warning: 'virtual qint64 QtAddOn::SerialPort::SerialPort::writeData(const char*, qint64)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
In file included from ../qtserialport/src/serialport/serialport.cpp:1161:0:.
debug/moc_serialport.cpp:191:6: warning: 'static void QtAddOn::SerialPort::SerialPort::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
debug/moc_serialport.cpp:228:40: warning: 'QtAddOn::SerialPort::SerialPort::staticMetaObjectExtraData' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
debug/moc_serialport.cpp:232:31: warning: 'QtAddOn::SerialPort::SerialPort::staticMetaObject' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:241:20: warning: 'virtual const QMetaObject* QtAddOn::SerialPort::SerialPort::metaObject() const' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
debug/moc_serialport.cpp:246:7: warning: 'virtual void* QtAddOn::SerialPort::SerialPort::qt_metacast(const char*)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
debug/moc_serialport.cpp:254:5: warning: 'virtual int QtAddOn::SerialPort::SerialPort::qt_metacall(QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes].
debug/moc_serialport.cpp:315:6: warning: 'void QtAddOn::SerialPort::SerialPort::rateChanged(qint32, QtAddOn::SerialPort::SerialPort::Directions)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
In file included from ../qtserialport/src/serialport/serialport.cpp:1161:0:.
debug/moc_serialport.cpp:322:6: warning: 'void QtAddOn::SerialPort::SerialPort::dataBitsChanged(QtAddOn::SerialPort::SerialPort
::DataBits)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:329:6: warning: 'void QtAddOn::SerialPort::SerialPort::parityChanged(QtAddOn::SerialPort::SerialPort::
Parity)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:336:6: warning: 'void QtAddOn::SerialPort::SerialPort::stopBitsChanged(QtAddOn::SerialPort::SerialPort
::StopBits)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:343:6: warning: 'void QtAddOn::SerialPort::SerialPort::flowControlChanged(QtAddOn::SerialPort::SerialP
ort::FlowControl)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:350:6: warning: 'void QtAddOn::SerialPort::SerialPort::dataErrorPolicyChanged(QtAddOn::SerialPort::Ser
ialPort::DataErrorPolicy)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:357:6: warning: 'void QtAddOn::SerialPort::SerialPort::dtrChanged(bool)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:364:6: warning: 'void QtAddOn::SerialPort::SerialPort::rtsChanged(bool)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:371:6: warning: 'void QtAddOn::SerialPort::SerialPort::errorChanged(QtAddOn::SerialPort::SerialPort::P
ortError)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
debug/moc_serialport.cpp:378:6: warning: 'void QtAddOn::SerialPort::SerialPort::restoreSettingsOnCloseChanged(bool)' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default].
In file included from ../qtserialport/src/serialport/serialport.cpp:1161:0:.
debug/moc_serialport.cpp:228:28: error: definition of static data member 'QtAddOn::SerialPort::SerialPort::staticMetaObjectExtraData' of dllimport'd class.
mingw32-make[1]: Leaving directory `C:/projects/TestSerialPort-build-Debug'.
mingw32-make[1]: *** [debug/serialport.o] Error 1.
mingw32-make: *** [debug] Error 2


.pro
QT       += core
QT       -= gui
include(../qtserialport/src/serialport/serialport-lib.pri)
TARGET = TestSerialPort
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
kuzulis
Там в "serialport-global.h" надо закомментировать Q_DECL_XXX дефайны:
#if defined(QT_SERIALPORT_LIB)
#  define Q_SERIALPORT_EXPORT //Q_DECL_EXPORT
#else
#  define Q_SERIALPORT_EXPORT //Q_DECL_IMPORT
#endif
NAUGREEM
спасибо, собрал...

заметил такой момент:
в unix варианте после чтения из порта есть такая строка:
readBuffer.chop(bytesToRead - qMax(readBytes, qint64(0)));

в win варианте ничего похожего нету...
в связи с этим рамер буфера чтения (который выводится командой bytesAvailable(), про которую я ранее писал) так и остаётся 512 - то есть той величины, на которую он быз зарезервирован перед чтением...

складывается впечатление, что кто-то что-то для венды недоделал, или я взял исходник не и того места...
kuzulis
Цитата(NAUGREEM @ 18.1.2013, 12:49) *
складывается впечатление, что кто-то что-то для венды недоделал, или я взял исходник не и того места...


Да, есть касячок в реализации bytesAvailable() для винды.
Нужно чтобы он возвращал не размер буфера, а переменную actualReadBufferSize.
kuzulis
Вроде исправил, обновись.
NAUGREEM
Цитата(kuzulis @ 19.1.2013, 21:46) *
Вроде исправил, обновись.


обновил - заработало...
спасибо за оперативность)

но нашёл ещё глюк:
результат функции bytesAvailable() перед функцией clear() и после неё абсолютно одинаковый, хотя буфер чтения вроде должен обнулиться...
kuzulis
обновись еще раз, сегодня был коммит на исправление clear():

https://codereview.qt-project.org/#change,45274
NAUGREEM
Доброго всем!

Заметил такую штуку:

когда
dev.write(wbuf);
dev.waitForBytesWritten(100);

то
dev.waitForReadyRead(100); == тру
dev.bytesAvailable(); > 0


а когда
dev.write(wbuf);
dev.waitForBytesWritten(100);
msleep(50);

то
dev.waitForReadyRead(100); == фолс
dev.bytesAvailable(); == 0


qt4.8.4 Linux
всё делается в отдельном потоке...

вопрос: куда деваются прочитанные данные во время сна?
NAUGREEM
Хотя возможно у меня был глюк - после переподключения девайса больше такого не замечал...
NAUGREEM
Доброго всем!
Заметил недавно проблему - на USB-UART Com порте связь без проблем, а на Bluetooth Com порте порт отрывается не всегда, и в ErrorString пишет "отказано в доступе"...
Пробовал терминалкой - никаких проблем... открывает порт всегда с первого раза и не теряет связь, а если с помошью QtSerialPort - то через некоторое время (в пределах минуты) оказывается, что открытый порт уже свободен...
Кто-нибудь сталкивался с такой проблемой?
Может с блютузом надо как-то по особенному работать?

библиотеку брал из Git 10-го марта...
Qt 4.8.4, mingw32 (gcc-4.7)
Алексей1153
NAUGREEM, может, его периодически надо дрюкать - к примеру раз в полминуты, если не было активности, принудительно пишем или читаем 0 байтов



NAUGREEM
Цитата(Алексей1153 @ 14.3.2013, 8:16) *
NAUGREEM, может, его периодически надо дрюкать - к примеру раз в полминуты, если не было активности, принудительно пишем или читаем 0 байтов


Интересно - создатели терминалки так же делали?
kuzulis
NAUGREEM,

А ты установи сниффер (например Free Serial Port Monitor) и проверь.
Алексей1153
Цитата(NAUGREEM @ 14.3.2013, 15:28) *
Интересно - создатели терминалки так же делали?


а про какую именно речь ?

я думаю, там сделана вычитка порта, так что они всё равно его как-то дрюкают ) В чём-то разница между работой терминала и твоей программы должна быть
NAUGREEM
Цитата(kuzulis @ 14.3.2013, 14:31) *
NAUGREEM,

А ты установи сниффер (например Free Serial Port Monitor) и проверь.


посмотрел:
в терминалке:
Порт открыт процессом "tcomu12.exe" (PID: 2540)
Запрос:15.03.2013 9:27:31.20364
FF FF FF                                          ÿÿÿ
Ответ:15.03.2013 9:27:39.25064 (+0.0469 seconds)
FF FF FF                                          ÿÿÿ
Порт закрыт

у меня:
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт закрыт
Порт открыт процессом "cms.exe" (PID: 2416)
Порт открыт процессом "cms.exe" (PID: 2416)
Запрос:15.03.2013 8:14:15.32764
FF                                                ÿ
Порт открыт процессом "cms.exe" (PID: 2416)
Порт открыт процессом "cms.exe" (PID: 2416)
FF FF                                             ÿÿ
Ответ:15.03.2013 8:14:16.74964 (+0.0156 seconds)
FF FF FF                                          ÿÿÿ
Запрос:15.03.2013 8:14:16.87464 (+0.1094 seconds)
.....

во первых - порт открылся только с 7-го раза, до этого возвращал ошибку 2 (отказано в доступе)
во вторых - во время дальнейшей работы почему-то постоянно открывался (в программе команды на открытие у меня в это время небыло...)
kuzulis
Мож у тебя вирус какой или троян? :)
Чудес не бывает (с).

Цитата
Порт открыт процессом "cms.exe"


Это чей процесс?
NAUGREEM
Цитата(kuzulis @ 15.3.2013, 13:45) *
Мож у тебя вирус какой или троян? :)
Чудес не бывает (с).

голая винда в виртуалке - везде с этого диска ставил и антивирусы ниразу не ругались...

Цитата
Цитата
Порт открыт процессом "cms.exe"


Это чей процесс?


это моя прога с этой либой)

на разных компах с блютузом такая-же шняга(
по USB нормально...

и почему на терминалку вирус не влияет?

может глюк из-за того, что у меня работа с портом в отдельном потоке?

таблицы системных вызовов:
в терминалке:
Раскрывающийся текст

,IRP_MJ_CREATE,DOWN,TRUE,0x0,74 00 63 00 6F 00 6D 00 75 00 31 00 32 00 2E 00 65 00 78 00 65 00 00 00 ,t.c.o.m.u.1.2...e.x.e...,
1,IRP_MJ_CREATE,UP,FALSE,0x0,,,
2,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
3,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,00 C2 01 00 ,.A..,
4,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
5,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
6,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
7,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
8,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
9,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
10,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
11,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
12,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS: Clear RTS),DOWN,FALSE,0x0,,,
13,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS: Clear RTS),UP,FALSE,0x0,,,
14,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
15,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
16,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
17,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
18,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 11 13 ,......,
19,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
20,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,01 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 ,................,
21,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
22,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE: Purge requests),DOWN,TRUE,0x0,0F 00 00 00 ,....,
23,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE: Purge requests),UP,FALSE,0x0,,,
24,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_QUEUE_SIZE: Set queue size),DOWN,TRUE,0x0,00 08 00 00 00 08 00 00 ,........,
25,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_QUEUE_SIZE: Set queue size),UP,FALSE,0x0,,,
26,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS: Set timeouts),DOWN,TRUE,0x0,01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 0A 00 00 00 ,....................,
27,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS: Set timeouts),UP,FALSE,0x0,,,
28,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
29,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
30,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
31,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
32,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
33,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
....
1182,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1183,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1184,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1185,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1186,IRP_MJ_WRITE,DOWN,TRUE,0x0,FF ,y,
1187,IRP_MJ_WRITE,UP,TRUE,0x0,FF ,y,
1188,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1189,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1190,IRP_MJ_READ,DOWN,FALSE,0x0,,,
1191,IRP_MJ_READ,UP,TRUE,0x0,FF FF FF ,yyy,
1192,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1193,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1194,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1195,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1196,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1197,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1198,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1199,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
....
1292,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),DOWN,FALSE,0x0,,,
1293,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_COMMSTATUS: Retrieve COM status),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
1294,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
1295,IRP_MJ_CLOSE,UP,FALSE,0x0,,,

у меня:
Раскрывающийся текст

0,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
1,IRP_MJ_CREATE,UP,FALSE,0x0,,,
2,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
3,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
4,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
5,IRP_MJ_CREATE,UP,FALSE,0x0,,,
6,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
7,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
8,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
9,IRP_MJ_CREATE,UP,FALSE,0x0,,,
10,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
11,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
12,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
13,IRP_MJ_CREATE,UP,FALSE,0x0,,,
14,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
15,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
16,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
17,IRP_MJ_CREATE,UP,FALSE,0x0,,,
18,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
19,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
20,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
21,IRP_MJ_CREATE,UP,FALSE,0x0,,,
22,IRP_MJ_CLOSE,DOWN,FALSE,0x0,,,
23,IRP_MJ_CLOSE,UP,FALSE,0x0,,,
24,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
25, IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
26, IRP_MJ_CREATE,UP,FALSE,0xc0000022,,,
27,IRP_MJ_CREATE,UP,FALSE,0x0,,,
28,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
29,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,00 C2 01 00 ,.A..,
30,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
31,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
32,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
33,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
34,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
35,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
36,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
37,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,00 C2 01 00 ,.A..,
38,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
39,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
40,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
41,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
42,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
43,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
44,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,00 C2 01 00 ,.A..,
45,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
46,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
47,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
48,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
49,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
50,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
51,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
52,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
53,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
54,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_TIMEOUTS: Retrieve timeouts),DOWN,FALSE,0x0,,,
55,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_TIMEOUTS: Retrieve timeouts),UP,TRUE,0x0,00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,....................,
56,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS: Set timeouts),DOWN,TRUE,0x0,FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,yyyy................,
57,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS: Set timeouts),UP,FALSE,0x0,,,
58,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_WAIT_MASK: Set current event mask),DOWN,TRUE,0x0,81 00 00 00 ,?...,
59,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_WAIT_MASK: Set current event mask),UP,FALSE,0x0,,,
60,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_WAIT_ON_MASK: Wait for event),DOWN,FALSE,0x0,,,
61, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_MODEMSTATUS: Retrieve modem status),DOWN,FALSE,0x0,,,
62, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_MODEMSTATUS: Retrieve modem status),UP,TRUE,0x0,00 00 00 00 ,....,
63, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_DTRRTS: Retrieve DTR and RTS),DOWN,FALSE,0x0,,,
64, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_DTRRTS: Retrieve DTR and RTS),UP,TRUE,0x0,03 00 00 00 ,....,
65, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_MODEMSTATUS: Retrieve modem status),DOWN,FALSE,0x0,,,
66, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_MODEMSTATUS: Retrieve modem status),UP,TRUE,0x0,00 00 00 00 ,....,
67, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_DTRRTS: Retrieve DTR and RTS),DOWN,FALSE,0x0,,,
68, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_DTRRTS: Retrieve DTR and RTS),UP,TRUE,0x0,03 00 00 00 ,....,
69, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
70, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,00 C2 01 00 ,.A..,
71, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
72, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
73, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
74, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
75, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
76, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
77, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
78, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
79, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
80, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
81, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
82, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
83, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
84, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
85, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
86, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
87, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
88, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,80 25 00 00 ,?%..,
89, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
90, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
91, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
92, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
93, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
94, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
95, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
96, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
97, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
98, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
99, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
100, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
101, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
102, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
103, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
104, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
105, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
106, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,80 25 00 00 ,?%..,
107, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
108, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
109, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
110, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
111, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
112, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
113, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
114, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
115, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
116, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
117, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
118, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
119, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
120, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
121, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
122, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
123, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
124, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,80 25 00 00 ,?%..,
125, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
126, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
127, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
128, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
129, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
130, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
131, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
132, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
133, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
134, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
135, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
136, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
137, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
138, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
139, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
140, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
141, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),DOWN,FALSE,0x0,,,
142, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE: Retrieve Baud Rate),UP,TRUE,0x0,80 25 00 00 ,?%..,
143, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),DOWN,FALSE,0x0,,,
144, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL: Retrieve line control),UP,TRUE,0x0,00 00 08 ,...,
145, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),DOWN,FALSE,0x0,,,
146, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS: Retrieve special characters),UP,TRUE,0x0,00 00 00 00 00 00 ,......,
147, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),DOWN,FALSE,0x0,,,
148, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW: Retrieve handshake information),UP,TRUE,0x0,09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ,....?...........,
149, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),DOWN,TRUE,0x0,80 25 00 00 ,?%..,
150, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE: Set baud rate),UP,FALSE,0x0,,,
151, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS: Clear RTS),DOWN,FALSE,0x0,,,
152, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS: Clear RTS),UP,FALSE,0x0,,,
153, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),DOWN,FALSE,0x0,,,
154, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR: Set DTR),UP,FALSE,0x0,,,
155, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),DOWN,TRUE,0x0,00 00 08 ,...,
156, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL: Set line control),UP,FALSE,0x0,,,
157, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),DOWN,TRUE,0x0,00 00 00 00 00 00 ,......,
158, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS: Set special characters),UP,FALSE,0x0,,,
159, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),DOWN,TRUE,0x0,01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ,................,
160, IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW: Set handshake information),UP,FALSE,0x0,,,
161, IRP_MJ_WRITE,DOWN,TRUE,0x0,FF ,y,
162, IRP_MJ_WRITE,UP,TRUE,0x0,FF ,y,
163, IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
164, IRP_MJ_CREATE,UP,FALSE,0xc0000022,,,
165, IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
166, IRP_MJ_CREATE,UP,FALSE,0xc0000022,,,
167, IRP_MJ_WRITE,DOWN,TRUE,0x0,FF ,y,
168, IRP_MJ_WRITE,UP,TRUE,0x0,FF ,y,
169, IRP_MJ_WRITE,DOWN,TRUE,0x0,FF ,y,
170, IRP_MJ_WRITE,UP,TRUE,0x0,FF ,y,
171,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_WAIT_ON_MASK: Wait for event),UP,TRUE,0x0,01 00 00 00 ,....,
172,IRP_MJ_READ,DOWN,FALSE,0x0,,,
173,IRP_MJ_READ,UP,TRUE,0x0,FF ,y,
174,IRP_MJ_READ,DOWN,FALSE,0x0,,,
175,IRP_MJ_READ,UP,FALSE,0x0,,,
176,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_WAIT_ON_MASK: Wait for event),DOWN,FALSE,0x0,,,
177,IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_WAIT_ON_MASK: Wait for event),UP,TRUE,0x0,01 00 00 00 ,....,
178,IRP_MJ_READ,DOWN,FALSE,0x0,,,
179,IRP_MJ_READ,UP,TRUE,0x0,FF FF ,yy,
180,IRP_MJ_READ,DOWN,FALSE,0x0,,,
181,IRP_MJ_READ,UP,FALSE,0x0,,,

и собственно мой код, который эти вызовы плодит:
    QSerialPort dev;
    dev.setPort(QString(port));
    bool res = false;
    for (int i = 0; i < 30; i++)
    {
        if (dev.open(QIODevice::ReadWrite))
        {
            res = true;
            break;
        }
        msleep(100);
    }
    if (!res) return;
    qDebug("port %s opened", port.data());
    if (res) res = dev.setBaudRate(QSerialPort::Baud9600);
    if (res) res = dev.setDataBits(QSerialPort::Data8);
    if (res) res = dev.setParity(QSerialPort::NoParity);
    if (res) res = dev.setStopBits(QSerialPort::OneStop);
    if (res) res = dev.setFlowControl(QSerialPort::NoFlowControl);
    if (!res)
    {
        dev.close();
        return;
    }
    QByteArray wbuf, rbuf;
    wbuf.append((char)0xff);
    for (int i = 0; i < 5; i++)
    {
        dev.write(wbuf);
        dev.waitForBytesWritten(100);
        dev.waitForReadyRead(200);
        if (dev.bytesAvailable() > 0)
        {
            rbuf.append(dev.readAll());
            while (dev.waitForReadyRead(100)) rbuf.append(dev.readAll());
        }
        res = false;
        if (rbuf.contains(QByteArray(3, (char)0xff)))
        {
            res = true;
            break;
        }
    }
    if (!res)
    {
        dev.close();
        return id;
    }
NAUGREEM
Цитата(kuzulis @ 15.3.2013, 13:45) *
Мож у тебя вирус какой или троян? :)
Чудес не бывает (с).

На всякий случай проверил всё свежим каспером - всё чисто...

Цитата(Алексей1153 @ 14.3.2013, 15:22) *
Цитата(NAUGREEM @ 14.3.2013, 15:28) *
Интересно - создатели терминалки так же делали?

а про какую именно речь ?


http://logic-bratsk.ru/radio/util/tstcomu/tstcomu.htm
kuzulis
Такое впечатление что у тебя несколько потоков пытаются открыть одно и то-же устройство.

Что это вообще за хренота?
Цитата
...
24,IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
25, IRP_MJ_CREATE,DOWN,TRUE,0x0,63 00 6D 00 73 00 2E 00 65 00 78 00 65 00 00 00 ,c.m.s...e.x.e...,
26, IRP_MJ_CREATE,UP,FALSE,0xc0000022,,,
27,IRP_MJ_CREATE,UP,FALSE,0x0,,,
...


Разбирайся со своим кодом.


NAUGREEM
Цитата(kuzulis @ 15.3.2013, 16:12) *
Такое впечатление что у тебя несколько потоков пытаются открыть одно и то-же устройство.


хм...
действительно...
я не подозревал, что QSerialPortInfo::availablePorts() пытается открыть все порты...

а как мне тогда посмотреть, какие порты есть в системе, не открывая их?
мне нужен вотчдог на отвалившиеся и появившиеся порты...
kuzulis
Цитата(NAUGREEM)
хм...
действительно...
я не подозревал, что QSerialPortInfo::availablePorts() пытается открыть все порты...


Он ничего не открывает сам.
Ты скорее всего вызываешь isBusy() или isValid(). Вот эти методы и открывают.
Просто не вызывай их.

Цитата(NAUGREEM)
а как мне тогда посмотреть, какие порты есть в системе, не открывая их?

см. выше.

Цитата(NAUGREEM)
мне нужен вотчдог на отвалившиеся и появившиеся порты...

Сам напиши.

Можешь взять код из QSerialDevice (master ветку) - класс SerialDeviceEnumerator:

http://gitorious.org/qserialdevice/qserial...eviceenumerator

Или из QExtSerialPort:

http://code.google.com/p/qextserialport/so...owse/#git%2Fsrc


А если по-простому - то просто по таймеру делай QSerialPortInfo::availablePorts() и все.

UPD: Если тебе нужен вачдог на выдергивание ранее открытого порта - то можешь просто приконнектиться к сигналу ResourceErorr.
NAUGREEM
Цитата(kuzulis @ 15.3.2013, 17:53) *
UPD: Если тебе нужен вачдог на выдергивание ранее открытого порта - то можешь просто приконнектиться к сигналу ResourceErorr.


спасибо!
поковыряю...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.