АТС NEAX2000IPS

Описание протокола обмена данными между терминалом и АТС NEAX2000IPS. Ввиду отсутствия этого описания в документации на АТС, получено методом обратного инжиринга.

  1. Формат команд для станции от терминала МОС.

    Команда Название 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
  2. Формат ответа станции терминалу МОС.

    Первые 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 всех байт пакета, кроме самой КС.
  3. Несколько вариантов реконструированого протокола обмена данными АТС с терминалом.

    Во всех вариантах сначала настроить аппаратное управление потоком, скорость, таймауты, открыть порт.

    Вариант А. Используется терминалом MOC.

    1. Отправляем код ST (0x1F).
    2. Запрашиваем чтение 1-го байта и ждем ответа. Здесь и далее, если вываливаемся по таймауту – ошибка.
    3. Смотрим в первом байте, сколько читать ещё. Читаем остаток.
    4. Проверяем второй байт, если 0xС0 команда выполнена успешно и продолжаем работу.
    5. Проверяем по последнему байту контрольную сумму.
    6. Отправляем блок данных: команда + код DE (0x20) + контрольная сумма.
    7. Повторяем пункты 2-5. Второй байт сравниваем с 0x80.
    8. Повторяем пункты 5,6. В качестве команды берем первый параметр.
    9. Читаем все, начиная с 5-го и заканчивая предпоследним байтом.
    10. Cмотрим надо ли писать значение, если надо, то продолжаем работу.
    11. Выполняем пункты 5,6. в качестве команды берем второй параметр, в качестве кода EXE (0x2E).
    12. Выходим из функции. Рапортуем об успехах или неудачах.

    Вариант В. Упрощенный алгоритм обмена. Используется самим MATWorX.
    Применяются дополнительные команды:

    Название HEX код
    начало команды 0x11
    разделитель 0x12

    После установления соединения один раз выполняем пункты 1-5 варианта А.
    Чтение данных.

    1. Отправляем блок данных: 0x11 + команда + 0x12 + параметр + код DE (0x20) + контрольная сумма.
    2. Выполняем пункт 7 варианта А.
    3. Повторяем нужное число раз пункты 1,2 варианта В.

    Запись данных.

    1. Отправляем блок данных: 0x11 + команда + 0x12 + параметр + 0x12 + данные + код EXE (0x2E) + контрольная сумма.
    2. Выполняем пункт 7 варианта А.
    3. Повторяем нужное число раз пункты 1,2 варианта В.
  4. Формат ответа станции программе MATWorX при двоичном обмене.

    Передача 1-го байта данных.
    Байт Назначение
    00 количество передаваемых байт, не считая этого
    01 результат выполнения, при если нормально – 0
    02-11 пакет данных
    12 контрольная сумма.

    Формат пакета с данными.
    Байт Назначение
    02 размер передаваемого пакета (9 байт)
    03 0x40 \
    04 0x80 \ некая сигнатура
    05 0x01 /
    06 0x01 /
    07 порядковый номер пакета, ст. байт
    08 порядковый номер пакета, мл. байт
    09
    10
    11 байт данных

  5. Формат *.ofd файла.

    Смещение Назначение
    00 – 3F Заголовок. Название, время создания и т.п.
    40 – (Конец файла-4) Пакеты с данными. В начало пакета приставляется по 3 байта 0xFF.
    Конец файла-4 3 байта 0xFF и байт 0x00

    Файл содержит 4096 пакетов с данными. Пакеты могут быть 9-ти байтовые и 72-x байтовые.

  6. Реконструкция карты памяти АТС (с помощью CMD F0).

    С помощью CMD F0 можно просмотреть непрерывный массив памяти размером в 4 Гб, с адресацией от 0x00000000 до 0xFFFFFFFF, если памяти по заданному адресу нет, то АТС возвращает прочерки.

    В этом массиве обнаружино 3 блока.

    Начало и конец блока Размер, кб
    0x00100000 – 0x005FFFFF 5120
    0x01000000 – 0x0124FFFF 2368
    0x01D00000 – 0x01FFFFFF 3072

Один комментарий к “АТС NEAX2000IPS

  1. Адис

    Добрый день. Не могу рассчитать контрольную сумму при отправке запроса на станцию. Помогите, пожалуйста.

Добавить комментарий для Адис Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *