====== Windows сообщения в программе Хромос ====== ===== Исходящие BROADCAST сообщения от программы Хромос ===== ^Сообщение^Название сообщения^WPARAM^LPARAM^Версия Хромос^ |ChromosStartMessage|Начало анализа|номер прибора|номер канала|2.13.29| |ChromosStopMessage|Завершение анализа|номер прибора|номер канала|2.13.29| |ChromosReadyMessage|Готовность прибора|номер прибора|0 не готов\\ 1 готов|2.13.29| |ChromosConnectMessage|Подключение/отключение прибора|номер прибора|0 отключён\\ 1 подключён\\ -3 ошибка подключения|2.23.17| |ChromosSignalMessage|Рассылка значения сигнала в детекторе|номер прибора - старший байт,\\ номер канала - младший байт|сигнал детектора (float 4 байта)|2.17.43| |ChromosSequenceMessage|Ответ на запрос запуска серии на канале|номер прибора - старший байт,\\ номер канала - младший байт|количество анализов в серии\\ -1 для бесконечного цикла\\ -2 анализ по данному каналу уже идёт\\ -3 невозможно подключиться к данному прибору\\ -4 нет такого прибора\\ -5 нет такого канала\\ -6 на канале не выбран метод\\ -7 канал отключен|2.17.43| |ChromosStreamMessage|Ответ на команду переключения входного потока|номер прибора - старший байт,\\ младший байт - не используется|номер заданного потока\\ -3 невозможно подключиться к данному прибору\\ -4 нет такого прибора\\ -8 прибор не поддерживает переключение потоков\\ -9 номер потока слишком большой\\ -10 конфигурация названий Т.Зон не верна\\ -11 нет сопротивления 820 Ом в зоне Клапан-1|2.19.34| |ChromosDeviceModeMessage|Режим прибора|номер прибора|номер режима|2.21.2| |ChromosMethodMessage|Ответ на запрос установки метода на канал|номер прибора - старший байт,\\ номер канала - младший байт|индекс метода (вычисленная контрольная сумма по алгоритму CRC32 от имени метода)\\ -1 Прибор не найден\\ -2 Прибор не подключен\\ -3 Неправильный номер канала\\ -4 Канал занят\\ -5 Название метода не найдено\\ -6 Ошибка чтения метода|2.19.48\\ 2.25.7| |ChromosErrorMessage|Сообщение об ошибках|номер прибора|номер ошибки| | |ChromosAtmospherePressureMessage|Рассылка значения атмосферного давления|номер прибора |атмосферное давление кгс/м2 (float 4 байта)|2.23.12| |ChromosReadParamMessage|Значение параметра от ГХ-1000|номер прибора - старший байт,\\ адрес параметра - средний байт \\ номер параметра - 2 младшие байта|значение параметра\\ или ошибка\\ 0xfffffffe - нет такого параметра |2.25.4| |ChromosFlapMessage|Команда на переключения клапана на ПУК|номер прибора - старший байт,\\ номер клапана - младший байт|состояние клапана\\ 0 включен\\ 1 отключен\\ -1 Прибор не найден\\ -2 Прибор не подключен\\ -3 Неверный тип прибора\\ -4 Плата клапанов не найдена\\ -5 Неверный номер клапана\\ -6 Клапан на ПУК используется для проведения анализа\\ -7 Не верно задано состояние клапана\\ -8 Клапан на ПУК не доступен |2.25.1\\ 2.25.7 | |ChromosKeyMessage|Ответ на запрос статуса регистрации|0 |Cтатус регистрации\\ 0 Демо-режим\\ 1 Зарегистрированная версия |2.25.2| |ChromosMethodAssayTimeMessage|Ответ на запрос времени метода|номер прибора|Время метода в секундах\\ -1 Метод не найден\\ -2 Ошибка чтения метода|2.25.7| ===== Входящие сообщения к программе Хромос ===== |Сообщение|Название сообщения|WPARAM|LPARAM|Версия Хромос| |ChromosPrepareMessage|Перевод прибора в начальное состояние и запрос состояния готовности|номер прибора| |2.13.29| |ChromosConnectRequestMessage|Команда на подключение/отключение прибора|номер прибора|0 отключить\\ 1 подключить|2.19.14| |ChromosStartRequestMessage|Запуск канала на запись без проверки прибора на готовность|номер прибора|номер канала|2.15.8| |ChromosSignalRequestMessage|Запрос сигнала детектора|номер прибора|номер канала|2.17.43| |ChromosSequenceRequestMessage|Запуск серии на канале|номер прибора - старший байт,\\ номер канала - младший байт|количество анализов в серии\\ или -1 для бесконечного цикла|2.22.29, 2.23.17| |ChromosStreamRequestMessage|Переключение входного потока|номер прибора - старший байт,\\ младший байт = 0 |0 - обычная работа\\ 1 - поток 1 (калибровка)\\ 2 - поток 2|2.19.34| |ChromosMethodRequestMessage|Команда на установку метод на канал|номер прибора - старший байт,\\ номер канала - младший байт|индекс метода (вычисленная контрольная сумма по алгоритму CRC32 от имени метода)|2.19.48| |ChromosAtmospherePressureRequestMessage|Запрос атмосферного давления|номер прибора| |2.23.12| |ChromosReadParamRequestMessage|Запрос чтения параметра ГХ-1000|номер прибора - старший байт,\\ адрес параметра - средний байт \\ номер параметра - 2 младшие байта|0|2.25.4| |ChromosFlapRequestMessage|Команда на переключения клапана на ПУК|номер прибора - старший байт,\\ номер клапана - младший байт|0 включить\\ 1 отключить|2.25.1| |ChromosKeyRequestMessage|Запрос статуса регистрации|0 |0 |2.25.2| |ChromosMethodAssayTimeRequestMessage|Запрос времени метода|номер прибора|индекс метода (вычисленная контрольная сумма по алгоритму CRC32 от имени метода)|2.25.7| ===== Комментарии ===== Номер прибора и номер канала считаются от нуля. При первоначальном запуске дополнительного приложения необходимо один раз подать ПО Хромос сообщение **ChromosPrepareMessage**.\\ После подачи сообщения **ChromosPrepareMessage** программа Хромос всегда отвечает сигналом о неготовности, а затем происходят проверки состояния прибора.\\ И только через некоторое время прибор выходит в режим готовности, посылая соответствующий сигнал готовности **ChromosReadyMessage**. :!:Устаревшее:!: Для запуска канала без проверки на готовность можно использовать сообщение WM_COMMAND со специальным значением WPARAM=40020+device*10+channel. ===== Использование API ===== === Запуск второго канала у первого хроматографа (C++) === UINT sm = RegisterWindowMessage(_T("ChromosStartRequestMessage")); ::PostMessage(HWND_BROADCAST, sm, 0, 1); === Сделать что-то после подключения хроматографа (C++) === UINT m_rq = RegisterWindowMessage(_T("ChromosConnectMessage")); BOOL CChromosApp::PreTranslateMessage(MSG* pMsg) { ... if(pMsg->message==m_rq) { // Что-то сделать return TRUE; } ... return CWinApp::PreTranslateMessage(pMsg); } === Запуск первого канала первого прибора (Python) === import win32api message = win32api.RegisterWindowMessage("ChromosStartRequestMessage") win32api.PostMessage(65535,message,0,0) Подробнее: [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms644947(v=vs.85).aspx|RegisterWindowMessage]] [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms644944(v=vs.85).aspx|PostMessage]] [[https://msdn.microsoft.com/en-us/library/362kaah4.aspx#CWinApp::PreTranslateMessage|PreTranslateMessage]]