Содержание

Windows сообщения в программе Хромос

Исходящие BROADCAST сообщения от программы Хромос

СообщениеНазвание сообщенияWPARAMLPARAMВерсия Хромос
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
ChromosVersionMessageОтвет на запрос версии ПО Хромос0Мажорная версия - старший байт,
минорная версия - младший байт
2.25.37

Входящие сообщения к программе Хромос

СообщениеНазвание сообщенияWPARAMLPARAMВерсия Хромос
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 младшие байта
02.25.4
ChromosFlapRequestMessageКоманда на переключения клапана на ПУКномер прибора - старший байт,
номер клапана - младший байт
0 включить
1 отключить
2.25.1
ChromosKeyRequestMessageЗапрос статуса регистрации0 0 2.25.2
ChromosMethodAssayTimeRequestMessageЗапрос времени методаномер прибораиндекс метода (вычисленная контрольная сумма по алгоритму CRC32 от имени метода)2.25.7
ChromosChannelStreamRequestMessageКоманда на задание № потока на канал (для включения в паспорт)номер прибора - старший байт,
номер канала - младший байт
номер потока2.25.27
ChromosVersionRequestMessageКоманда на запрос версии ПО Хромос002.25.37

Комментарии

Номер прибора и номер канала считаются от нуля.

При первоначальном запуске дополнительного приложения необходимо один раз подать ПО Хромос сообщение 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)

Подробнее: RegisterWindowMessage PostMessage PreTranslateMessage