Определение статуса соединения (X)
Команда Echo (X) заставляет DS вернуть строку со статусной информацией. Содержимое этой строки полностью описано на странице руководства по команде, поэтому здесь рассмотрим только ту часть, которая относится к этой рекомендации: статус соединения с данными.
Ниже приведена выдержка со страницы руководства по команде, переработанная для целей этой рекомендации.
При отправке в режиме последовательного программирования ответ на эту команду выглядит так:
Amsei c[p]/ES
Пока нас интересует только выделенный жирным c, который находится примерно в середине ответа (это 6-й символ). Значение остальных букв можно узнать на странице руководства по команде. Символ c означает «data connection status» (статус соединения с данными). Это лишь позиция в строке ответа, а не буква, которую нужно отправлять в команде (иначе как бы она показывала статус? Разумеется, она должна меняться). Поэтому на этой позиции строки ответа может стоять один из следующих символов:
* Соединение с данными сейчас закрыто.
A Отправка ARP или (V3.54+) установление канала PPP (через PPPoE).
O Соединение с данными устанавливается.
C TCP-соединение установлено или закрывается (но ещё не закрыто).
U Сейчас установлено UDP-соединение.
R Соединение сброшено удалённым хостом - сейчас соединения нет.
F Вход в LinkServer не удался.
L Выполняется вход в LinkServer.
Практический пример
Допустим, у вас есть последовательное устройство, и вы хотите установить исходящее соединение с сервером. Для этого сначала нужно проверить, безопасно ли пытаться подключиться (то есть нет ли сейчас активного соединения с данными). Затем отправляется команда на подключение. После этого нужно проверить, действительно ли соединение установлено, и продолжать проверять периодически, пока оно не установится.
Такой сеанс программирования может выглядеть так (команды, которые отправляются DS, показаны ниже).
Проверка: есть ли установленное соединение с данными?
*<STX>X<CR> *
6-й символ (c) - звёздочка: соединение с данными закрыто. Продолжаем:
<STX>ANS*I**/**<CR>
Устанавливаем соединение с 192.168.0.20:1001:
<STX>PCE192.168.0.5/1001<CR>
DS подтверждает команду:
<STX>A<CR>
Проверка: есть ли установленное соединение с данными?
<STX>X<CR>
6-й символ (c) - O: соединение с данными устанавливается. Соединения ещё нет:
<STX>ANS*IO*/**<CR>
(Подождав некоторое время):
Проверка: есть ли установленное соединение с данными?
<STX>X<CR>
6-й символ (c) - C: TCP-соединение есть, проверено:
<STX>ANS*IC*/**<CR>
Выход из режима программирования, чтобы начать обмен данными:
<STX>O<CR>
DS подтверждает команду:
<STX>A<CR>
Пример с иллюстрацией:
