:MSComm 控件的Input 属性及InputMode 属性探究
来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 15:01:52
MSComm 控件的Input 属性及InputMode 属性探究
最近对MSComm 控件的Input 属性研究得出一些观点,提供给各位关心串口通信的爱好者。当设置MSComm 控件的InputMode 属性为comInputModeText时,串口是按返回接收到的ASCII码在MSComm 控件转换成Unicode码。以下代码可揭示上述结论:Option Explicit Dim strData As Variant Private Sub Command1_Click() Text2 = ""End Sub Private Sub Form_Load() Text1 = "" Text2 = "" MSComm1.CommPort = 1 MSComm1.InputMode = comInputModeText '数据通过 Input 属性以文本形式取回。 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.InputLen = 1End Sub Private Sub MsComm1_OnComm() '接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 Text1 = "" Text3 = MSComm1.InBufferCount '接收缓冲区的字节数 strBuff = MSComm1.Input ' BytReceived() = strBuff ' Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next '数据处理代码 Dim sj As String sj = Right(strData, 2) & Left(strData, 2) Text1 = strData Text2 = Text2 & ChrW(Val("&H" & sj)) strData = "" End SelectEnd Sub注意上述代码中设置MSComm 控件的InputMode 属性为comInputModeText,而接收是按2进制Byte字节的数组取出。用一串口调试程序发送文本字节,单个汉字或单个ASCII字符(英文字母或0-9数字),你会发现,接收到汉字时MSComm1.InBufferCount值为2,接收A-Z(a-z,0-9)时MSComm1.InBufferCount值为1。同时Text2中显示分别是调试串口程序发送的单个汉字或单个ASCII字符(英文字母或0-9数字)。当设置MSComm 控件的InputMode 属性为comInputModeBinary时,串口是按返回一数据组的二进制数据(Byte)字节的数组,但MSComm1.Input可赋值给一个String变量strBuff,在转赋值给Byte数组BytReceived(),而不会出现歧义,其接收代码如下:Option Explicit Dim strData As StringPrivate Sub Form_Load() Text1 = "" Text2 = "" MSComm1.CommPort = 1 MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以文本形式取回。 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = TrueEnd Sub Private Sub MSComm1_OnComm() '接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 Text1 = "" Text2 = "" Text3 = MSComm1.InBufferCount strBuff = MSComm1.Input BytReceived() = strBuff Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next Dim sj As String sj = strData Text1 = sj Text2 = Chr(Val("&H" & sj)) strData = "" '数据处理代码 End SelectEnd Sub 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zdingyun/archive/2008/09/23/2969936.aspx
最近对MSComm 控件的Input 属性研究得出一些观点,提供给各位关心串口通信的爱好者。当设置MSComm 控件的InputMode 属性为comInputModeText时,串口是按返回接收到的ASCII码在MSComm 控件转换成Unicode码。以下代码可揭示上述结论:Option Explicit Dim strData As Variant Private Sub Command1_Click() Text2 = ""End Sub Private Sub Form_Load() Text1 = "" Text2 = "" MSComm1.CommPort = 1 MSComm1.InputMode = comInputModeText '数据通过 Input 属性以文本形式取回。 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.InputLen = 1End Sub Private Sub MsComm1_OnComm() '接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 Text1 = "" Text3 = MSComm1.InBufferCount '接收缓冲区的字节数 strBuff = MSComm1.Input ' BytReceived() = strBuff ' Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next '数据处理代码 Dim sj As String sj = Right(strData, 2) & Left(strData, 2) Text1 = strData Text2 = Text2 & ChrW(Val("&H" & sj)) strData = "" End SelectEnd Sub注意上述代码中设置MSComm 控件的InputMode 属性为comInputModeText,而接收是按2进制Byte字节的数组取出。用一串口调试程序发送文本字节,单个汉字或单个ASCII字符(英文字母或0-9数字),你会发现,接收到汉字时MSComm1.InBufferCount值为2,接收A-Z(a-z,0-9)时MSComm1.InBufferCount值为1。同时Text2中显示分别是调试串口程序发送的单个汉字或单个ASCII字符(英文字母或0-9数字)。当设置MSComm 控件的InputMode 属性为comInputModeBinary时,串口是按返回一数据组的二进制数据(Byte)字节的数组,但MSComm1.Input可赋值给一个String变量strBuff,在转赋值给Byte数组BytReceived(),而不会出现歧义,其接收代码如下:Option Explicit Dim strData As StringPrivate Sub Form_Load() Text1 = "" Text2 = "" MSComm1.CommPort = 1 MSComm1.InputMode = comInputModeBinary '数据通过 Input 属性以文本形式取回。 MSComm1.RThreshold = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = TrueEnd Sub Private Sub MSComm1_OnComm() '接收数据 Dim BytReceived() As Byte Dim strBuff As String Select Case MSComm1.CommEvent Case 2 MSComm1.InputLen = 0 Text1 = "" Text2 = "" Text3 = MSComm1.InBufferCount strBuff = MSComm1.Input BytReceived() = strBuff Dim i As Integer For i = 0 To UBound(BytReceived) If Len(Hex(BytReceived(i))) = 1 Then strData = strData & "0" & Hex(BytReceived(i)) Else strData = strData & Hex(BytReceived(i)) End If Next Dim sj As String sj = strData Text1 = sj Text2 = Chr(Val("&H" & sj)) strData = "" '数据处理代码 End SelectEnd Sub 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zdingyun/archive/2008/09/23/2969936.aspx
MSComm 控件的Input 属性及InputMode 属性探究
Delphi StringGrid控件的属性及使用说明
MSFlexGrid控件属性及使用方法
表单及控件属性一览表
android?常用的控件属性
(!!!)MSChart控件的属性与属性对话框
input属性 隐藏 只读 限制
VB常用控件的属性详解
20.2.3 控件属性
基于MSComm控件的串口调试程序及源代码
Delphi StringGrid控件的属性及使用说明[转载] - xineohpanihc - JavaEye技术网站
VB控件大全属性详解
VSFLEXgrid控件属性、用法大全
VB控件大全属性详解
ASP.NET控件属性:ID、ClientID 和 UniqueID 的区别
关于MSCOMM控件的一些说明
DEV控件:gridControl常用属性设置
CSS属性behavior的语法及介绍
刘虹言-论十神的心性及属性02
各种水果的属性及功效
水果属性及作用
VB Mscomm控件应用
vb控件大全,vb控件属性大全,vb控件详解(2)
vb控件大全,vb控件属性大全,vb控件详解(1)