使用 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. C++设计模式——简单工厂模式

    简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...

  2. LDAP与SSH

    一般情况下,客户端配置好之后,ssh是可以直接用的,若不能,则需手动配置 1:vim /etc/ssh/sshd_config 把UsePAM改成yes 2:在vim /etc/pam.d/sshd添 ...

  3. UIWebView显示乱码问题

    今天有人问Swift中UIWebView加载页面出来的是乱码,问知道怎么解决么? OC我知道肯定不会有乱码问题,Swift就不知道了,因为没有试过.....于是...我自己动手试试啦... OC和Sw ...

  4. code project 上的内存管理的示例代码

    /******************************************************************** created: 2014/03/17 18:53 file ...

  5. DataInputStream和DataOutputStream

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInp ...

  6. table 排序 添加 删除 等操作

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. mysql定时器Events

    MySQL定时器Events 一.背景 我们MySQL的表A的数据量已经达到1.6亿,由于一些历史原因,需要把表A的数据转移到一个新表B,但是因为这是线上产品,所以宕机时间需要尽量的短,在不影响数据持 ...

  8. json 数据 添加 删除 排序

    js数据格式和json数据格式,各有各的用处,就个人而言,json更好用一点,js自身的数组和对像限制比较多. 以js的数组举例: var a = ['1']; a[5] = 52; a.length ...

  9. android命令抓LOG

    手机和电脑,在电脑上开3个命令窗口,分别输入如下3个命令分别抓取mainLog.radioLog和kernalLog adb logcat -v time >main.txt adb logca ...

  10. Git入门仅这篇就够了

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5978937.html 前言 大家好,我是Cavalier ...