使用 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. 一个简单xml数据转换为数组的方法

    本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ...

  2. C入门---位运算

    程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算直接对整数在内存中的二进制位进行操作.由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快. (1),与(&)运算 ...

  3. 各大浏览器 CSS3 和 HTML5 兼容速查表

    不知不觉中,支持 CSS3 和 HTML5 的浏览器变得越来越多,甚至包括最新版的 IE,当然,所谓支持仅仅是部分支持,因为 CSS3 和 HTML5 的W3C 规范都尚未形成.如果你现在就希望使用 ...

  4. 关于Servlet手动配置web.xml部分代码

    <servlet> <!-- 文件名 --> <servlet-name>deleteServlet</servlet-name> <!-- 文件 ...

  5. Java(String)

    1>String类型判等 (1)请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? package StringPool; publi ...

  6. with try catch 作用域的问题

    with({}){}和try{}catch(e){}会临时改变代码执行的作用域, var foo="abc"; with({foo:"d"}){ functio ...

  7. 我利用网上代码开发的JQuery图片插件

    我利用网上代码开发的JQuery图片插件 代码如下 (function($){ $.fn.FocusPic = function(options){ var defaults = { interval ...

  8. [php-src]窥探Php内核中的数组与面向对象

    内容均以php5.6.14为例. 扩展中定义一个类有以下四步: #1. 声明一个存储类信息的指针. zend_class_entry *errs_ce; #2. 定义方法的参数信息,类的方法实现. Z ...

  9. Excel中添加并使用宏实现批量更新数据

    一.状况描述    当我们需要后台更新大量数据的时候,可以使用该功能.二.解決方案    (1)新建一个Excel文件,并另存为启用宏的Excel工作簿,扩展名为.xlsm.    (2)在Excel ...

  10. 下拉框数据的动态选择,类似级联ajax刷新数据

    简单的两个下拉列表,第二个中的数据与第一个下拉框相关: --------------------var selected = $(this).children('option:selected').v ...