都不记得上次写博客什么时候的事了。今天我们清明放假最后一天,闲的无事,看到桌面上的“串口工具”,便想共享给大家使用
前段时间要用串口,然后百度上下载串口工具,N年前下载了一个比较好用的,现在找不到了,而且鱼目混珠的,各种串口工具,用都用不惯。最让人郁闷的是,一些串口工具都不带检测功能的,直接从com1到com7,不管在不在,你选择了,再打开,就报错。真是郁闷。想起之前我的一个系统上用串口,找些代码做了个可以检测的。就自己修改修改,做了个差不多的串口工具,给大家参考,也可直接使用,使用中如果有任何修改意见,敬请向我提出,我一定尽力修改。
首先是串口检测了。窗口如下:
其中最重要的是串口检测段的程序,如下:
Private Function jiance()
'清空下拉框
Me.Combo1.Clear
m = 0
On Error Resume Next
'最多检测30个串口,太多会变慢
For I = 1 To 30
Me.MSComm1.CommPort = I
Me.MSComm1.PortOpen = True
If Err.Number = 0 Then
Me.Combo1.AddItem "串口" & I
comn(m) = I
m = m + 1
End If
Me.MSComm1.PortOpen = False
Err.Clear
Next I
Me.Combo1.ListIndex = 0
Command1.Enabled = True
'若未检测到串口,显示信息
If m = 0 Then
Me.Combo1.Text = "未检测到串口"
Command1.Enabled = False
End If
'波特率相关信息,默认9600
Me.Combo2.AddItem "4800"
Me.Combo2.AddItem "9600"
Me.Combo2.AddItem "14400"
Me.Combo2.AddItem "19200"
Me.Combo2.AddItem "28800"
Me.Combo2.AddItem "38400"
Me.Combo2.AddItem "57600"
Me.Combo2.AddItem "115200"
Me.Combo2.ListIndex = 1
End Function
串口检测完了,可以做串口通信了。我做了字符串及16进制的发送和接收。字符串比较好办,16进制就不太好处理了。
先看下界面
这个地方的代码比较长,我就不贴出了。
需要注意几点,16进制发送和接收,都是byte型的,需要和char型的转换,特别是发送的时候,需要输入两个16进制数加空格的形式,这个地方的处理,可以看下程序里面的uart_send函数,处理起来麻烦些。然后是16进制的接收和显示了,需要转换,可以参见:bytetodisp函数。这两个是比较麻烦的地方。
代码不知道怎么上传,麻烦给我发邮件,我定回复全部代码及程序。