j = 0\x0d\x0aFor i = 1 To 16 Step 1\x0d\x0aIf comISP.PortOpen = True Then '先关闭
串口\x0d\x0acomISP.PortOpen = False\x0d\x0aEnd If\x0d\x0a\x0d\x0acomISP.CommPort = i\x0d\x0aOn Error Resume Next'说明当一个运行时错误发生时,
控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。\x0d\x0acomISP.PortOpen = True\x0d\x0aIf Err.Number 8002 Then '无效的串口号。这样可以检测到虚拟串口,如果用Err.Number = 0的话检测不到虚拟串口\x0d\x0aIf j = 0 Then\x0d\x0aj = i\x0d\x0aEnd If\x0d\x0acboPort.AddItem "COM" &i '生成串口选择列表\x0d\x0aEnd If\x0d\x0acomISP.PortOpen = False\x0d\x0aNext i\x0d\x0a\x0d\x0aIf j >= 1 Then\x0d\x0acboPort.Text = "COM" &j'自动打开可用的最小串口号\x0d\x0acomISP.CommPort = j\x0d\x0acomISP.PortOpen = True\x0d\x0acmdOpenCom.Caption = "关闭串口"\x0d\x0ashpCOM.FillColor = vbGreen\x0d\x0aIf Err.Number = 8005 Then '串口已打开,vbExclamation '\x0d\x0acomISP.PortOpen = False\x0d\x0acboPort.Text = ""\x0d\x0acmdOpenCom.Caption = "打开串口"\x0d\x0ashpCOM.FillColor = vbRed\x0d\x0aEnd If\x0d\x0aEnd If1、检查串口是否正确,比如COM1,COM2,COM3等;
2、检查波特率是否正确,比如9600,115200等;
3、检查数据位、停止位、校验位是否正确,比如8位数据位、1位停止位、无校验位等;
4、检查串口线是否接好;
5、检查串口是否被其他程序占用,可以使用串口调试助手查看;
6、检查串口驱动是否安装正确,可以在设备管理器中查看;
7、检查程序代码是否正确,可以使用串口调试助手查看。
有串口控件MSComm控件
MSComm 控件示例
下面这个简单的例子演示了用调制解调器进行基本的串行通讯:
Private Sub Form_Load ()
' 保存输入子串的缓冲区
Dim Instring As String
' 使用 COM1。
MSComm1.CommPort = 1
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
' 当输入占用时,
' 告诉控件读入整个缓冲区。
MSComm1.InputLen = 0
' 打开端口。
MSComm1.PortOpen = True
' 将 attention 命令送到调制解调器。
' Chr$函数:返回 String,其中包含有与指定的字符代码相关的字符 。
MSComm1.Output = "ATV1Q0" &Chr$(13) ' 确保
' 调制解调器以"OK"响应。
' 等待数据返回到串行端口。
Do
DoEvents
Buffer$ = Buffer$ &MSComm1.Input
Loop Until InStr(Buffer$, "OK" &vbCRLF)
' 从串行端口读 "OK" 响应。
' 关闭串行端口。
MSComm1.PortOpen = False
End Sub
评论列表(0条)