关于vb MSComm控件 发送数据的格式 问题

这是一个通信用的vb小程序一个窗口有两个textbox(一个用来接收数据,一个用来输入发送数据)一个Commanbutton,一个MSComm.它用来向单片机发送一个数据... 这是一个通信用的vb小程序
一个窗口有两个textbox(一个用来接收数据,一个用来输入发送数据) 一个Commanbutton,一个MSComm.
它用来向单片机发送一个数据,单片机接收数据后马上又把它发回pc机.
-------------------------------------
现在的情况是,在textbox里面输入1,点击发送按钮,数据会以1的ASCII码"49"发送数据.

有什么方法实现我输入1点击发送,它真的就发送数据1而不是它的ascii码?
另外请加一点注释,谢谢
展开
 我来答
百度网友bdb9803
推荐于2016-06-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部

一个例子:

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
yasigi
2014-09-09 · TA获得超过208个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:223万
展开全部
预设都是用Ascii码传,直接传数值会变成不可视字元,只能把数值转成16进位的byte型态来传送,如传送数值1就写 Chr$(1)。
如果只是为了传送数值,倒不如,接收端收到後从字元转回数值,处理上比较容易些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e133b0b95
2014-09-11 · 超过33用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:47.8万
展开全部
' 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

关键就是上面的收入模式,要设置成二进制的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx001z7d53
2014-09-15 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5703万
展开全部
2000人的群,名称是VB人生 号148317126,去那里问问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式