Можно попробовать использовать такой код
Код:
; Компилятор - PureBasic 4.51.
ProgramFilename.s=ProgramFilename() ; Имя и путь к исполняемому файлу данной программы
ProgName.s=GetFilePart(ProgramFilename)
a = CreateSemaphore_(#Null,0,1,@ProgName) ; Если прога уже запущена, то завершаем работу этой копии программы.
If a<>0 And GetLastError_()=#ERROR_ALREADY_EXISTS
MessageRequester(ProgName, "Программа уже запущена", #MB_OK|#MB_ICONWARNING)
CloseHandle_(a)
End
EndIf
InitNetwork()
Procedure.s SendModemData(Connect, Command.s)
Protected Result.s="", Count=0, x
Command=Command+Chr(13)+Chr(10)
SendNetworkData(Connect, @Command, Len(Command))
Repeat
Delay(20)
If NetworkClientEvent(Connect)=#PB_NetworkEvent_Data
*mem=AllocateMemory(10000)
If *mem
ReceiveNetworkData(Connect,*mem,10000)
In.s=PeekS(*mem)
FreeMemory(*mem)
Result=Result+In
EndIf
EndIf
Count+1
Until Count>=80
ProcedureReturn Result
EndProcedure
Procedure RestartModem()
Connect=OpenNetworkConnection("192.168.1.1", 23)
If Connect
Delay(100)
SendModemData(Connect, "admin") ; Логин модема.
Delay(1000)
SendModemData(Connect, "admin") ; Пароль модема.
Delay(1000)
SendModemData(Connect, "reboot") ; Команда перезагрузки модема.
Delay(4000)
CloseNetworkConnection(Connect)
EndIf
EndProcedure
Repeat
Delay(30000) ; 30 секунд ожидания.
x1=0 : x2=0
Connect=OpenNetworkConnection("www.google.com", 80)
If Connect
x1=1
CloseNetworkConnection(Connect)
EndIf
Delay(1000)
Connect=OpenNetworkConnection("www.ya.ru", 80)
If Connect
x2=1
CloseNetworkConnection(Connect)
EndIf
If x1=0 And x2=0
RestartModem()
For i=1 To 20
Delay(10000) ; 200 секунд ожидания. Необходимо чтобы модем успел перезагрузиться.
Next i
EndIf
ForEver
В процедуре
RestartModem() нужно указать IP адрес модема, логин и пароль модема.
Ниже задаются пингуемые адреса.
Сейчас это
www.google.com и
www.ya.ru.
Скомпилированная программа.
http://depositfiles.com/files/ax5gm7qpn