Article ID: 194923
Article Last Modified on 3/7/2005
Const Xon = &H11
Const Xoff = &H13
Private Sub Command1_Click()
MSComm1.Output = "123456789" & Chr$(Xoff)
End Sub
Private Sub Command2_Click()
MSComm1.Output = "987654321" & Chr$(Xon)
End Sub
Private Sub Form_Load()
Form1.Caption = "App1"
With MSComm1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
End With
Command1.Caption = "&Send Xoff"
Command2.Caption = "Send &Xon"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Const Xon = &H11
Const Xoff = &H13
Private Sub Form_Load()
Form1.Caption = "App2"
With MSComm1
.CommPort = 2
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
End With
Text1.Text = ""
Label1.Caption = "No input yet"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
Dim InBuff As String
Select Case MSComm1.CommEvent
' Handle each event or error by placing
' code below each case statement.
' This template is found in the Example
' section of the OnComm event help topic
' in VB help.
' Errors
Case comEventBreak ' A Break was received.
Case comEventCDTO ' CD (RLSD) Timeout.
Case comEventCTSTO ' CTS Timeout.
Case comEventDSRTO ' DSR Timeout.
Case comEventFrame ' Framing Error
Case comEventOverrun ' Data Lost.
Case comEventRxOver ' Receive buffer overflow.
Case comEventRxParity ' Parity Error.
Case comEventTxFull ' Transmit buffer full.
Case comEventDCB ' Unexpected error retrieving DCB]
' Events
Case comEvCD ' Change in the CD line.
Case comEvCTS ' Change in the CTS line.
Case comEvDSR ' Change in the DSR line.
Case comEvRing ' Change in the Ring Indicator.
Case comEvReceive ' Received RThreshold # of chars.
Label1.Caption = "Input"
InBuff = MSComm1.Input
Call ParseChars(InBuff)
Case comEvSend ' There are SThreshold number of
' characters in the transmit
' buffer.
Case comEvEOF ' An EOF character was found in
' the input stream.
End Select
End Sub
Sub HandleInput(InBuff As String)
' This is where you will process your input. This
' includes trapping characters, parsing strings,
' separating data fields, etc. For this case, you
' are simply going to display the data in the text
' box.
Text1.Text = Text1.Text & InBuff
End Sub
Sub ParseChars(ByVal InString As String)
Dim temp As String
Dim x As Long
Dim OutString as String
For x = 1 To Len(InString)
temp = Mid$(InString, x, 1)
If temp = Chr$(Xoff) Then
Label1.ForeColor = vbRed
Label1.Caption = "Xoff received"
temp = ""
ElseIf temp = Chr$(Xon) Then
Label1.ForeColor = vbGreen
Label1.Caption = "Xon received"
temp = ""
End If
OutString = OutString & temp
temp = ""
Next x
Call HandleInput(OutString)
End Sub
Additional query words: mscomm serial xon xoff
Keywords: kbhowto kbio kbcode KB194923