powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSComm и Telnet
13 сообщений из 13, страница 1 из 1
MSComm и Telnet
    #34305169
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некий прибор. VoiceFinder AP200B-шлюз IP-телефонии. Но суть не в этом.
Он настраивается через терминалку.
Вариант1: через консоль через COM-порт подключен к компьютеру
Вариант2: управляется через Telnet.
В "Ручном" режиме можно использовать HyperTerminal (как в случае com-port, так и в случае telnet). Причем интерфейс общения: команды, ответы будут выглядеть абсолютно одинаково.

В силу особенностей работы с прибором необходимо иногда программно менять его настройки.

Вариант1(com-port) Для этого используется Microsoft Comm Control 6.0 и программа на VB с возложенными на нее задачами отлично справляется.

Вариант2 (telnet).
Есть ли способ программно управлять прибором по сети, т.е.через telnet? Грубо говоря некая штука типа Microsoft Comm Control только для общения через telnet, а не через com-port?
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34305269
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winsock?
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34317674
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, хорошая штука. Переписал свою программу, вроде все функционирует.
Один вопрос с ходу осилить не могу.

Программа устроена так, что она постоянно (сутками) наблюдает за прибором.
Периодически дает ему команды.

Прибор устроен таким образом, что после перезагрузки он полностью восстанавливает свое состояние, в том числе и с т.зр.возможности обращения к нему по telnet. Но на момент перезагрузки он какое-то время не виден.
В связи с этим 2 ситуации.

1. Программа пришла к выводу, что прибор надо перезагружать:
Код: plaintext
Winsock1.SendData "reboot" & vbCrLf
Программа знает, что связь разорвана, поэтому
Код: plaintext
Winsock1.Close
Далее предполагается, что связь надо восстановить:
Делаем
Код: plaintext
Winsock1.Connect
с какой-то периодичностью и в конце концов этот connect получаем:
Код: plaintext
1.
2.
Private Sub Winsock1_Connect()
LabRe.Caption = "OK"
End Sub
Далее можем продолжить программную работу с прибором.
Здесь все относительно просто.

2. Прибор по какой-то причине может решить перезагрузиться сам (самое простое- сбой питания). В этом случае программа об этом не знает. А связь тем не менее разорвана. Соответственно ни одна команда не пройдет. Программа либо вылетит, либо будет висеть. Есть ли способ как-то автоматически получить информацию об этом событии с целью запуска процедуры восстановления связи(процедура отработана в пункте 1)?

P.S. с com-port-ом проще: там связь не "теряется" в момент перезагрузки.
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34317687
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afaik такой возможности нет.
Но ее можно реализовать самому: прибор можно пинговать через разные промежутки времени. В зависимости от критчности работы, хоть каждые 5 секунд, типа: "Ты живой?" - "Да".


Magnus
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34317773
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перехватить ошибки и обрабатывать по ним
Я писал биллинг для VoIP шлюза на VB, через telnet
Решил эту проблему простым перехватом ошибок
On Error Goto Err
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34319064
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekПерехватить ошибки и обрабатывать по ним
Я писал биллинг для VoIP шлюза на VB, через telnet
Решил эту проблему простым перехватом ошибок
On Error Goto Err
На каком событии ошибки? Я в свое время тоже делал подобные вещи, с кассовым аппаратом базарил по телнету. Как ни крутил - единственным выходом был пинг железяки, ибо никаких ошибок обрыва коннекта небыло.
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34319281
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать, в моей проге нужно было периодически обращаться к шлюзу, т.е.
скажем каждые 5 сек, и если связь обрывалась выходила ошибка, которую и перехватывал
Насчет пинга, а если... скажем у вас оборвалась телнет связь, а сам шлюз пингуется?
Может периодически какую-нибудь простую команду нужно выполнять?
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34319792
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekЗабыл сказать, в моей проге нужно было периодически обращаться к шлюзу, т.е.
скажем каждые 5 сек, и если связь обрывалась выходила ошибка, которую и перехватывал
Насчет пинга, а если... скажем у вас оборвалась телнет связь, а сам шлюз пингуется?
Может периодически какую-нибудь простую команду нужно выполнять?

Я это собственно иимел ввиду, какой либо простой запрос напрямую к девайсу и простой ответ на него, "Ты там?" "Да"
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34320332
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нибудь сделаем.
Кстати, как ping программно сделать?
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34320339
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя согласен, пинг не выход.
5сек это уж слишком часто в моем случае,
а за это или похожее время прибор успеет исчезнуть и вновь появиться "на экранах радаров".
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34322174
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс Пинг
Пример использования:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Set objPing = New clsPing
If objPing.SocketReady Then
    objPing.Ping strHost
    If objPing.PingStatus = ICMP_SUCCESS Then
    'Пингуется
    ElseIf objPing.PingStatus = ICMP_STATUS_BAD_DESTINATION Then
    'Неправильный адрес
    Else
    'Ошибка
        MsgBox objPing.PingStatusDescription
    End If
End If
...
Рейтинг: 0 / 0
MSComm и Telnet
    #34322468
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 Я это собственно иимел ввиду, какой либо простой запрос напрямую к девайсу и простой ответ на него, "Ты там?" "Да"
Так и сделал.
Код: plaintext
Winsock1.SendData  vbCrLf
И если все в порядке, то получаю приглашение командной строки:
Код: plaintext
AP200B#
А если нет, делаю ReConnect. Все вроде вполне прилично работает.

Теперь другая задача: на win98 все работает, а надо загнать программу на WIN2003, она там категорически отказывается работать, а возможности компилировать ее там на VB6 нет (о чем мой другой топик).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MSComm и Telnet
    #36772209
kitealex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот код для управления вашим девайсом по сети


'устанавливаем соединение
Private Sub Command1_Click()
Winsock1.Connect "ip адрес железяки", "23"
End Sub

' шлем конфиг
Private Sub Command2_Click()
Winsock1.SendData "конфиг" & vbCrLf
......
Winsock1.SendData "еще конфиг" & vbCrLf
End Sub

'textbox text1 в котором видно что происходит

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim buffer As String
Winsock1.GetData buffer, vbString
Text1.Text = buffer + Text1.Text & vbCrLf
End Sub
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSComm и Telnet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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