Еще раз о MSComm Control (очень прошу - ПОМОГИТЕ!!!)

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

Еще раз о MSComm Control (очень прошу - ПОМОГИТЕ!!!)

Сообщение Oleg_ss » 15.04.2003 (Вт) 5:29

Не работает даже пример из MSDN

Private Sub Form_Load()
Dim Instring As String
MSComm1.CommPort = 1
MSComm1.Settings = "115200,N,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
MSComm1.Output = "PROSTO STROKA" & Chr$(13)
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCrLf)
MSComm1.PortOpen = False
End Sub

Соединяю нуль кабелем COM1 и COM2. Запускаю два гипертерминала на оба порта - все работает.
Запускаю свою прогу. В гипертерминале появляется наша запись "PROSTO STROKA". А вот с гипертерминала нет ничего!!! Ни один символ с клавы не проходит!!!
В чем дело?
Использую Васик 6.0 и ХРень

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.04.2003 (Вт) 8:25

Если я правильно понял, то все это происходит на одной машине.
Если это так, то работать не должно:
При загрузке формы открывается первый порт и посылается строка, за тем он же и слушается (первый), должен быть второй.
Напиши два приложения и настрой их на первый и второй порты - все должно работать.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Oleg_ss
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 15.04.2003 (Вт) 5:19

Вместо второго приложения запускаю гипертерминал

Сообщение Oleg_ss » 15.04.2003 (Вт) 8:37

Зачем писать два приложения?
Моя прога работает с COM1, а гипертерминал с COM2
Оба порта соеденины нуль кабелем
Если запускать два гипертерминала на оба порта, то при нажатии клавиши на первом, видим ответ на втором и наоборот.
Теперь на первый COM напускаем мою прогу. Во втором читаем строку, а вот ответ получить не могу :(

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 15.04.2003 (Вт) 8:53

Я когда-то писал прогу, читающую данные с АТС (звонки, короче).
У меня была такая же проблема.
Все оказалось просто - я не указал все параметры.
Вот код, проверь:

Private Sub Form_Load()
Me.Caption = ProgramName

With CommPort
On Error GoTo ErrInit
.CommPort = NumPort
.Settings = "9600,N,8,1"
.InputLen = 0
.PortOpen = True
.DTREnable = True ' Выставить готовность терминала
.RThreshold = 1 ' обрабатывать при получении 1 байта
.Handshaking = comRTS
.RTSEnable = True
On Error GoTo 0
End With
Exit Sub

ErrInit:
MsgBox "Не возможно инициализировать порт", vbCritical, ProgramName

End Sub

=================================

Private Sub CommPort_OnComm()
Select Case CommPort.CommEvent
Case Is = comEvReceive
Buffer = Buffer & CommPort.Input
End Select
End Sub[/code]
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Oleg_ss
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 15.04.2003 (Вт) 5:19

Что за строка .Handshaking = comRTS ?

Сообщение Oleg_ss » 15.04.2003 (Вт) 9:11

СПАСИБО!!!
Все заработало!!!
Видимо эти две строки сделали свое дело
.DTREnable = True ' Выставить готовность терминала
.RThreshold = 1 ' обрабатывать при получении 1 байта

Ну готовность терминала понятно, а что значит обрабатывать 1 байт
и чему равно comRTS?
Если можно подробнее...


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 96

    TopList