Отправка SMS с модема: исправить код - VB
Формулировка задачи:
Пишу на VB6 программу SMS-оповещений о различных событиях на сервере. Лог программы:
Выдаёт
Листинг программы
- Чтение файла sms.cfg
- Чтение файла tasks.cfg
- Открываем порт COM4
- Успешно
- >> AT
- <<
- OK
- >> AT+CLIP=1
- <<
- OK
- >> AT+CMGF=1
- <<
- OK
- >> AT+CMGS="+79166366660" <<
- ERROR
- >> THIS IS A TEST MESSAGE
ERROR
наAT+CMGS="номер"
почему такое может быть? Через HyperTerminal тоже пробовал вручную вбивать - ошибка. Модем - Alcatel one touch x090s Код может немного кривоват, но вроде ошибок нет
Листинг программы
- Private Sub Command1_Click()
- Dim z As String
- z = SendCmd("AT" & vbCrLf)
- z = SendCmd("AT+CLIP=1" & vbCrLf)
- z = SendCmd("AT+CMGF=1" & vbCrLf)
- z = SendCmd("AT+CMGS=" & Chr(34) & "+79166366660" & Chr(34) & vbCrLf)
- z = SendCmd("THIS IS A TEST MESSAGE" & vbCrLf & Chr(26))
- End Sub
- Private Sub ModemTimer_Timer()
- If Not Modem.PortOpen Then
- On Error Resume Next
- Modem.PortOpen = True
- Log.Text = Log.Text & "ÎòêðûâГ*ГҐГ¬ ïîðò COM" & Trim(Str(Modem.CommPort)) & vbCrLf
- If Modem.PortOpen Then
- Log.Text = Log.Text & "ÓñïåøГ*Г®" & vbCrLf
- ModemState = STATE_ON
- Else
- Log.Text = Log.Text & "ГЋГёГЁГЎГЄГ* îòêðûòèÿ" & vbCrLf
- ModemState = STATE_OFF
- End If
- End If
- End Sub
- Private Function SendCmd(c As String) As String
- LastCmd.Text = ""
- Dim ModemOut As String
- Dim ModemIn As String
- Dim Counter As Long
- Counter = 0
- If Modem.PortOpen Then
- ModemState = STATE_BUSY
- ModemOut = c
- Modem.Output = ModemOut
- Log.Text = Log.Text & ">> " & ModemOut
- End If
- If Modem.PortOpen Then
- ModemIn = Modem.Input
- ModemState = STATE_BUSY
- Else
- ModemState = STATE_OFF
- End If
- Do
- Counter = Counter + 1
- Sleep 10
- If Len(ModemIn) > 0 Then
- Log.Text = Log.Text & "<< " & ModemIn
- LastCmd.Text = ModemIn
- End If
- Loop Until Len(ModemIn) > 0 Or Counter >= 500
- If Trim(ModemIn) = "" Then ModemIn = ""
- ModemState = STATE_ON
- SendCmd = ModemIn
- End Function
Решение задачи: «Отправка SMS с модема: исправить код»
textual
Листинг программы
- 'Îáúÿâëÿåì API ГґГіГ*êöèè
- 'Äëÿ îòêðûòèÿ ñîåäèГ*ГҐГ*ГЁГї ГЁ ïîëó÷åГ*ГЁГї ГҐГЈГ® äåñêðèïòîðГ*
- Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
- 'Äëÿ ГіГЎГЁГўГ*Г*ГЁГї äåñêðèïòîðГ*
- Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
- 'Äëÿ îáðГ*Г№ГҐГ*ГЁГї ГЄ URL
- Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
- Private Sub Command1_Click()
- Dim a As Long, b As Variant, Prefix As String, Message As String
- 'ñîçäГ*ГҐГ¬ ñîåäèГ*ГҐГ*ГЁГҐ ГЁ ïîëó÷Г*ГҐГ¬ ГҐГЈГ® äåñêðèïòîð
- a = InternetOpen("Microsoft Internet Explorer 5.0", 0, vbNullString, vbNullString, 0)
- 'îáðГ*Г№Г*åìñÿ ГЄ ñöåГ*Г*ðèþ Г± Г§Г*Г¤Г*Г*Г*ûìè ГЇГ*Г°Г*ìåòðГ*ìè
- b = InternetOpenUrl(a, "http://www.mts.ru:5051/cgi-bin/cgi.exe?function=sms_send&MMObjectType=0&MMObjectID=&To=" & Prefix & txtNumber & "&Msg=" & Message & "&Hour=23&Min=59&Day=31&Mon=12&Year=2005&Lang=2", vbNullString, 0, 0, 0)
- 'Г§Г*êðûâГ*ГҐГ¬ ñîåäèГ*ГҐГ*ГЁГҐ
- InternetCloseHandle a
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д