|
|
|
| СОздал обьект, пользуюсь методами, а как в текстовое поле загнать, то что считывается - не понямаю.
Может кто уже знает как.
Считывание идёт из порта - COM1
(Атоловский драйвер для сканера.)
Как же отловить тот момент когда на COM порту произошло событие, пришёл сигнал от сканера....
Надо как - то чтобы программа всегда была на чеку.....
Посоветуйте чё нибудь.... | |
|
| |
|
|
|
| Спасибо всё пашет!!!
Повесил всё на событие таймера.
При закрытии формы таймер не удаётся вовремя отключить.
пишу ме.тимеинтервал=0
а он ещё работает и обращается к уже nothing объекту...
ну и ошибка конечно объект нот сет
Теперь не знаю как отключить. | |
|
| |
|
|
|
| работать с СОМ-портом по таймеру - не лучший вариант
почитайте про:
Output
Input
InputLen
PortOpen
Event OnComm()
это все: Member of MSCommLib.MSComm | |
|
| |
|
|
|
| Спасибо !!!
Я использую Scaner1C.dll - для работы со сканером.
Но мне надо как то отлавливать сигнал с ком порта -в какой момент времени он появиться не известно, как же быть без таймера?
(попробую найти, почитать. ) | |
|
| |
|
|
|
| тут - описано как использовать событие
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 | |
|
| |