powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
25 сообщений из 38, страница 1 из 2
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218725
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу объясню для чего мне это нужно.
Было задача отправлять СМС сообщения. Задача решена через Каше (не через COM port). Используется три внешних программ плюс куча специфического настройки оборудования. Всё работает, полет нормальный (скорость отправки СМС сообщений от 3 до 5 секунд). Есть отчеты о доставленных сообщениях.
Но нужна обратная связь (получение СМС-ок и их анализ). Тут уже или огород городить или покупка стороннего софта или работа с СОМ портом напрямую.

Подключиться к СОМ порту даже с наличием статьи по метеоданным оказалось не так просто.
Подключился, а дальше вообще пошла полная ерунда, на команды, посланные 3G модему приходили невразумительные ответы (невпапад), при этом звонки совершались.
Я так понял, что на мою команду идут ответы от предыдущих команд, а иногда ответы вообще идут по нарастанию (все команды и ответы в одной строке).
Чтобы понять что же происходит на самом деле я хочу запусить терминал "HyperTerminal" или "putty.exe" в Каше давать команды и смотреть в окно терминала,
что же происходит на самом деле.

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

ВОПРОС:
Вот я и думаю, возможно ли запустить ТЕРМИНАЛ ("HyperTerminal" или "putty.exe") вручную или через Cache
и в окне открывшегося терминала смотреть, какой код в него подается/поступает
и какие действия в нём происходят.
Так гораздо легче понять что делается не так.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218726
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скриншот 2
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218728
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если делать
Код: plaintext
 w "ATE0",$Char(10,13) //10=Перевод строки 13=возврат каретки
то также полная неразбериха с ответами
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218733
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как хотелось бы
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218739
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,

А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218746
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit О-О-О ,

А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?

Каше ошибку не даёт, команды проходят успешно.
Вся загвоздка именно в нестыковке отправленных команд 3G модему и полученных ответов от него.
К примеру, отправляю команду на звонок после команды пустышки - получают в ответ - ошибка команды, при этом, звнок на мой сотовый идет, значит команда выполнена успешно, а терминал выдает - что команда не может быть выполнена.
Ответ даёт 3G модем.
Я более чем уверен, что этот ERRER был от предыдущей команды, а значит во время выполнения кода в дальнейшем нет никакой уверенности что опять не перепутаются команды и ответу, а значит доверять ОТВЕТАМ - нельзя.

Вот я и хочу понять зависимость - команды и ответа.
Те же самые команды, введённые напрямую в "HyperTerminal" работают без проблем и ответы приходят адекватные, а при работе через COM port Cache - начинаются свистопляски.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218755
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit О-О-О ,

А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?

Поподробнее!

Предлагаете:
Отослать команду,
Подождать 1 секунду.
Считать ответ (только непонятно, он все ответы считает или только один (см картинку ниже))
Скопировать во внешний файл
Анализировать внешний файл (текстовой к примеру).


Делал и такое - так там (см картинку ниже).
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218759
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема еще в том, как я понял, что при переключении с COM port на текущее устройство и при повторном переключении на COM port, он начинает считывать ответы и посланные команды с самого начала сессии, то есть с первой строки.
Хотя, если не переключаться с КОМ порта, а сразу выводить в текстовой файл, может такого и не будет.

Но задача все же запустить отладчик, чтобы я мог видеть, что отсылается в терминал связи с COM port-ом и какие ответы получены в ответ в режиме реального времени.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218777
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,
Из личного опыта:
Самое первое, это разобраться с терминаторами, которые КАШЕ может устанавливать по умолчанию при открытии порта.
Второе, это логгировать все прочитанное.
Третье, это разобраться с настройками СОМ порта при его открытии, тут возможно придется экспериментировать.
Четвертое, есть специальные программно-аппаратные подглядывалки потока байтов, идущих по проводам СОМ-соединения, но тут есть тонкости. Зато этот способ позволяет видеть все те байты, что идут в прямом и обратном направлении, далее их можно выгружать в файлы, файлы засасывать в КАШЕ и скриптами уже разбирать, опираясь на свои собственные логи. Мне это в свою очередь позволяло раскалывать закрытые протоколы приборов и устройств.
И еще, у КАШЕ есть интересное буферирование, если отправляется количество байт более (кажется 65, но могу и ошибаться, надо пробовать), то реально байты в линию пойдут не сплошным потоком, а с паузами, примерно через 20-30 мсек.

Давно было, всего и не вспомнишь...

Да, еще момент, Каше хорош по СОМ-портам для ASCII-протоколов, а для RTU-протоколов приходилось изголяться...
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218779
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был опыт работы с модемами через com, лет 20 назад :) Это были не GSM-модемы, конечно, но AT команды уже существовали. Из того что помню:
- ограничитель - однозначно $c(13) (даже не сомневайтесь)
- проблема вашего кода, скорее всего, в том что вычитываются не все ответы.
Любой терминал (например putty) позволяет логгировать ввод-вывод. У вас же получается общаться с модемом с терминала? залоггируйте и подсмотрите, что происходит при обмене.

Лет 7 назад мне пришлось-таки отправлять смски из Cache. Но времена были уже другие, и я предпочёл не заниматься мазохизмом, а интегрироваться с smstools3.kekekasvi.com/index.php?p=
Пакет очень мощный, я не использовал и половины его возможностей. Важно, что в его составе есть демон, контролирующий полностью модемы, а задача прикладной программы - только складывать sms в папку для отправки и забирать отчёты/принятые sms из других папок.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218784
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit О-О-О ,

А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?Вот что выдал при записи в текстовой файл

Код: plaintext
1.
2.
3.
Ответ AT= ERROR
Ответ на ATE0= ERROR
Ответ на ATD(звонок)= ERROR
Ответ на AT+CSQ= ERROR

При этом сигнал есть, звонок есть
а он мне возвращает одни ошибки.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218785
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОКаше ошибку не даёт, команды проходят успешно.
Вся загвоздка именно в нестыковке отправленных команд 3G модему и полученных ответов от него.Вы COM-порты предварительно настроили? Например через:
Код: plaintext
%SYS>d ^LEGACYNETWORK

О-О-ОПоподробнее!ZBREAKOperating System Notes:
  • Windows — Trace messages to another device are supported on Windows platforms for terminal devices connected to a COM port, such as COM1:. You cannot use the console or a terminal window. You can specify a sequential file for the trace device
ZBREAK (Trace execution and output a trace record)
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218786
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, еще не забывать предварительную очистку буфера, уже не помню как это делалось, где-то это описывается, также необходимо анализировать статусы завершения работы команд с устройством, об этом тоже читать - под рукой ничего нету, чтобы показать примеры, к сожалению...
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218787
imdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОВОПРОС:
Вот я и думаю, возможно ли запустить ТЕРМИНАЛ ("HyperTerminal" или "putty.exe") вручную или через Cache
и в окне открывшегося терминала смотреть, какой код в него подается/поступает
и какие действия в нём происходят.
Так гораздо легче понять что делается не так.
Я так понимаю, что вам нужен отладчик com-порта. И в нем уже смотреть, что именно туда приходит.
Что касается символа окончания строки, то попробуйте использовать "!", т.е. w "<текст_команды>",!. Чтобы Каше само определило перевод строки. Или же вообще не давайте такого перевода. Не факт, что это здесь потребуется.

Вообще в данном случае лучше найти альтернативный вариант записи в com-порт и сравнивать его работу с работой через Каше. Сравнивать HyperTerminal с программой на Каше - не самый правильный путь.
Также можно почитать, как работает запись в com-порт на других языках. Тема старая. Помню еще в 90-х в модем отправляли команды. Посмотреть, может есть какие-то особенности в процессе записи в com-порт, которые вы не учли. Маловероятно, что в Каше это работает совсем по другому. Но если все же выяснятся особенности, то уже можно будет WRC потрясти.

Вот все, чем могу помочь. Удачи!
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218788
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще свяжитесь с Сергеем Кудиновым, у него была замечательная dll-ка с классовым обрамлением.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218792
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

Сейчас все проще - два дня работы и СМС уходят без проблем.
Программы для отправки СМС - (что использую я в своей работе) все бесплатные (даже не триал и не демо, а полностью бесплатные).
Стоимость отправки одной СМС - 20 коп (200 руб за 1000 штук). Есть тарифы у Теле2, где за 3,5 в день можно отправлять по 350 SMS в день бесплатно.
У меня задача проще - информирование о сбоях и произошедших событиях, плюс каждый час - одно контрольное SMS - чтобы знать, что Сбоя в приложении СМС отправки нет. В сумме за день получается 20-30 СМС.

Бьюсь с КОМ портом - чтобы получать и анализировать СМС-ски.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218794
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKBА еще свяжитесь с Сергеем Кудиновым, у него была замечательная dll-ка с классовым обрамлением.Надеюсь, KSergio всё ещё читает этот форум.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218806
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОУ меня задача проще - информирование о сбоях и произошедших событиях, плюс каждый час - одно контрольное SMS - чтобы знать, что Сбоя в приложении СМС отправки нет. В сумме за день получается 20-30 СМС.Может стоит воспользоваться уже встроенным в Caché механизмом отправки SMS, который используется для Two-Factor Authentication ?
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218815
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае AlexKB , конечно, прав. Но у вас в принципе всё получается, поэтому изощренные методы перехвата потока, которые есть и для usb-портов, скорее всего не понадобятся; достаточно будет терминального лога.
Насчёт $c(13) - имел в виду ограничитель на выводе, конечно.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218817
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit О-О-О ,

А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?

Попробовал с кодом w "AT",$Char(13)

В ответ на код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
 // Создаём новый файл для вывода заявок для QUIK
 Set Zayavka=##class(%FileCharacterStream).%New()
 Set Zayavka.Filename="C:\HSPAUSBМодем\Я__ОтветыМодема.txt"
 Set Zayavkawww=""
 do Zayavka.WriteLine(Zayavkawww)
 do Zayavka.SaveStream()
 
 set str=""
 set port="COM6"
 open port:(:::" 0801n0":/BAUD=115200) // Открываем устройство
 set old=$IO // Записываем текущее устройство ввода-вывода (Терминал)
 use port  // Переключаемся на com порт
 Hang 5
 
 Set str=""
 w "AT",$Char(13) // w "",$Char(13)  
 Hang 0.5
 while str="" {read str}
 Set Zayavkawww="Ответ AT= "_str
 do Zayavka.WriteLine(Zayavkawww)
 do Zayavka.SaveStream()
 
 Set str=""
 w "ATE0",$Char(13) //10=Перевод строки 13=возврат каретки
 Hang 0.5
 while str="" {read str}
 Set Zayavkawww="Ответ на ATE0= "_str
 do Zayavka.WriteLine(Zayavkawww)
 do Zayavka.SaveStream()
 
 set str=""
 write "ATD+791079хххххххххх;",$Char(13)
 Hang 0.5
 while str="" {read str}
 Set Zayavkawww="Ответ на ATD(звонок)= "_str
 do Zayavka.WriteLine(Zayavkawww)
 do Zayavka.SaveStream()
 
 
 set str=""
 write "AT+CSQ",$Char(13) // уровень сигнала
 Hang 0.5
 while str="" {read str}
 Set Zayavkawww="Ответ на AT+CSQ= "_str
 do Zayavka.WriteLine(Zayavkawww)
 do Zayavka.SaveStream()
 
 
 Hang 10
 close port // Закрываем устройство 
 use old 
 w " Тестирование завершено",!
 
 QUIT
получил нормальные ответы

Код: plaintext
1.
2.
3.
Ответ AT= OK
Ответ на ATE0= OK
Ответ на ATD(звонок)= OK
Ответ на AT+CSQ= +CSQ: 20,73

Теперь нужно будет подумать о сложно-составных ответах:
при звонке (ATD+79107ххххх;)
мы получаем 3 ответа ОК/Связь Установлена/Связь завершена
но это уже решаемо.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218819
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я все задача запускаю через терминал, поэтому, у меня
в коде есть строка

set old=$IO // Записываем текущее устройство ввода-вывода (Терминал)

то есть вывод сообщений в терминале Cache.
Если вы будете запускать данный код как фоновую задачу, то эта часть кода бесполезна.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218823
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас все проще - два дня работы и СМС уходят без проблем.
Так я и не многим больше потратил, и sms3tools абсолютно бесплатен, и с com-портом тр*ся не пришлось... но это конечно сугубое имхо.
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218838
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,
После записи в СОМ-порт читать необходимо сразу же, читать необходимо по-байтно, таким образом можно будет локализовать правильные ответы от устройства. Иначе высока вероятность, что будут сливаться ответы хорошие+хорошие, хорошие+плохие, плохие+плохие. А после слияния ответов вообще будет трудно разобрать ответ от устройства.
А вдруг оно Вам периодически отвечает, что занято, что переполнен буфер отправки, что еще чего-то там.
СОМ-порт - это такая штука, что работает по принципу "Угу - Ага"!
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218840
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,

Зачем использовать
w $c(10)
или
w $c(13,10)
если есть стандартный
w !
...
Рейтинг: 0 / 0
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
    #39218871
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,

Хорошо бы ещё трассировать/анализировать статус последнего READ, используя $ZA . Ну, и до кучи $ZB/$KEY: Special Variables Show I/O Conditions

PS: 2246924
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]