【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“VB串口调试助手源代码 - 电子电信”一文,供大家参考学习!
VB 串口调试助手源代码Dim OutputAscii As BooleanDim InputString As StringDim OutputString As String 变量定义Option Explicit ’ 强制显式声明Dim ComSwitch As Boolean ’ 串口开关状态判断Dim FileData As String ’ 要发送的文件暂存Dim SendCount As Long ’ 发送数据字节计数器Dim ReceiveCount As Long ’ 接收数据字节计数器Dim InputSignal As String ’ 接收缓冲暂存Dim OutputSignal As String ’ 发送数据暂存Dim DisplaySwitch As Boolean ’ 显示开关Dim ModeSend As Boolean ’ 发送方式判断Dim Savetime As Single ’ 时间数据暂存 延时用Dim SaveTextPath As String ’ 保存文本路径 网页超链接申明Private Declare Function ShellExecute Lib quotshell32.dllquot Alias quotShellExecuteAquot ByVal hwnd As LongByVal lpOperation As String ByVal lpFile As String ByVal lpParameters As String ByVal lpDirectory AsString ByVal nShowCmd As Long As LongPrivate Sub CloseCom 关闭串口On Error GoTo Err If MSComm.PortOpen True Then MSComm.PortOpen False’ 先判断串口是否打开,如果打开则先关闭 1 txtstatus.Text quotSTATUS:COM Port Clocedquot ’ 串口状态显示 mnuconnect.Caption quot断开串口quot cmdswitch.Caption quot打开串口quot ImgSwitch.Picture LoadPicturequotf:我的 VB串口调试软件图片guan.jpgquot 显示串口已经关闭的图标 ImgSwitchoff.Visible True ImgSwitchon.Visible FalseErr:End SubPrivate Sub UpdateStatus If MSComm.PortOpen Then StatusBar1.Panels1.Text quotConnectedquot mnuautosend.Caption quot自动发送quot mnuconnect.Caption quot断开串口quot Else StatusBar1.Panels1.Text quot断开串口quot mnuautosend.Caption quotdisautosendquot mnuconnect.Caption quot打开串口quot End If StatusBar1.Panels2.Text quotCOMquot amp MSComm.CommPort StatusBar1.Panels3.Text MSComm.Settings If OutputAscii Then StatusBar1.Panels4 quotASCIIquot Else StatusBar1.Panels4 quotHEXquot End If On Error GoTo Err If ChkAutoSend.Value 1 Then ’ 如果有效则,自动发送 If MSComm.PortOpen True Then ’ 串口状态判断 mnuautosend.Caption quotDisampautosendquot TmrAutoSend.Interval ValTxtAutoSendTime ’ 设置自动发送时间 TmrAutoSend.Enabled True ’ 打开自动发送定时器 Else mnuautosend.Caption quotautosendquot ChkAutoSend.Value 0 ’ 串口没有打开去掉自动发送 MsgBox quot串口没有打开,请打开串口quot 48 quot串口调试助手quot 如果串口没有被打开,提示打开串口 End If ElseIf ChkAutoSend.Value 0 Then ’ 如果无效,不发送 mnuautosend.Caption quotautosendquot TmrAutoSend.Enabled False ’ 关闭自动发送定时器 End IfErr:End SubPrivate Sub CmdSendFile_Click 发送文件On Error GoTo Err If MSComm.PortOpen True Then ’ 如果串口打开了,则可以发送数据 If FileData quotquot Then ’ 判断发送数据是否为空 MsgBox quot发送的文件为空quot 16 quot串口调试助手quot ’ 发送数据为空则提示 Else If ChkHexReceive.Value 1 Then ’ 如果按十六进制接收时,按二进制发送,否则按文本发送 MSComm.InputMode comInputModeBinary ’ 二进制发送 2 Else MSComm.InputMode comInputModeText ’ 文本发送 End If MSComm.Output TrimFileData ’ 发送数据 ModeSend True ’ 设置文本发送方式 End If Else MsgBox quot串口没有打开,请打开串口quot 48 quot串口调试助手quot 如果串口没有被打开,提示打开串口 End IfErr:End SubPrivate Sub Comm_initialPort As Byte BaudRate As String ParityBit As String DataBit As IntegerStopBit As Integer On Error GoTo ErrorTrap 错误则跳往错误处理 If MSComm.PortOpen True Then MSComm.PortOpen False’ 先判断串口是否打开,如果打开则先关闭 MSComm.CommPort Port ’ 设定端口 MSComm.Settings BaudRate amp quotquot amp ParityBit amp quotquot amp DataBit amp quotquot amp StopBit 设置波特率,无校验,8 位数据位,1 位停止位 MSComm.InBufferSize 1024 ’ 设置接收缓冲区为 1024 字节 MSComm.OutBufferSize 4096 ’ 设置发送缓冲区为 4096 字节 MSComm.InBufferCount 0 ’ 清空输入缓冲区 MSComm.OutBufferCount 0 ’ 清空输出缓冲区 MSComm.SThreshold 1 ’ 发送缓冲区空触发发送事件 MSComm.RThreshold 1 ’ 每 X 个字符到接收缓冲区引起触发接收事件 MSComm.OutBufferCount 0 ’ 清空发送缓冲区 MSComm.InBufferCount 0 ’ 滑空接收缓冲 MSComm.PortOpen True ’ 打开串口 If MSComm.PortOpen True Then txtstatus.Text quotSTATUS:quot amp cbocom.Text amp quot OPEND,quot amp cbobaudrate.Text amp quotquot ampLeftcboparitybit.Text 1 amp quotquot amp cbodatabit.Text amp quotquot amp cbostopbit.Text Else txtstatus.Text quotSTATUS:COM Port Clocedquot ’ 串口没打开时,提示串口关闭状态 End If Exit SubErrorTrap: ’ 错误处理 Select Case Err.Number Case comPortAlreadyOpen ’ 如果串口已经打开,则提示 MsgBox quot没有发现此串口或被占用quot 49 quot串口调试助手quot CloseCom Case Else MsgBox quot没有发现此串口或被占用quot 49 quot串口调试助手quot CloseComEnd Select Err.ClearEnd SubPrivate Sub Comm_reSetPort As Byte BaudRate As String ParityBit As String DataBit As IntegerStopBit As Integer 3 On Error GoTo ErrorHint ’ 错误则跳往错误处理 If MSComm.PortOpen True Then MSComm.PortOpen False’ 先判断串口是否打开,如果打开则先关闭 MSComm.CommPort Port ’ 设定端口 MSComm.Settings BaudRate amp quotquot amp ParityBit amp quotquot amp DataBit amp quotquot amp StopBit 设置波特率,无校验,8 位数据位,1 位停止位 MSComm.PortOpen True ’ 打开串口 If MSComm.PortOpen True Then cmdswitch.Caption quot关闭串口quot ImgSwitch.Picture LoadPicturequotf:我的 VB串口调试软件图片kai.jpgquot 显示串口已经打开的图标 ImgSwitchoff.Visible False mnuconnect.Caption quotdisconnectquot ImgSwitchon.Visible True txtstatus.Text quotSTATUS:quot amp cbocom.Text amp quot OPEND,quot amp cbobaudrate.Text amp quotquot ampLeftcboparitybit.Text 1 amp quotquot amp cbodatabit.Text amp quotquot amp cbostopbit.Text Else cmdswitch.Caption quot打开串口quot ImgSwitch.Picture LoadPicturequotf:我的 VB串口调试软件图片guan.jpgquot 显示串口已经关闭的图标 ImgSwitchon.Visible False ImgSwitchoff.Visible True txtstatus.Text quotSTATUS:COM Port Clocedquot End If Exit SubErrorHint: ’ 错误处理 Select Case Err.Number Case comPortAlreadyOpen ’ 如果串口已经打开,则提示 MsgBox quot没有成功,请重试quot vbExclamation quot串口调试助手quot CloseCom ’ 调用关闭串口函数 Case Else MsgBox quot没有成功,请重试quot vbExclamation quot串口调试助手quot CloseCom ’ 调用关闭串口函数End Select Err.Clear ’ 清除 Err 对象的属性End SubPrivate Sub Command1_ClickEnd SubPrivate Sub cbobaudrate_Change Call Comm_reSetValMidcbocom.Text 4 2 cbobaudrate.Text Leftcboparitybit.Text 1cbodatabit.Text cbostopbit.Text 串口设置End SubPrivate Sub cbocom_Change Call Comm_reSetValMidcbocom.Text 4 2 cbobaudrate.Text Leftcboparitybit.Text 1cbodatabit.Text cbostopbit.Text 串口设置End SubPrivate Sub cbodatabit_Change Call Comm_reSetValMidcbocom.Text 4 2 cbobaudrate.Text Leftcboparitybit.Text 1cbodatabit.Text cbostopbit.Text 串口设置End Sub 4Private Sub cboparitybit_Change Call Comm_reSetValMidcbocom.Text 4 2 cbobaudrate.Text Leftcboparitybit.Text 1cbodatabit.Text cbostopbit.Text 串口设置End SubPrivate Sub cbostopbit_Change Call Comm_reSetValMidcbocom.Text 4 2 cbobaudrate.Text Leftcboparitybit.Text 1cbodatabit.Text cbostopbit.Text 串口设置End SubPrivate Sub chkautosend_ClickOn Error GoTo Err If ChkAutoSend.Value 1 Then ’ 如果有效则,自动发送 If MSComm.PortOpen True Then ’ 串口状态判断 mnuautosend.Caption quot取消自动发送quot TmrAutoSend.Interval ValTxtAutoSendTime ’ 设置自动发送时间 TmrAutoSend.Enabled True ’ 打开自动发送定时器 Else ChkAutoSend.Value 0 ’ 串口没有打开去掉自动发送 MsgBox quot串口没有打开,请打开串口quot 48 quot串口调试助手quot 如果串口没有被打开,提示打开串口 End If ElseIf ChkAutoSend.Value 0 Then ’ 如果无效,不发送 mnuautosend.Caption quot自动发送数据quot TmrAutoSend.Enabled False ’ 关闭自动发送定时器 End IfErr:End SubPrivate Sub cmdamend_Click Dim spShell As Object ’ 定义存放引用对象的变量 Dim spFolder As Object ’ 定义存放引用对象的变量 Dim spFolderItem As Object ’ 定义存放引用对象的变量 Dim spPath As String ’ 定义存放的变量 On Error GoTo Err ’ 错误处理,防止取消打开文件夹时报错 Const WINDOW_HANDLE 0 Const NO_OPTIONS 0 Set spShell CreateObjectquotShell.Applicationquot Set spFolder spShell.BrowseForFolderWINDOW_HANDLE quot选择目录:quot NO_OPTIONSquotC:Scriptsquot Set spFolderItem spFolder.Self spPath spFolderItem.Path spPath ReplacespPath quotquot quotquot ’ Replace 函数的返回值是一个字符串 txtsavepath.Text spPath ’ 把文件夹路径显示在标签上 SaveTextPath txtsavepath.Text ’ 路径暂存Err:End SubPrivate Sub CmdClearCounter_ClickOn Error GoTo Err SendCount 0 ’ 发送计数器清零 ReceiveCount 0 ’ 接收计数器清零 txtRXcount.Text quotRX:quot amp 0 ’ 接收计数 txtTXcount.Text quotTX:quot amp 0 ’ 发送计数Err: 5End SubPrivate Sub cmdclearrecieve_Click TxtReceive.Text quotquotEnd SubPrivate Sub cmdclearsend_Click txtsend.Text quotquotEnd SubPrivate Sub CmdHelp_Click FrmHelp.ShowEnd SubPrivate Sub CmdQuit_Click If MSComm.PortOpen True Then MSComm.PortOpen False’ 先判断串口是否打开,如果打开则先关闭 Unload Me ’ 卸载窗体,并退出程序 EndEnd SubPrivate Sub cmdsavedisp_ClickOn Error GoTo Err ’ 错误处理 SaveTextPath txtsavepath ’ 路径暂存 Open txtsavepath amp quot1.txtquot For Output As 1 ’ 打开文件 ’ 不存在的话 会创建文件如已存在 会覆盖 ’ output 改为 append 为追加 ’ 改为 input 则只读 Print 1 YearDate amp quot年quot amp MonthDate amp quot月quot amp DayDate amp _ quot日quot amp HourTime amp quot时quot amp MinuteTime amp quot分quot amp SecondTime amp _ quot秒quot amp vbCrLf amp TxtReceive.Text vbCrLf ’ 把接收区的文本保存 文本前加上保存时间 (0000年 00 月 00 日 00 时 00 分 00 秒) ’ vbcrlf 为回车换行 Close 1 ’ 关闭文件 txtsavepath quotOK1.txt Savequot ’ 提示保存成功 cmdsavedisp.Enabled False Savetime Timer ’ 记下开始的时间 While Timer lt Savetime 5 ’ 循环等待 5 - 要延时的时间 DoEvents ’ 转让控制权,以便让操作系统处理其它的事件。