Описание протокола обмена данными между терминалом и АТС NEAX2000IPS. Ввиду отсутствия этого описания в документации на АТС, получено методом обратного инжиринга.
-
Формат команд для станции от терминала МОС.
Команда Название HEX код Что передается на АТС EXE Execution оf data write 2E Данные + 0x2E + контрольная сумма CE Clear entry 3A Один байт 0x3A S Step forward 0D Один байт 0x0D , Separator 2C Командой не является, используется наравне с другими символами в данных – Step backward 2D Один байт 0x2D <- Back space Эмулируется терминалом Ничего не передается DE Data End 20 Данные + 0x20 + контрольная сумма ST Command entry start 1F Один байт 0x1F -
Формат ответа станции терминалу МОС.
Первые 4 байта и последний 1 байт – служебные. В середине отображается то, что в терминале. Последний байт – контрольная сумма.
Формат пакета:
- Количество передаваемых байт, не считая его самого
- 1-ый байт статуса – результат выполнения:
- 20 – команда не выполнена
- 80 – команда выполнена успешно
- С0 – 1-ый уровень
- 2-ой байт статуса – уровень меню:
- 01 – 1-ый уровень (ввод команды)
- 03 – 2-ой уровень (ввод 1-го параметра индекса)
- 04 – 3-ый уровень (просмотр и изменение 2-го параметра значения)
- 82 – не удалось пройти на 2-ой уровень
- 84 – не удалось пройти на 3-ий уровень
- 86 – не удалось изменить параметр
- 3-ий байт статуса – код ошибки:
- 00 – ошибок нет или DIGIT ERROR
- 01 – DATA ERROR
- 03 – CODE NOT USED
- 06 – 1-ый уровень
- 0F – значение занято (SEE CM14 03065)
- Данные
- Контрольная сумма
- Считается как сложение по модулю 2 всех байт пакета, кроме самой КС.
-
Несколько вариантов реконструированого протокола обмена данными АТС с терминалом.
Во всех вариантах сначала настроить аппаратное управление потоком, скорость, таймауты, открыть порт.
Вариант А. Используется терминалом MOC.
- Отправляем код ST (0x1F).
- Запрашиваем чтение 1-го байта и ждем ответа. Здесь и далее, если вываливаемся по таймауту – ошибка.
- Смотрим в первом байте, сколько читать ещё. Читаем остаток.
- Проверяем второй байт, если 0xС0 команда выполнена успешно и продолжаем работу.
- Проверяем по последнему байту контрольную сумму.
- Отправляем блок данных: команда + код DE (0x20) + контрольная сумма.
- Повторяем пункты 2-5. Второй байт сравниваем с 0x80.
- Повторяем пункты 5,6. В качестве команды берем первый параметр.
- Читаем все, начиная с 5-го и заканчивая предпоследним байтом.
- Cмотрим надо ли писать значение, если надо, то продолжаем работу.
- Выполняем пункты 5,6. в качестве команды берем второй параметр, в качестве кода EXE (0x2E).
- Выходим из функции. Рапортуем об успехах или неудачах.
Вариант В. Упрощенный алгоритм обмена. Используется самим MATWorX.
Применяются дополнительные команды:Название HEX код начало команды 0x11 разделитель 0x12 После установления соединения один раз выполняем пункты 1-5 варианта А.
Чтение данных.- Отправляем блок данных: 0x11 + команда + 0x12 + параметр + код DE (0x20) + контрольная сумма.
- Выполняем пункт 7 варианта А.
- Повторяем нужное число раз пункты 1,2 варианта В.
Запись данных.
- Отправляем блок данных: 0x11 + команда + 0x12 + параметр + 0x12 + данные + код EXE (0x2E) + контрольная сумма.
- Выполняем пункт 7 варианта А.
- Повторяем нужное число раз пункты 1,2 варианта В.
-
Формат ответа станции программе MATWorX при двоичном обмене.
Передача 1-го байта данных.
Байт Назначение
00 количество передаваемых байт, не считая этого
01 результат выполнения, при если нормально – 0
02-11 пакет данных
12 контрольная сумма.Формат пакета с данными.
Байт Назначение
02 размер передаваемого пакета (9 байт)
03 0x40 \
04 0x80 \ некая сигнатура
05 0x01 /
06 0x01 /
07 порядковый номер пакета, ст. байт
08 порядковый номер пакета, мл. байт
09
10
11 байт данных -
Формат *.ofd файла.
Смещение Назначение 00 – 3F Заголовок. Название, время создания и т.п. 40 – (Конец файла-4) Пакеты с данными. В начало пакета приставляется по 3 байта 0xFF. Конец файла-4 3 байта 0xFF и байт 0x00 Файл содержит 4096 пакетов с данными. Пакеты могут быть 9-ти байтовые и 72-x байтовые.
-
Реконструкция карты памяти АТС (с помощью CMD F0).
С помощью CMD F0 можно просмотреть непрерывный массив памяти размером в 4 Гб, с адресацией от 0x00000000 до 0xFFFFFFFF, если памяти по заданному адресу нет, то АТС возвращает прочерки.
В этом массиве обнаружино 3 блока.
Начало и конец блока Размер, кб 0x00100000 – 0x005FFFFF 5120 0x01000000 – 0x0124FFFF 2368 0x01D00000 – 0x01FFFFFF 3072
Добрый день. Не могу рассчитать контрольную сумму при отправке запроса на станцию. Помогите, пожалуйста.