Тест модема

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kirstr
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 25.10.2005 (Вт) 12:01

Тест модема

Сообщение kirstr » 31.10.2005 (Пн) 15:48

Добрый день! Помогите разобраться
Написал код для проверки качества соединения модема
Private Sub Command1_Click()
Modem.Output = "ATDPxxxxxxxx" & Chr$(13)
End Sub

Private Sub Command2_Click()
Modem.Output = "+++" & Chr$(13)
End Sub

Private Sub Command3_Click()
Modem.Output = "AT#E1" & Chr$(13)
End Sub

''E-mail: absoft@mail.natm.ru
Private Sub Form_Load()
On Error GoTo ELine
Modem.CommPort = 1
Modem.Settings = "115200,N,8,1"
Modem.InputLen = 0
Modem.PortOpen = True
Exit Sub
ELine:
Inp = Err.Description
End Sub

Private Sub Form_Unload(Cancel As Integer)
On errir GoTo ErLine
Modem.PortOpen = False
Exit Sub
ErLine:
Debug.Print Err.Description
End Sub


Private Sub Send_Click()
Inp.Text = ""
Modem.Output = boxsend.Text & Chr$(13)
End Sub

Private Sub timer_Timer()
On Error GoTo NoMem
Dim InString As String
If Modem.InBufferCount > 0 Then
''Inp.Text = Modem.InBufferCount
Inp.SelStart = Len(Inp)
Inp.SelText = Modem.Input
End If
Exit Sub
NoMem:
Inp.Text = ""
End Sub
после нажатия кнопки command1 ,я должен получить сообщение от удаленного модема
connect и.т.д и далее login чтобы перейти в коммандный режим +++
но я не получаю эту строку и ссответственно +++ не работает.

kirstr
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 25.10.2005 (Вт) 12:01

Сообщение kirstr » 31.10.2005 (Пн) 17:40

Есть спецы по работе с модемами на VB6...Откликнитесь!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.10.2005 (Пн) 17:53

че кричать то?
уже сказали же реагируй на событие OnComm и накапливай ответ в переменной

Код: Выделить всё
Private Sub MSComm1_OnComm()
Dim InBuff As String

   Select Case MSComm1.CommEvent
   ' Handle each event or error by placing
   ' code below each case statement

   ' Errors
      Case comEventBreak   ' A Break was received.
         ErrMsg = "Break"
      ' These next three timeout values are no longer detected in Win32
      Case comEventCDTO    ' CD (RLSD) Timeout.
      Case comEventCTSTO   ' CTS Timeout.
      Case comEventDSRTO   ' DSR Timeout.
      Case comEventFrame   ' Framing Error
         ErrMsg = "Framing"
      Case comEventOverrun ' Data Lost.
         ErrMsg = "Overrun"
      Case comEventRxOver  ' Receive buffer overflow.
         ErrMsg = "OverFlow"
      Case comEventRxParity   ' Parity Error.
         ErrMsg = "Parity"
      Case comEventTxFull  ' Transmit buffer full.
         ErrMsg = "TX Full"
      Case comEventDCB  ' Unexpected error retrieving DCB]
         ErrMsg = "DBC"
         
      ' Events
      Case comEvCD   ' Change in the CD line.
      Case comEvReceive ' Received RThreshold # of chars.
         InBuff = MSComm1.Input
         Call ScanCom(InBuff)

...

    End Select
End Sub

kirstr
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 25.10.2005 (Вт) 12:01

Сообщение kirstr » 31.10.2005 (Пн) 18:25

И так не полностью вібирается буфер

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.10.2005 (Пн) 21:01

Код: Выделить всё
      .CommPort = 1
      .DTREnable = True
      .Handshaking = 2
      .InBufferSize = 1024
      .InputLen = 0
      .InputMode = 0
      .NullDiscard = True
      .OutBufferSize = 512
      .ParityReplace = "?"
      .RThreshold = 1
      .RTSEnable = True
      .Settings = "115200,n,8,1"
      .SThreshold = 1
     
      .PortOpen = True

kirstr
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 25.10.2005 (Вт) 12:01

Сообщение kirstr » 01.11.2005 (Вт) 9:59

Всем благодарен! Вот такое решение

Private Sub Combo1_Click()
boxSend.Text = Combo1.Text
End Sub

Private Sub Command1_Click()
Modem.Output = "+++"
End Sub

Private Sub Command2_Click()
Modem.Output = "AT#E1" & Chr$(13)

End Sub

'E-mail: absoft@mail.natm.ru
Private Sub Form_Load()
On Error GoTo ELine
Modem.CommPort = 1
Modem.DTREnable = True
Modem.Handshaking = 2
Modem.InBufferSize = 1024
Modem.InputLen = 0
Modem.InputMode = 0
Modem.NullDiscard = True
Modem.OutBufferSize = 512
Modem.ParityReplace = "?"
Modem.RThreshold = 1
Modem.RTSEnable = True
Modem.Settings = "115200,n,8,1"
Modem.SThreshold = 1
Modem.PortOpen = True
Exit Sub
ELine:
Inp = Err.Description
End Sub

Private Sub Form_Unload(Cancel As Integer)
On errir GoTo ErLine
Modem.PortOpen = False
Exit Sub
ErLine:
Debug.Print Err.Description
End Sub

Private Sub Send_Click()
Modem.Output = boxSend.Text & Chr$(13)
End Sub

Private Sub timer_Timer()
On Error GoTo NoMem
Dim InString As String
If Modem.InBufferCount > 0 Then
'Inp.Text = Modem.InBufferCount
Inp.SelStart = Len(Inp)
Inp.SelText = Modem.Input
End If
Exit Sub
NoMem:
Inp.Text = ""
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 136

    TopList