串口初始化如下:
Private Sub Init_Comm1()
On Error Resume Next
If Serialcheck_Port1 = True Then
   Comm1.CommPort = 1
ElseIf Serialcheck_Port2 = True Then
   Comm1.CommPort = 2
Else
   Comm1.CommPort = 1
End If
Comm1.Settings = "19200,n,8,1"
Comm1.InBufferCount = 0 '接收缓冲区清空
Comm1.OutBufferCount = 0 '发送缓冲区清空
Comm1.InputMode = comInputModeBinary '以二进制格式接收数据
Comm1.RThreshold = 0 '每接受一个字节符将产生OnComm事件
If Comm1.PortOpen = False Then '打开串口
   Comm1.PortOpen = True
Else
   Comm1.PortOpen = True
End If
End Sub
============================================================
我用下面命令发送16进制,但单片机什么都接收不到。
Comm1.Output = &H41
=============================================================
我用Comm1.Output = "A",接收到的却是81H.Why?注:我使用的是伟富仿真器。

解决方案 »

  1.   

    建议你买一个串口头,将发送引脚和接收引脚短接
    这样就可自发自收,便于你调试程序估计接收到的数据不对多半是出在 mscomm 控件的参数上
    但可能我经验有限,我也看不出你上面参数哪个错了
    你端口号\发送方式\端口状态等好象都没有问题
    不知会不会是 错误校验 引起的
    但如果错误校验引起问题的话你收到的数据也就不会是 81H了
    还是弄个串口头再仔细调试一下吧附:
    mscomm控件的默认参数如下:
    通用:
        通讯端口:1
        设置参数:9600,n,8,1
        握手协议:0
    缓存:
        ......
    硬件:
        校验错替代字符:?
        NULL禁止
        RTS有效
        DTR有效其中最容易出问题的是通用项中的端口、联接参数(包括波特率及联接方式等)
    还有硬件项中的校验错替代字符建议选择正确的串口号、将校验错替代字符的?删掉,不要用任何字符
    然后调试联接参数