1、经典的串口调试工具源代码二经典的串口调试工具源代码(二)Private Sub cmdswitch_Click()On Error GoTo Err If MSComm.PortOpen = True Then ComSwitch = True Else ComSwitch = False End If If ComSwitch = False Then StatusBar1.Panels(1).Text = Connected mnuconnect.Caption = Dis&connect OpenCom 打开串口 ComSwitch = True Else CloseCom 关闭串口 C
2、omSwitch = False StatusBar1.Panels(1).Text = Disconnected mnuconnect.Caption = &Connect StatusBar1.Panels(2).Text = COM & MSComm.CommPort StatusBar1.Panels(3).Text = MSComm.Settings If (OutputAscii) Then StatusBar1.Panels(4) = ASCII Else StatusBar1.Panels(4) = HEX End If End If Err:End SubPrivate Su
3、b Form_Load()On Error GoTo Err lblWEB.FontUnderline = True WEB上加下划线 lblWEB.ForeColor = vbBlue 蓝色显示WEB txtsend.Text = 载入发送信息 If MSComm.PortOpen = True Then MSComm.PortOpen = False 先判断串口是否打开,如果打开则先关闭 初始化串口 Call Comm_initial(Val(Mid(cbocom.Text, 4, 1), cbobaudrate.Text, Left(cboparitybit.Text, 1), cbod
4、atabit.Text, cbostopbit.Text) 数据位载入 cbodatabit.AddItem 8 cbodatabit.AddItem 7 cbodatabit.AddItem 6 停止位载入 cbostopbit.AddItem 1 cbostopbit.AddItem 1.5 cbostopbit.AddItem 2Err:End SubPrivate Sub hexReceive()On Error GoTo Err Dim ReceiveArr() As Byte 接收数据数组 Dim receiveData As String 数据暂存 Dim Counter As
5、Integer 接收数据个数计数器 Dim i As Integer 循环变量 If (MSComm.InBufferCount 0) Then Counter = MSComm.InBufferCount 读取接收数据个数 receiveData = 清缓冲 ReceiveArr = MSComm.Input 数据放入数组 For i = 0 To (Counter - 1) Step 1 数据格式处理 If (ReceiveArr(i) = 65535 Then TxtReceive.Text = End If End IfErr:End SubPrivate Sub hexSend()O
6、n Error Resume Next Dim outputLen As Integer 发送数据长度 Dim outData As String 发送数据暂存 Dim SendArr() As Byte 发送数组 Dim TemporarySave As String 数据暂存 Dim dataCount As Integer 数据个数计数 Dim i As Integer 局部变量 outData = UCase(Replace(txtsend.Text, Space(1), Space(0) 先去掉空格,再转换为大写字母 outData = UCase(outData) 转换成大写 ou
7、tputLen = Len(outData) 数据长度 For i = 0 To outputLen TemporarySave = Mid(outData, i + 1, 1) 取一位数据 If (Asc(TemporarySave) = 48 And Asc(TemporarySave) = 65 And Asc(TemporarySave) = 70) Then dataCount = dataCount + 1 Else Exit For Exit Sub End If Next If dataCount Mod 2 0 Then 判断十六进制数据是否为双数 dataCount = d
8、ataCount - 1 不是双数,则减1 End If outData = Left(outData, dataCount) 取出有效的十六进制数据 ReDim SendArr(dataCount / 2 - 1) 重新定义数组长度 For i = 0 To dataCount / 2 - 1 SendArr(i) = Val(&H + Mid(outData, i * 2 + 1, 2) 取出数据转换成十六进制并放入数组中 Next SendCount = SendCount + (dataCount / 2) 计算总发送数 txtTXcount.Text = TX: & SendCoun
9、t MSComm.Output = SendArr 发送数据End SubPrivate Sub OpenCom() 打开串口On Error GoTo Err If MSComm.PortOpen = True Then MSComm.PortOpen = False 先判断串口是否打开,如果打开则先关闭 Call Comm_reSet(Val(Mid(cbocom.Text, 4, 1), cbobaudrate.Text, Left(cboparitybit.Text, 1), cbodatabit.Text, cbostopbit.Text) 串口设置 If MSComm.PortOp
10、en = True Then txtstatus.Text = STATUS: & cbocom.Text & OPEND, & cbobaudrate.Text & , & Left(cboparitybit.Text, 1) & , & cbodatabit.Text & , & cbostopbit.Text cmdswitch.Caption = 关闭串口 mnuconnect.Caption = disconnect ImgSwitch.Picture = LoadPicture(f:我的VB串口调试软件图片kai.jpg) 显示串口已经打开的图标 ImgSwitchon.Visib
11、le = True ImgSwitchoff.Visible = False Else txtstatus.Text = STATUS:COM Port Cloced 串口状态显示 cmdswitch.Caption = 打开串口 mnuconnect.Caption = connect ImgSwitch.Picture = LoadPicture(f:我的VB串口调试软件图片guan.jpg) 显示串口已经关闭的图标 ImgSwitchoff.Visible = True ImgSwitchon.Visible = False End IfErr: End SubPrivate Sub t
12、extReceive()On Error GoTo Err InputSignal = MSComm.Input ReceiveCount = ReceiveCount + LenB(StrConv(InputSignal, vbFromUnicode) 计算总接收数据 If DisplaySwitch = False Then 显示接收文本 TxtReceive.Text = TxtReceive.Text & InputSignal 单片机内存的值用TextReceive显示出 TxtReceive.SelStart = Len(TxtReceive.Text) 显示光标位置 End If
13、 txtRXcount.Text = RX: & ReceiveCount 接收字节数显示 If chkautoclear.Value = 1 Then 自动清空判断 If ReceiveCount = 65535 Then TxtReceive.Text = End If End IfErr: End SubPrivate Sub textSend()On Error GoTo Err If ModeSend = True Then OutputSignal = FileData 发送文件 Else OutputSignal = txtsend.Text 发送文本 End If SendCo
14、unt = SendCount + LenB(StrConv(OutputSignal, vbFromUnicode) 计算总发送数 txtTXcount.Text = TX: & SendCount 发送字节数显示Err: End SubPrivate Sub Image1_Click()End SubPrivate Sub mnuautosend_Click()On Error GoTo Err If TmrAutoSend.Enabled = True Then 如果有效则,自动发送 If MSComm.PortOpen = True Then 串口状态判断 ChkAutoSend.Va
15、lue = 1 TmrAutoSend.Interval = Val(TxtAutoSendTime) 设置自动发送时间 mnuautosend.Caption = 取消自动发送 TmrAutoSend.Enabled = True 打开自动发送定时器 Else mnuautosend.Caption = 自动发送 ChkAutoSend.Value = 0 串口没有打开去掉自动发送 MsgBox 串口没有打开,请打开串口, 48, 串口调试助手 如果串口没有被打开,提示打开串口 End If ElseIf TmrAutoSend.Enabled = False Then 如果无效,不发送 m
16、nuautosend.Caption = autosend TmrAutoSend.Enabled = False 关闭自动发送定时器 End IfErr:End SubPrivate Sub mnucom_Click(Index As Integer) Dim i As Integer Dim OldPort As Long On Error Resume Next With MSComm OldPort = .CommPort If MSComm.PortOpen Then .PortOpen = False .CommPort = Index .PortOpen = True If Err.Number 0 Then This should not happen. MsgBox Com & Index & is not available. & _ vbCrLf & Err.Description Err.Clear .CommPort = OldPort Else For i = 1 To 4 mnucom(i).Checked = False Next i mnucom(Index).Checked = True End If Else .CommPort = Index For i = 1 To 4 mnucom(i).Checked = F
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1