如何接收从串口发来的数据

IC00002 2003-09-21 10:24:32
用串口和硬件设备通讯,如何接收?
...全文
60 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuperTitan008 2003-09-21
  • 打赏
  • 举报
回复
Private Sub Timer1_Timer()
On Error Resume Next
Dim buffer As Variant
Dim bytereceives() As Byte
'Dim PulseData(10240) As Long
Dim ByteNumber As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim display As String
Dim disp As String
Dim disp2 As String
Dim disp3 As String
Dim imod As Integer
Dim opFileName As String
Dim slong As Long
Dim pnum As Integer
Dim ubd As Integer
Dim lab3 As Long

commandid = 0
k = 0

display = ""
disp2 = ""
disp3 = ""
'Command1.Caption = "Display"
ppnum = 0

ByteNumber = MSComm1.InBufferCount
buffer = MSComm1.Input
Timer1.Enabled = False
Timer1.Interval = 0
MSComm1.RThreshold = 1

If PicInit = False Then ReceiveOk
bytereceives() = buffer
'bytestoread = LenB(buffer)
'MSComm1.RThreshold = 1
ubd = UBound(bytereceives)
For i = 0 To UBound(bytereceives)
bytereceived(i) = bytereceives(i)
Next
'For i = 0 To 255
'bytereceived(i) = bytereceives(i + 256)
'Next

'For i = 256 To 511
'bytereceived(i) = bytereceives(i - 256)
'Next

'For i = 512 To UBound(bytereceives)
'bytereceived(i) = bytereceives(i)
'Next



For i = 0 To UBound(bytereceives)
'bytereceived(i) = bytereceived(i) Xor 170 'PassWord_Data 'Xor &H55
'bytereceived(i) = Not bytereceived(i)
If bytereceived(i) < 16 Then
disp = "0" + Hex(bytereceived(i))
Else
disp = Hex(bytereceived(i))
End If
disp = disp + " "
display = display + disp
disp2 = disp2 + CStr(bytereceived(i)) + " "
imod = i Mod 2
If imod > 0 Then
slong = 0
For j = 0 To 255
slong = slong + bytereceived(i - 1)
Next j
slong = slong + bytereceived(i)
slong = slong * 12 / 11.0592
PulseData(k) = slong
k = k + 1
disp3 = disp3 + CStr(slong) + " "
End If
Next
Text1.Text = display
Text2.Text = disp2
Text3.Text = disp3
pnum = ubd / 4
Label1.Caption = "总共有" + CStr(pnum) + "个脉冲!"
Pnumer = pnum
pnum = ubd / 2 - 1
PulseNum = pnum
disp = ""
lab3 = 0
For k = 0 To pnum
disp = disp + CStr(PulseData(k)) + " "
lab3 = lab3 + PulseData(k)
Next k
PulseTime = lab3
Text4.Text = disp
'frmdisp.Label3.Caption = CStr(lab3)
Select Case FrmId
Case 0
Call fenxi_sub
Call Disp_Frm
Case 1
Call Tv_fenxi
Case 3
Call Set_fenxi
End Select
'frmdisp.Show
FrmTv.Picture2.SetFocus
End Sub
SuperTitan008 2003-09-21
  • 打赏
  • 举报
回复
Private Sub MSComm1_OnComm()
On Error Resume Next

Dim comeventmessage As String
Select Case MSComm1.CommEvent
Case comEvCD
comeventmessage = "Change in the CD line."
Case comEvCTS
comeventmessage = "Change in the CTS line."
Case comEvDSR
comeventmessage = "Change in the DSR line."
Case comEvRing
comeventmessage = "Change in the RI line."

Case comEvReceive
comeventmessage = "Receive buffer has RThreshold number of characters."
Timer1.Enabled = True
MSComm1.RThreshold = 0
Timer1.Interval = 250

Case comEvSend
comeventmessage = "Transmit buffer has SThreshold number of characters."


Case comEvEOF
comeventmessage = "EOF character (1AH) received."

' error
Case comEventBreak
comeventmessage = "A Break was received."
Case comEventCDTO
comeventmessage = "CD (RLSD) Timeout."
Case comEventCTSTO
comeventmessage = "DSR Timeout."
Case comEventFrame
comeventmessage = "Framing Error."
Case comEventOverrun
comeventmessage = "Overrun; data Lost."
Case comEventRxOver
comeventmessage = "Receive buffer overflow."
Case comEventRxParity
comeventmessage = "Parity Error."
Case comEventTxFull
comeventmessage = "Transmit buffer full."
Case comEventDCB
comeventmessage = "Unexpected error retrieving DCB."

End Select

End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧