|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Сразу объясню для чего мне это нужно. Было задача отправлять СМС сообщения. Задача решена через Каше (не через COM port). Используется три внешних программ плюс куча специфического настройки оборудования. Всё работает, полет нормальный (скорость отправки СМС сообщений от 3 до 5 секунд). Есть отчеты о доставленных сообщениях. Но нужна обратная связь (получение СМС-ок и их анализ). Тут уже или огород городить или покупка стороннего софта или работа с СОМ портом напрямую. Подключиться к СОМ порту даже с наличием статьи по метеоданным оказалось не так просто. Подключился, а дальше вообще пошла полная ерунда, на команды, посланные 3G модему приходили невразумительные ответы (невпапад), при этом звонки совершались. Я так понял, что на мою команду идут ответы от предыдущих команд, а иногда ответы вообще идут по нарастанию (все команды и ответы в одной строке). Чтобы понять что же происходит на самом деле я хочу запусить терминал "HyperTerminal" или "putty.exe" в Каше давать команды и смотреть в окно терминала, что же происходит на самом деле. Загвоздка в том, что доступ к COM порту возможен только из ОДНОЙ любой программы, то есть возможно только одно соединение одновременно. ВОПРОС: Вот я и думаю, возможно ли запустить ТЕРМИНАЛ ("HyperTerminal" или "putty.exe") вручную или через Cache и в окне открывшегося терминала смотреть, какой код в него подается/поступает и какие действия в нём происходят. Так гораздо легче понять что делается не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 08:39 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Скриншот 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 08:40 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Если делать Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 08:42 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Вот как хотелось бы ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 08:46 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-О , А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 08:51 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
servit О-О-О , А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит? Каше ошибку не даёт, команды проходят успешно. Вся загвоздка именно в нестыковке отправленных команд 3G модему и полученных ответов от него. К примеру, отправляю команду на звонок после команды пустышки - получают в ответ - ошибка команды, при этом, звнок на мой сотовый идет, значит команда выполнена успешно, а терминал выдает - что команда не может быть выполнена. Ответ даёт 3G модем. Я более чем уверен, что этот ERRER был от предыдущей команды, а значит во время выполнения кода в дальнейшем нет никакой уверенности что опять не перепутаются команды и ответу, а значит доверять ОТВЕТАМ - нельзя. Вот я и хочу понять зависимость - команды и ответа. Те же самые команды, введённые напрямую в "HyperTerminal" работают без проблем и ответы приходят адекватные, а при работе через COM port Cache - начинаются свистопляски. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:01 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
servit О-О-О , А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит? Поподробнее! Предлагаете: Отослать команду, Подождать 1 секунду. Считать ответ (только непонятно, он все ответы считает или только один (см картинку ниже)) Скопировать во внешний файл Анализировать внешний файл (текстовой к примеру). Делал и такое - так там (см картинку ниже). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:06 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Проблема еще в том, как я понял, что при переключении с COM port на текущее устройство и при повторном переключении на COM port, он начинает считывать ответы и посланные команды с самого начала сессии, то есть с первой строки. Хотя, если не переключаться с КОМ порта, а сразу выводить в текстовой файл, может такого и не будет. Но задача все же запустить отладчик, чтобы я мог видеть, что отсылается в терминал связи с COM port-ом и какие ответы получены в ответ в режиме реального времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:10 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-О, Из личного опыта: Самое первое, это разобраться с терминаторами, которые КАШЕ может устанавливать по умолчанию при открытии порта. Второе, это логгировать все прочитанное. Третье, это разобраться с настройками СОМ порта при его открытии, тут возможно придется экспериментировать. Четвертое, есть специальные программно-аппаратные подглядывалки потока байтов, идущих по проводам СОМ-соединения, но тут есть тонкости. Зато этот способ позволяет видеть все те байты, что идут в прямом и обратном направлении, далее их можно выгружать в файлы, файлы засасывать в КАШЕ и скриптами уже разбирать, опираясь на свои собственные логи. Мне это в свою очередь позволяло раскалывать закрытые протоколы приборов и устройств. И еще, у КАШЕ есть интересное буферирование, если отправляется количество байт более (кажется 65, но могу и ошибаться, надо пробовать), то реально байты в линию пойдут не сплошным потоком, а с паузами, примерно через 20-30 мсек. Давно было, всего и не вспомнишь... Да, еще момент, Каше хорош по СОМ-портам для ASCII-протоколов, а для RTU-протоколов приходилось изголяться... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:34 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Был опыт работы с модемами через com, лет 20 назад :) Это были не GSM-модемы, конечно, но AT команды уже существовали. Из того что помню: - ограничитель - однозначно $c(13) (даже не сомневайтесь) - проблема вашего кода, скорее всего, в том что вычитываются не все ответы. Любой терминал (например putty) позволяет логгировать ввод-вывод. У вас же получается общаться с модемом с терминала? залоггируйте и подсмотрите, что происходит при обмене. Лет 7 назад мне пришлось-таки отправлять смски из Cache. Но времена были уже другие, и я предпочёл не заниматься мазохизмом, а интегрироваться с smstools3.kekekasvi.com/index.php?p= Пакет очень мощный, я не использовал и половины его возможностей. Важно, что в его составе есть демон, контролирующий полностью модемы, а задача прикладной программы - только складывать sms в папку для отправки и забирать отчёты/принятые sms из других папок. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:37 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
servit О-О-О , А логировать ввод/вывод в файл/глобал и смотреть уже там не подходит?Вот что выдал при записи в текстовой файл Код: plaintext 1. 2. 3.
При этом сигнал есть, звонок есть а он мне возвращает одни ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:43 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-ОКаше ошибку не даёт, команды проходят успешно. Вся загвоздка именно в нестыковке отправленных команд 3G модему и полученных ответов от него.Вы COM-порты предварительно настроили? Например через: Код: plaintext
О-О-ОПоподробнее!ZBREAKOperating System Notes:
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:43 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Да, еще не забывать предварительную очистку буфера, уже не помню как это делалось, где-то это описывается, также необходимо анализировать статусы завершения работы команд с устройством, об этом тоже читать - под рукой ничего нету, чтобы показать примеры, к сожалению... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:44 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-ОВОПРОС: Вот я и думаю, возможно ли запустить ТЕРМИНАЛ ("HyperTerminal" или "putty.exe") вручную или через Cache и в окне открывшегося терминала смотреть, какой код в него подается/поступает и какие действия в нём происходят. Так гораздо легче понять что делается не так. Я так понимаю, что вам нужен отладчик com-порта. И в нем уже смотреть, что именно туда приходит. Что касается символа окончания строки, то попробуйте использовать "!", т.е. w "<текст_команды>",!. Чтобы Каше само определило перевод строки. Или же вообще не давайте такого перевода. Не факт, что это здесь потребуется. Вообще в данном случае лучше найти альтернативный вариант записи в com-порт и сравнивать его работу с работой через Каше. Сравнивать HyperTerminal с программой на Каше - не самый правильный путь. Также можно почитать, как работает запись в com-порт на других языках. Тема старая. Помню еще в 90-х в модем отправляли команды. Посмотреть, может есть какие-то особенности в процессе записи в com-порт, которые вы не учли. Маловероятно, что в Каше это работает совсем по другому. Но если все же выяснятся особенности, то уже можно будет WRC потрясти. Вот все, чем могу помочь. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:45 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
А еще свяжитесь с Сергеем Кудиновым, у него была замечательная dll-ка с классовым обрамлением. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:46 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Alexey Maslov, Сейчас все проще - два дня работы и СМС уходят без проблем. Программы для отправки СМС - (что использую я в своей работе) все бесплатные (даже не триал и не демо, а полностью бесплатные). Стоимость отправки одной СМС - 20 коп (200 руб за 1000 штук). Есть тарифы у Теле2, где за 3,5 в день можно отправлять по 350 SMS в день бесплатно. У меня задача проще - информирование о сбоях и произошедших событиях, плюс каждый час - одно контрольное SMS - чтобы знать, что Сбоя в приложении СМС отправки нет. В сумме за день получается 20-30 СМС. Бьюсь с КОМ портом - чтобы получать и анализировать СМС-ски. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:50 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
AlexKBА еще свяжитесь с Сергеем Кудиновым, у него была замечательная dll-ка с классовым обрамлением.Надеюсь, KSergio всё ещё читает этот форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:51 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-ОУ меня задача проще - информирование о сбоях и произошедших событиях, плюс каждый час - одно контрольное SMS - чтобы знать, что Сбоя в приложении СМС отправки нет. В сумме за день получается 20-30 СМС.Может стоит воспользоваться уже встроенным в Caché механизмом отправки SMS, который используется для Two-Factor Authentication ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 09:57 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
В общем случае AlexKB , конечно, прав. Но у вас в принципе всё получается, поэтому изощренные методы перехвата потока, которые есть и для usb-портов, скорее всего не понадобятся; достаточно будет терминального лога. Насчёт $c(13) - имел в виду ограничитель на выводе, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:04 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
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.
Код: plaintext 1. 2. 3.
Теперь нужно будет подумать о сложно-составных ответах: при звонке (ATD+79107ххххх;) мы получаем 3 ответа ОК/Связь Установлена/Связь завершена но это уже решаемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:06 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Я все задача запускаю через терминал, поэтому, у меня в коде есть строка set old=$IO // Записываем текущее устройство ввода-вывода (Терминал) то есть вывод сообщений в терминале Cache. Если вы будете запускать данный код как фоновую задачу, то эта часть кода бесполезна. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:10 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
Сейчас все проще - два дня работы и СМС уходят без проблем. Так я и не многим больше потратил, и sms3tools абсолютно бесплатен, и с com-портом тр*ся не пришлось... но это конечно сугубое имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:14 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-О, После записи в СОМ-порт читать необходимо сразу же, читать необходимо по-байтно, таким образом можно будет локализовать правильные ответы от устройства. Иначе высока вероятность, что будут сливаться ответы хорошие+хорошие, хорошие+плохие, плохие+плохие. А после слияния ответов вообще будет трудно разобрать ответ от устройства. А вдруг оно Вам периодически отвечает, что занято, что переполнен буфер отправки, что еще чего-то там. СОМ-порт - это такая штука, что работает по принципу "Угу - Ага"! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:27 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-О , Зачем использовать w $c(10) или w $c(13,10) если есть стандартный w ! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:30 |
|
Возможно ли работать с запущенным терминалом HyperTerminal через Cache код
|
|||
---|---|---|---|
#18+
О-О-О , Хорошо бы ещё трассировать/анализировать статус последнего READ, используя $ZA . Ну, и до кучи $ZB/$KEY: Special Variables Show I/O Conditions PS: 2246924 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 11:05 |
|
|
start [/forum/topic.php?fid=39&msg=39218739&tid=1556494]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 151ms |
0 / 0 |