Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case 2 Text1.Text = "" Dim i For i = 1 To 10000 DoEvents Next i Text1.Text = MSComm1.Input end select text1.text就是串口中所读了取的内容
我的通讯解决方案: 我是一个与下位单片机通讯的程序.每次通讯只发送一个字节,改变奇偶效验位.下位机返回多个数据字节. Private Sub TimLoop_Timer() '******************************************* '读终端即时数据定时器 '定时向各终端轮询记录,保存最近240个数据 'JSarr(0,X) 为终端和数据'//*************************************** Dim OutPutHex(0) As Byte '命令二进制数组 Dim Inbyte() As Byte '定义一个二进制指针放接收到的数据 Dim StrData As String '返加数据转换的字符串 Dim HexL As String '数据低位 Dim HexH As String '数据高位 Dim Indata As String Dim I As Integer Dim J As Integer Dim P As Single '//************************************* '移动时标
If intTime = 0 Then lblTime.Caption = Format(Now, "hh:mm:ss") intTime = 240 lblTime.Left = 240 End If intTime = intTime - 1 lblTime.Left = intTime '**************************************
'************************************** '循环发送数据,读取每台终端返回数据 For J = 1 To IntTs COM.Settings = "4800,m,8,1" '发送命令,标记位为1 OutPutHex(0) = J
If Val(Indata) / 500 <= Val(FgrdData.TextMatrix(J, 3)) Then FgrdData.TextMatrix(J, 3) = Val(Indata) / 500 End If Next J '************************************************ End SubPublic Function sleep(X As Single) Dim dummy Dim starttime As Singlestarttime = TimerDo Until (Timer - starttime) > X If Timer - starttime < -1 Then Exit Do End If dummy = DoEvents() LoopEnd Function不知道你的具体源码,我的通讯方法完成了多个项目,都还可以.MSCOMM控件一直还让人放心的.你的问题有可能是程序,也有可能是下位机.
Select Case MSComm1.CommEvent
Case 2
Text1.Text = ""
Dim i
For i = 1 To 10000
DoEvents
Next i
Text1.Text = MSComm1.Input
end select
text1.text就是串口中所读了取的内容
Private Sub TimLoop_Timer()
'*******************************************
'读终端即时数据定时器
'定时向各终端轮询记录,保存最近240个数据
'JSarr(0,X) 为终端和数据'//***************************************
Dim OutPutHex(0) As Byte '命令二进制数组
Dim Inbyte() As Byte '定义一个二进制指针放接收到的数据
Dim StrData As String '返加数据转换的字符串
Dim HexL As String '数据低位
Dim HexH As String '数据高位
Dim Indata As String
Dim I As Integer
Dim J As Integer
Dim P As Single
'//*************************************
'移动时标
If intTime = 0 Then
lblTime.Caption = Format(Now, "hh:mm:ss")
intTime = 240
lblTime.Left = 240
End If
intTime = intTime - 1
lblTime.Left = intTime
'**************************************
'**************************************
'循环发送数据,读取每台终端返回数据
For J = 1 To IntTs
COM.Settings = "4800,m,8,1" '发送命令,标记位为1
OutPutHex(0) = J
COM.Output = OutPutHex()
sleep (0.1)
Inbyte = COM.Input
COM.Settings = "4800,s,8,1" '发送命令,标记位为1
OutPutHex(0) = 1
COM.Output = OutPutHex()
sleep (0.1)
Inbyte = COM.Input '数据转移到指针
StrData = TranslateData(Inbyte)
HexH = Mid(StrData, 4, 2)
HexL = Mid(StrData, 1, 2)
Indata = "&H" & HexH & HexL
'刷新数组
For I = 1 To 239
JSarr(J, I) = JSarr(J, I + 1)
Next I
'JSarr(J, 240) = Val(Indata) / 500
JSarr(J, 240) = 11.3 + Rnd()
If Val(Indata) / 500 <= Val(FgrdData.TextMatrix(J, 3)) Then
FgrdData.TextMatrix(J, 3) = Val(Indata) / 500
End If
Next J
'************************************************
End SubPublic Function sleep(X As Single)
Dim dummy
Dim starttime As Singlestarttime = TimerDo Until (Timer - starttime) > X
If Timer - starttime < -1 Then
Exit Do
End If
dummy = DoEvents()
LoopEnd Function不知道你的具体源码,我的通讯方法完成了多个项目,都还可以.MSCOMM控件一直还让人放心的.你的问题有可能是程序,也有可能是下位机.