ник: fylhtqrf
тут - описано как использовать событие
http://support.microsoft.com/kb/194922/en-us
http://support.microsoft.com/kb/158008/en-us
понадобится библиотека mscomctl32.ocx
regsvr32 mscomctl32.ocx
Принцип примерно такой -создаешь форму на нее выносишь контрол (вставка элемент activeX)- в форме пишеш обработчик вида
MSComm1- имя контрола.
Private Sub MSComm1_OnComm()
....
end sub
К сож перехватить это событие написав свой модуль класса не удалось (:
И еще примерчик
Public Sub Main()
'Новый элемент управления MSComm
Dim MSComm1 As MSComm
Set MSComm1 = New MSComm
' Буфер для хранения входной строки.
Dim Buffer As String
' Использовать последовательный порт COM3.
MSComm1.CommPort = 3
' 9600 бод, без проверки четности, 8 бит данных, 1 стоповый бит.
MSComm1.Settings = "9600,N,8,1"
' Элемент управления будет читать всё содержимое буфера при использовании свойства Input.
MSComm1.InputLen = 0
' Открытие последовательного порта.
MSComm1.PortOpen = True
Debug.Print ("Открытие последовательного порта.")
' Указать элементу управления, чтобы свойство Input возвращало текстовые данные.
MSComm1.InputMode() = InputModeConstants.comInputModeText
'Очистка буфера приема.
MSComm1.InBufferCount() = 0
' Отправка модему AT-команды.
MSComm1.Output = "ATI3" & Chr(13)
Debug.Print ("Отправка модему AT-команды.")
Debug.Print ("Ожидание возврата данных на последовательный порт...")
' Убедиться в том, что модем ответил "OK".
' Ожидание возврата данных на последовательный порт.
Do
Buffer = Buffer & MSComm1.Input
Loop Until InStr(Buffer, "OK" & vbCrLf)
MsgBox Buffer
' Чтение данных отклика "OK" через последовательный порт.
' Закрытие последовательного порта.
Debug.Print ("Чтение данных отклика OK через последовательный порт.")
MSComm1.PortOpen = False
Debug.Print ("Закрытие последовательного порта.")
End Sub