Как получать данные с MSComm?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexey-VB
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 11.08.2006 (Пт) 15:10

Как получать данные с MSComm?

Сообщение Alexey-VB » 28.11.2006 (Вт) 23:00

Нужно использовать MSComm в проге для отправления команд в Com port
и получения ответов от него же.

Как отправлять я научился: MSComm1.Output = "любая команда" & vbCrLf

Получать можно так: Text1.SelText = MSComm1.Input

Вот только проблема в том, куда вставить строку получения данных из Com порта?

Например в Winsock есть функция DataArrival, котороя получает все что приходит на порт.
А как реализовать это в MSComm1?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.11.2006 (Вт) 23:14

У MSComm всего одно событие, так что с выбором просто :-D
Изображение

Alexey-VB
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 11.08.2006 (Пт) 15:10

Сообщение Alexey-VB » 29.11.2006 (Ср) 0:50

Я знаю, это событие OnComm.
Но какую строку написать в это событие, что бы все данные приходящие с порта, сразу попадали на TextBox или в переменную?

clickhere
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2006 (Чт) 0:09
Откуда: Минск,Беларусь

Сообщение clickhere » 30.11.2006 (Чт) 0:29

Private Sub Timer1_Timer()

Text1.Text = Text1.Text + mstrInp
If Len(mstrInp) > 0 Then Text1.SelLength = Len(Text1.Text)
mstrInp = ""

End Sub
'-------------------------------------------------------------------------------
Private Sub Scan()
Do
DoEvents
If MSComm1.PortOpen = True Then
mstrInp = mstrInp + MSComm1.Input
End If
Loop Until MSComm1.PortOpen = False

End Sub

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

Сообщение Konst_One » 30.11.2006 (Чт) 11:57

так не делай, плохо :evil:

поищи примеры, я выкладывал уже не один раз

clickhere
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2006 (Чт) 0:09
Откуда: Минск,Беларусь

Сообщение clickhere » 06.12.2006 (Ср) 14:12

Ладно!!! Тогда так:

Private Sub Timer1_Timer()
Dim Inp As String
Inp = MSComm1.Input
Text1.Text = Text1.Text & Inp
If Len(Inp) > 0 Then Text1.SelLength = Len(Text1.Text)
'Слежение за вводом
'MultiLine у TextBoxa в True и включить ScrollBarы
Inp = ""

End Sub


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList