Работа с COM портом

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

Работа с COM портом

Сообщение AndreyG_80 » 15.03.2006 (Ср) 17:28

Всем добрый день.

Как из VB 6.0 работать с COM портом?

Мне нужно передать в COM портом текстовою строку, и считать из него текстовою строку.

Как это сделать, подскажите пожалуста?

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

Сообщение Konst_One » 15.03.2006 (Ср) 17:38

в поиск по форуму MSCOMM

AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

Сообщение AndreyG_80 » 15.03.2006 (Ср) 19:45

Смотрел...
Но, почему-то, не работает.
Как можно проверить, появляется-ли сигнал на COM порте?

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

Сообщение Konst_One » 15.03.2006 (Ср) 21:24

терминалку какую-нибудь запусти и проверь, можно еще тестером , но я думаю, что у тебя случай проще :)

AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

Сообщение AndreyG_80 » 16.03.2006 (Чт) 12:00

Я написал следующий код:

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
MSComm1.Output = "test"
MSComm1.PortOpen = False

К COM порту подключон терминал сбора данных, который ожидает появления данных на COM порте и при появлении данных отображает их на экране. Так вот, пробовал посылать данные с проги которая поставляется с ТСД - работает. А моя прога почему-то не хочет посылать данные в COM порт.

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

Сообщение Konst_One » 16.03.2006 (Чт) 12:18

Код: Выделить всё
with MSComm1

      .CommPort = 1
      .DTREnable = True
      .Handshaking = 2
      .InBufferSize = 1024
      .InputLen = 0
      .InputMode = 0
      .NullDiscard = True
      .OutBufferSize = 512
      .ParityReplace = "?"
      .RThreshold = 1
      .RTSEnable = True
      .Settings = "9600,n,8,1"
      .SThreshold = 1


.PortOpen=True


end with


потом отсылаешь, что тебе надо.

а потом считываешь данные и смотри события:
Код: Выделить всё
Private Sub MSComm1_OnComm()
Dim InBuff As String

   If mnuFileShowEvents.Checked = True Then
      txtTerm.SelStart = Len(txtTerm.Text)
      txtTerm.SelText = "OnComm event, comEv = " & MSComm1.CommEvent & "  " & vbCrLf
   End If

   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.
         If MSComm1.CDHolding = True Then
            StatusBar1.Panels("Status").Text = "Connected"
            shpCD.FillColor = vbGreen
            cmdSend.Visible = True
            Connected = True
         Else
            StatusBar1.Panels("Status").Text = "Disconnected"
            shpCD.FillColor = vbRed
            cmdSend.Visible = False
            Connected = False
         End If
         
      Case comEvCTS  ' Change in the CTS line.
         Me.bCTS = MSComm1.CTSHolding
         If MSComm1.CTSHolding = True Then
            shpCTS.FillColor = vbGreen
         Else
            shpCTS.FillColor = vbRed
         End If
      Case comEvDSR  ' Change in the DSR line.
         ErrMsg = ">>DSR Signal"
         
      Case comEvRing ' Change in the Ring Indicator.
         
         ErrMsg = ">>RING"
         
      Case comEvReceive ' Received RThreshold # of chars.
     
         Me.bReceive = True
         shpReceive.FillColor = vbGreen
'         On Error Resume Next
         InBuff = MSComm1.Input
'         Debug.Print Err.Number & ":" & Err.Description
         Call ScanCom(InBuff)
         shpReceive.FillColor = vbRed
         Me.bReceive = False
         
      Case comEvSend ' There are SThreshold number of
                     ' characters in the transmit buffer.
         Me.bSend = True
         shpSend.FillColor = vbGreen
         Do While MSComm1.OutBufferCount > 0
            DoEvents
         Loop
         shpSend.FillColor = vbRed
         Me.bSend = False
         
      Case comEvEOF ' An EOF character was found in
                    ' the input stream
           
            SMS.SendPrompt = False
           
    End Select



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

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

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

    TopList