关于vb MSComm控件 发送数据的格式 问题
这是一个通信用的vb小程序一个窗口有两个textbox(一个用来接收数据,一个用来输入发送数据)一个Commanbutton,一个MSComm.它用来向单片机发送一个数据...
这是一个通信用的vb小程序
一个窗口有两个textbox(一个用来接收数据,一个用来输入发送数据) 一个Commanbutton,一个MSComm.
它用来向单片机发送一个数据,单片机接收数据后马上又把它发回pc机.
-------------------------------------
现在的情况是,在textbox里面输入1,点击发送按钮,数据会以1的ASCII码"49"发送数据.
有什么方法实现我输入1点击发送,它真的就发送数据1而不是它的ascii码?
另外请加一点注释,谢谢 展开
一个窗口有两个textbox(一个用来接收数据,一个用来输入发送数据) 一个Commanbutton,一个MSComm.
它用来向单片机发送一个数据,单片机接收数据后马上又把它发回pc机.
-------------------------------------
现在的情况是,在textbox里面输入1,点击发送按钮,数据会以1的ASCII码"49"发送数据.
有什么方法实现我输入1点击发送,它真的就发送数据1而不是它的ascii码?
另外请加一点注释,谢谢 展开
4个回答
展开全部
一个例子:
Private Sub Command1_Click()
Dim aa(0) As Byte
aa(0) = Val(Text1.Text)
MSComm1.Output = aa
End Sub
Private Sub Form_Load()
'----------------------------初始化串口配置----------------------------------------------
With MSComm1
If .PortOpen = True Then '如果串口已经打开
.PortOpen = False '则关闭串口
End If
.CommPort = 4 '使用COM1
.Settings = BaudRate & ",n,8,1 " '设置通信口参数
.InBufferSize = 1024 '设置MSComm1接收缓冲区为1024字节
.OutBufferSize = 1024 '设置MSComm1发送缓冲区为1024字节
.InputMode = comInputModeBinary '设置接收数据模式为二进制形式
'----------------------------------------------------------------------------------------
.InputLen = 0 '设置Input 一次从接收缓冲读取全部字节数
.SThreshold = 0 '设置发送完所有产生OnComm事件
.InBufferCount = 0 '清除接收缓冲区
.OutBufferCount = 0 '清除发送缓冲区
.RThreshold = 1 '设置接收一个字节产生OnComm事件
' .RTSEnable = True
'----------------------------------------------------------------------------------------
If Not .PortOpen Then '判断通信口是否打开
On Error Resume Next
.PortOpen = True '打开通信口
If Err Then '错误处理
MsgBox "串口被占用或此串口不存在!通信无效!", 16, "错误提示"
Exit Sub
End If
End If
End With
End Sub
展开全部
预设都是用Ascii码传,直接传数值会变成不可视字元,只能把数值转成16进位的byte型态来传送,如传送数值1就写 Chr$(1)。
如果只是为了传送数值,倒不如,接收端收到後从字元转回数值,处理上比较容易些。
如果只是为了传送数值,倒不如,接收端收到後从字元转回数值,处理上比较容易些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
' 115200 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "115200,N,8,1"
'MSComm1.Settings = "57600,N,8,1"
'读取时读取全部字节
MSComm1.InputLen = 0
'数据接收缓冲区大小为9
MSComm1.InBufferSize = 100000
'二进制数据收发模式
MSComm1.InputMode = comInputModeBinary
'当接收缓冲区数据时不触发ONCOMM事件
MSComm1.RThreshold = 0
关键就是上面的收入模式,要设置成二进制的
MSComm1.Settings = "115200,N,8,1"
'MSComm1.Settings = "57600,N,8,1"
'读取时读取全部字节
MSComm1.InputLen = 0
'数据接收缓冲区大小为9
MSComm1.InBufferSize = 100000
'二进制数据收发模式
MSComm1.InputMode = comInputModeBinary
'当接收缓冲区数据时不触发ONCOMM事件
MSComm1.RThreshold = 0
关键就是上面的收入模式,要设置成二进制的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2000人的群,名称是VB人生 号148317126,去那里问问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询