vb中串口通讯出现乱码
下面的是代码,以前用同学的板子是可以直接在VB接收到数据的,至少能收到单位数0~9,现在只能显示乱码,调试后发现以下几点:(1)用串口助手可以显示81(单片机SBUF设置...
下面的是代码,以前用同学的板子是可以直接在VB接收到数据的,至少能收到单位数0~9,现在只能显示乱码,调试后发现以下几点:(1)用串口助手可以显示81(单片机SBUF设置为1);(2)MSComm1.InputMode设置为0会显示乱码,设置为 comInputModeBinary直接在Text中没显示;(3)利用SBUF&0x0F可以实现VB向单片机的传输数据,利用流水灯可以准确把握低四位的亮灭情况。其他调试可以再做,求大神解答,在线等!!!VB代码如下:Private Sub Cmdsend_Click() MSComm1.Output = Trim(Textsend.Text)End SubPrivate Sub Form_Load() MSComm1.CommPort = 3 '设置通信端口号为COM3 MSComm1.Settings = "9600,n,8,1" '设置串口3参数 MSComm1.InputMode = 0 '接收文本型数据 MSComm1.PortOpen = True '打开通信端口End SubPrivate Sub Timer1_Timer() Dim buf$ '等价于Dim buf As String, buf = Trim(MSComm1.Input) '将缓冲区内的数据读入buf变量中 If Len(buf) <> 0 Then '判断缓冲区内是否存在数据 TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf '按回车键换行 End IfEnd Sub
展开
2018-03-18 · 知道合伙人互联网行家
关注
展开全部
当设置MSComm 控件的InputMode 属性为comInputModeBinary时,串口是按返回一数据组的二进制数据(Byte)字节的数组,但MSComm1.Input可赋值给一个String变量strBuff,在转赋值给Byte数组BytReceived(),而不会出现歧义,其接收代码如下: Option Explicit Dim strData As String Private Sub Form_Load() Text1 = "" Text2 = "" MSComm1.CommPort = 1 MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以文本形式取回。 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() '接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 Text1 = "" Text2 = "" Text3 = MSComm1.InBufferCount strBuff = MSComm1.Input BytReceived() = strBuff Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i))
追问
是不是没写完
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询