Привет всем.
Ваша проблема решается очень просто.
В программу «Сервер Кодов» версия 1-70(314) добавлен сервер приема данных от драйверов по протоколу TCP (сокет-сервер) порт 17235.
На первые символы // не обращай внимания, это сишный комментарий.
Текст заключенный <!-- … --> это XML-комментарий, который тоже не надо вставлять в пакет, так как это просто мое пояснение. Для меня не важно оформление и сдвиги как в XML, я все это проглочу, важны начало и конец каждого блока или значения, а также всего пакета. То есть можно писать все в одну строчку или каждый блок на новой строчке со сдвигами.
<..> - начало блока или значения
</…> - конец блока или значения
Пакет Данных в кодовой таблице WINDOWS от клиента:
// <driver> - начало пакета
//
// <!-- Блок информации о драйвере или устройстве, выводимое в окне Сервера Кодов.
// Блок высылается один раз после установки соединения и при изменении
// параметров устройства. Без этой информации поступающие данные будут
// игнорироваться. -->
// <info> - начало блока
// <id>123</id> - идентификатор хранения настроек привязки каналов в сервере (больше 0)
// <name>Имя драйвера</name> - наименование
// <maxchannels>32</maxchannels> - количество каналов (больше 0)
// </info> - конец блока
//
// <!-- Блок данных каналов, поступающих от устройства. Список каналов находится
// в интервале 1...<maxchannels> и может быть не полным, то есть меньше <maxchannels>.
// - Значение канала <value> может быть только целым числом.
// - Код состояния канала <status>:
// 0 - ошибка по каналу, значение неопределено
// 1 - корректное значение канала в цифровых кодах или др.величине
// 2 - значение после корректировки канала
// 3 - корректное значение канала в микровольтах
// 4 - корректное значение канала в микроамперах
// - Дата блока данных <datetime> используется, если устройство является
// синхронизирующим. -->
// <data> - начало блока
// <datetime>YYYYMMDDHHNNSSsss</datetime> - дата и время блока данных
// <channel> - начало блока данных канала
// <number>1</number> - номер канала в драйвере
// <value>1234567890</value> - значение канала
// <status>1</status> - состояние значения канала
// </channel> - конец блока данных канала
// ...
// </data> - конец блока
//
// </driver> - конец пакета
Например:
<driver>
<info>
<id>123</id>
<name>Хроматограф СГА-05</name>
<maxchannels>8</maxchannels>
</info>
<data>
<datetime>20070205114152200</datetime> - это время 5.2.2007 11:41:52.200
<channel>
<number>1</number>
<value>1234567890</value>
<status>1</status>
</channel>
<channel>
<number>2</number>
<value>12345</value>
<status>1</status>
</channel>
<channel>
<number>5</number>
<value>67890</value>
<status>1</status>
</channel>
</data>
</driver>
На каждый такой пакет, распознанный сервером, сервер отвечает результатом операции в виде:
// <driver> - начало пакета
//
// <!-- Блок возвращаемого результата. Блок возвращается клиенту на каждый пакет данных.
// Список кодов ошибок:
// больше 0 - успешно. Код возвращается только при приеме блока информации
// о драйвере или устройстве. Значение содержит максимальное количество
// каналов, которое Сервер Кодов смог выделить для данного устройства.
// 0 - успешно
// -1 - нет места для размещения данных устройства
// -2 - ошибка открытия Базы кодов, регистрация данных невозможна
// -3 - неверная регистрационная информация
// -4 - дублирование идентификатора. Драйвер с таким идентификатором уже
// присоединен к Серверу Кодов -->
// <result> - начало блока
// <code>0</code> - код выполнения операции
// <error>Текст ошибки</error> - текст ошибки (необязательно)
// </result> - конец блока
//
// </driver> - конец пакета
Например:
<driver>
<result>
<code>0</code>
<error>Текст ошибки</error>
</result>
</driver>