使用 VB6 MSCOMM 控件 进行二进制收发 发布时间:2012-01-10 12:12:01
技术类别:嵌入式  
 

MSCOMM 控件是用于串口通信的,使用方便。在VB中,这个串口控件缺省是用于收发字符串的。在实际的控制应用场合经常需要使用二进制收发。在程序编制时注意以下内容。

1、设置串口
    Dim temp As String
    temp = Mid(Combo1.Text, 4)
    MSComm1.CommPort = CDec(Mid(Combo1.Text, 4))
    'MSComm1.InBufferCount = 0
    MSComm1.InputLen = 64
    MSComm1.SThreshold = 0 '一旦发送数据就触发OnComm()事件来检测是否返回数据
    MSComm1.RThreshold = 3 '接收到1个字节数据就立即触发OnComm()事件
    MSComm1.Settings = "115200,n,8,1"
    MSComm1.InputMode = comInputModeBinary  '这个地方要设置为输入binary模式
    MSComm1.PortOpen = True

2、发送二进制数 可以定义一个Byte数组然后连接到output发送出去
    Dim bytebuf(0 To 5) As Byte
bytebuf(0) = 1
bytebuf(1) = 13
bytebuf(2) = &H53
bytebuf(3) = &HAA
bytebuf(4) = &HEF
bytebuf(5) = &HFF
MSComm1.Output = bytebuf

3、接收二进制数 可以使用一个checkbox选择是十六进制还是文本型显示
Dim tempstr As Variant '定义一个Variant型的数,这个非常重要
Dim i As Integer

If MSComm1.InputLen <> 0 Then
tempstr = MSComm1.Input
For i = LBound(tempstr) To UBound(tempstr)
If Check1.Value = Checked Then
    Text7.Text = Text7.Text + Hex(tempstr(i)) + " "
Else
    Text7.Text = Text7.Text + Chr(tempstr(i))
End If
Next i
End If

附:查找机器上的可用串口 一般做法是读注册表 但这里使用穷举法

Dim i As Integer
Combo1.Clear
On Error Resume Next
        For i = 1 To 100
        MSComm1.CommPort = i
        If (MSComm1.PortOpen = False) Then
                MSComm1.PortOpen = True
        End If
        If (MSComm1.PortOpen) Then
                Combo1.AddItem "com" + CStr(i)
                MSComm1.PortOpen = False
        End If
Next i

vb---输入模式之文本输入与二进制输入区别的更多相关文章

  1. (二)C语言文本流和二进制流的区别

    转至:http://www.cnblogs.com/xiangzi888/archive/2011/11/10/2244336.html 一.首先回答,什么是文件,流 一个文件通常就是磁盘上的一段命名 ...

  2. C语言中的文本流与二进制流的区别

    近期看到了文本流和二进制流的区别,书上讲的比较含糊,理解不透彻,于是细细琢磨了下,把心得跟大家分享一下: 一.首先回答,什么是文件,流 一个文件通常就是磁盘上的一段命名的存储区.比如 stdio.h ...

  3. C++二进制输入输出流接口设计

    提到输入输出流,作为CPPer很自然的就会想到std::iostream,对于文本流的处理,iostream可以说足够强大,应付一般复杂度的需求毫无压力.对二进制流处理却只能用“简陋”来形容,悲催的是 ...

  4. Delphi中限制文本框(TEdit)只能输入数字

    procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);var edt: TEdit; str, strL, strR: stri ...

  5. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号

    JS 控制文本框仅仅能输入数字 <input onkeyup="value=value.replace(/[^0-9]/g,'')"onpaste="value=v ...

  6. js统计文本框剩余可输入字数

    js统计文本框剩余可输入字数 <html><head runat="server"> <title></title> <scr ...

  7. python开发_tkinter_获取文本框内容_给文本框添加键盘输入事件

    在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ...

  8. 文本输入框input将输入转换为统一大小写

    转载地址:http://blog.csdn.net/yieryi_/article/details/52078596 文本输入框input将输入转换为统一大小写,通常有两种方法:JS和CSS方法. 1 ...

  9. IO流-文本IO\读写二进制数据

    文本IO 一.简述 OutputStreamWriter类使用选定的编码方式吧Unicode字符流转换为字节流,InputStreamReader类将包含字节的输入流转为可以产生Unicode字符的读 ...

随机推荐

  1. modelsim 中 WAVE窗口中能不能只显示变量名,而不显示路径

    可以的,在wave窗口左下角有一个黑色的logo,你点击它就可以省电路径,只显示port名称,再点击就切换回来了,如图红色圈圈标记的logo,你可以试试!

  2. Android之HttpURLConnection

    1.HttpURLConnection连接URL1)创建一个URL对象 URL url = new URL(); 2)利用HttpURLConnection对象从网络中获取网页数据 HttpURLCo ...

  3. Android发送短信核心代码

    核心代码:(1)SmsManager manager = SmsManager.getDefault(); //获得默认的消息管理器(2)ArrayList<String> list = ...

  4. iOS代码实现九宫格

    #define ScreenW [UIScreen mainScreen].bounds.size.width #define ScreenH [UIScreen mainScreen].bounds ...

  5. UiAutomator自动化测试框架介绍

    UiAutomator自动化测试框架介绍 环境搭建 1         必要条件 1.1       JDK 1.2       SDK(API高于15) 1.3       Eclipse 2    ...

  6. maven学习(5)-maven中常见错误

    maven报错非法字符:\65279 错误 开发中一个项目很早就报这个错,maven报错非法字符:\ 错误, 开发过程中偶尔会遇到,今天终于下决心要解决这个问题 编译java 文件的时候,有些java ...

  7. CentOS 6.5 安装Oracle 11G R2问题列表

    1. 文章中写vi/etc/profile #这个很重要 if [ $USER ="oracle" ]; then     if [ $SHELL="/bin/ksh&q ...

  8. bootstrap表格内容跑到表格外面的处理办法

    http://stackoverflow.com/questions/21587813/bootstrap-responsive-table-content-wrapping td写下这个样式即可.& ...

  9. 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

    在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Alte ...

  10. 时间“Thu Aug 14 2014 14:28:06 GMT+0800”的转换

    var date = "Thu Aug 14 2014 14:28:06 GMT+0800"; var va = DateTime.ParseExact(date, "d ...