SerialPort与MSComm 详解

合集下载

(SerialPort)串口编程知识整理

(SerialPort)串口编程知识整理

(SerialPort)串口编程知识整理一、(SerialPort)串口编程知识整理:(一)基本概念和项目实践概述二、(SerialPort)串口编程知识整理:(二)串口编程中经常用到的进制转换和其他公共方法三、(SerialPort)串口编程知识整理:(三)串口编程的系统设计实用经验总结四、(SerialPort)串口编程知识整理:(四)多串口系统的分布式架构设计五、SerialPort常用属性、方法和事件(SerialPort)串口编程知识整理:(一)基本概念和项目实践概述1.基本概念MS在.NET FrameWork2.0中对串口通讯进行了封装,我们可以在.net2.0及以上版本开发时直接使用SerialPort 类对串口进行读写操作。

SerialPort类的属性主要包括:串口名称(PortName)波特率(BaudRate)数据位DataBits停止位StopBits奇偶校验Parity握手协议HandshakeSerialPort类的事件主要包括:DataReceived:用于异步接收串口数据SerialPort类的方法主要包括:Open();Close();Read();Write()等。

相关内容可以参考MSDN或者博文/tony-yang/archive/2009/06/03/learnserialport.html/hocylan/archive/2008/03/13/1103624.html2、需求和场景介绍本文是基于之前开发的一个油站项目,主要功能是实现对加油机数据的采集和对加油机的一些控制,例如停开机、设置单价、定量定额加油等操作。

系统通过PC机串口,与下位机进行通讯,下位机和加油机进行通讯,负责采集加油机数据和控制加油机的操作。

3、设计思想(1)在界面设计上,由于系统启动后要始终实时监控加油数据,采用了SDI展示方式。

截图如下:(2)在系统设计方面,加油机监控软件具有一定的实时性、稳定性和数据并发的非功能性需求。

MSComm控件属性详解

MSComm控件属性详解

MSComm控件属性详解必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串1) CommPort属性void SetCommPort(short nNewValue); short GetCommPort();这一属性设置并返回连接的串行端口号,Windows将会利用该串口和外界通信。

在设计时,nNewValue可以设置成从1~16的任何数(默认值为 1)。

但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。

注意:必须在打开端口之前设置CommPort属性。

2) Settings属性void Settings(LPCTSTR lpszNewValue); String GetSettings();该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。

当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。

其中lpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式:“BBBB,P,D,S”BBBB 为数据传输速率,P为奇偶校验,D为数据比特,S为停止比特。

Value的默认值是:“9600,N,8,1”,数据传输速率合法值可以是110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、56000、57600、115200、12800、25600。

奇偶校验值可以是设置为下表的任一值。

设定值描述E偶校验(EVEN)M标号校验(MARK)N无校验(NONE)O奇校验(ODD)S空格校验(SPACE)数据比特数可以是4、5、6、7、8。

C#串口通信:MSComm控件使用详解

C#串口通信:MSComm控件使用详解

C#串口通信:MSComm控件使用详解目次MSComm 控件两种处理通讯的方式CommPort 属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Settings 属性InputLen 属性EOFEnable 属性Handshake 常数OnComm 常数InputMode 常数错误消息MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi 等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。

SerialPort与MSComm详解

SerialPort与MSComm详解

SerialPort与MSComm详解VB,C# MSComm控件的用法与详细介绍MSComm 是控件MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API 函数,而且在VC、VB、Delphi与C#等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

串口通信MSComm控件和SerialPort

串口通信MSComm控件和SerialPort

一.概述输送带控制模块的核心技术是与PLC的串口通讯,在Visual Studio 6.0中编写串口通讯程序,一般都使用Microsoft Communication Control(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。

但在技术广泛应用的今天,Visual S 没有将此控件加入控件库,所以人们采用了许多方法在Visual 来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。

现在微软推出了最新版本的Visual Studio 2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。

NET Framework 2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,这里着重讨论了Visual Studio 6.0的MSComm控件和SerialPort类设计方法的异同点。

二.SerialPort常用属性、方法和事件1.命名空间System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/ O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using Sys tem.IO.Ports。

2.串口的通讯参数串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm 中相关的属性是CommPort和Settings。

SerialPort类与MSComm有一些区别:✍通讯端口号[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是mPort的short类型。

vc串口通讯控件MSComm编程详解

vc串口通讯控件MSComm编程详解

vc串口通讯控件MSComm编程详解在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm 通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序。

一、用MSComm控件通信1.串口通信基础知识一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与pC进行数据传输和皿信的通道。

这些串口在CPU和外设之间充当解释器的角色。

当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个vB程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。

2.使用Mscomm控件在开始使用MSComm控件之前。

需要先了解其属性、事件或错误属性描述CommPort 设置或返回通信端口号Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位PortOpen 设置或返回通信端口的状态。

也可以打开和关闭端口Input 返回和删除接收缓冲区中的字符Output 将字符串写入发送缓冲区CommEvent属性为通信事件或错误返回下列值之一。

在该控件的对象库中也可以找到这些常量。

常量值描述ComEventBreak 1001 收到了断开信号ComEventCTSTO 1002 Clear To Send Timeout。

VB Mscomm控件基本介绍

VB Mscomm控件基本介绍

VB Mscomm控件基本介绍(一)一、MSComm控件的主要属性、事件1、MSComm的属性Commport:设置或返回串口号。

如设成1(默认值),表示对Com1进行操作。

Settings:以字符串的形式设置或返回串口通信参数。

包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。

其默认值是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。

Portopen:设置或返回串口状态。

值为True时打开串口,值为False时关闭串口。

InputMode:设置或返回接收数据的类型。

若值为0,则表示以文本形式读取;值为1,则表示以二进制形式读取。

Inputlen:设置或返回一次从接收缓冲区中读取字节数。

InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

当将其值设为0时,则输入寄存器将被清空。

Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

当将其值设为0时,则输出寄存器将被清空。

Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

Rthreshold:该属性为一阀值。

当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。

用户可在OnComm事件处理程序中进行相应处理。

若Rthreshold属性设置为0,则不产生OnComm事件。

例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。

这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

Sthreshold:该属性亦为一阀值。

CSerial类与MSComm控件

CSerial类与MSComm控件

一、CSerialPort类支持多线程链接(非MODEM)的串口编程操作,其步骤如下:第一步:在**Dlg.h文件添加#include "SerialPort.h"(需先加入类头文件与源文件)第二步:添加成员变量 CSerialPort serialPort;第三步:在初始化对话框函数中调用serialPort.InitPort,serialPort.StartMonitoring 第四步:发送,serialPort.WriteToPort(buf);第五步:接收,在类的定义中,声明消息函数afx_msg LONG OnCommunication(UINT, LONG);在.cpp文件中添加映射ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication)并实现LONG **Dlg::OnCommunication(WPARAM ch, LPARAM port)基于单文档的应用程序,则初始化在新增加的OnInitialUpdate()中添加代码。

说明:由于OnCommunication(WPARAM ch,LPARAM port)带参,所以其接收代码比MSComm 控件的接收代码简单很多,不要涉及接收函数及其数据类型的转换。

二、但对于MODEM控制,需要对类进行改写,采用MSComm控件比较理想。

使用MSComm控件进行编程的基本步骤:1)在建立的工程中加入MSComm控件;2)添加MSComm控件的ID关联变量(或者对象);3)对串口进行初始化,设置MSComm控件的属性(一般在OnInitDialog中);4)添加串口事件的消息处理函数OnComm(),在函数中根据应用需要,编写数据处理代码;(一般用于接收缓冲区里面的数据)5)编写串口发送等其他代码;(一般在按钮处理函数中实现)6)关闭串口。

以上采用MSComm控件的是事件驱动方式,即通过函数OnComm()处理。

Mscomm控件原理及应用

Mscomm控件原理及应用

Mscomm控件基本知识MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

语法MSComm说明MSComm 控件提供下列两种处理通讯的方式:•事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

•在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

每个使用的 MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

可以在 Windows“控制面板”中改变端口地址和中断地址。

尽管 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。

属性 描述CommPort 设置并返回通讯端口号。

Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen 设置并返回通讯端口的状态。

也可以打开和关闭端口。

Input 从接收缓冲区返回和删除字符。

Output 向传输缓冲区写一个字符串。

Break 属性:设置或清除中断信号的状态。

该属性在设计时无效。

语法objec.Break [ = value]Break 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

value 布尔表达式,说明中断信号是否设置,如“设置值”中所描述。

mscomm32控件属性

mscomm32控件属性

---- 1、常用属性CommPort:设置或返回串行端口号,缺省为1。

Setting:设置或返回串行端的波特率、奇偶校验位、数据位数、停止位。

缺省值为"9600,N,8,1"。

PortOpen:设置它为True则打开端口,设置它为False则关闭端口。

InBufferSize:设置或返回接收缓冲区的大小,缺省为1024 字节。

InBufferCount:返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。

OutBufferSize:设置或返回发送缓冲区,缺省为512字节。

OutBufferCounter:返回发送缓冲区内等待发送的字符数,可用0来清空缓冲区。

Output:向发送缓冲区传送数据RThreshold: 该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为ComEventReceive的OnComm事件,设置位0,则不产生OnComm事件。

CommEvent:有通讯错误或事件发生时产生OnComm事件,CommEvent事件的值可以用来确定引发OnComm事件的具体的错误或事件常用的有以下几种(更详细的资料可参考MSComm控件帮助文件)ComEventbreak:接受到中断信号ComEventFrame:硬件检测到帧错误。

ComEventRxOver:接收缓冲区溢出。

ComEventTxFull:发送缓冲区溢出。

ComEventReceive:接受到规定的字符数。

InputLen:设置或返回接收缓冲区内用Input读入的个数。

若取0,则读取整个缓冲区的内容。

Input:返回并删除接受缓冲区的数据。

---- 2、示例:---- 下面举一接收程序示例:制作一通讯接收窗口,选择菜单Controls→OLE→Insert Control→MicrosoftCommunications Control,---- 在窗口中出现通信控件图标单击鼠标右键,选择OCX Properties设置常用属性,也可在程序中进行设置窗口的Open事件程序如下ole_mPort=2ole_1.object.Settings="9600,N,8,1"ole_1.object.PortOpen=tureole_1.object.Rthreshold=10ole_1.object..Inputlen=0 . .通信控件的oncomm事件的程序如下choose case ole_mEventcase comEventBreak //接收到中断信号case comEventCDTO //处理CD超时. . .case comEvReceive sle_1.text=ole_1.object.Input. .end choose利用Microsoft公司提供的通讯控件利用Microsoft公司提供的通讯控件(Mscomm.vbx,用于16位通讯程序、Mscomm32.ocx用于开发32位通讯程序)可方便实现串口通讯。

MSComm控件

MSComm控件

MSComm控件MSComm控件通过串行端口传输和接受数据,为应用程序提供串行通信功能。

MSComm控件提供下列两种处理通信的方式:事件驱动通信是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在CarrierDetect(CD)或Request To Send(RTS)线上一个字符到达或一个变化发生时。

在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件。

MSComm事件还可以检查和处理通信错误。

所有通信事件和通信错误的列表,参阅CommEvent属性。

在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

每个使用的MSComm控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。

可以在Windows“控制面板”中改变端口地址和中断地址。

MSComm控件的属性1、CommPort属性设置或返回连接的串口编号。

必须指定该属性,Windows将会利用该串口和外界通信。

CommPort属性值用1,2,…表示串口COM1,COM2…,其取值范围为1~16,缺省为1。

MSComm控件支持的组大串口号是16个,CommPort属性值超过16,系统会通知出错,并返回前一次设定的值。

2、Settings属性设置或返回通信参数,值为字符串型表示,主要设定数据传输率、奇偶校验、数据位数,停止位等4个参数。

组成格式为:“BBBB,P,D,S”其中BBBB为数据传输率,P为奇偶校验,D为数据位数,S为停止位数。

默认的为“19200,N,8,1”表示传输速率19200bit/s,无奇偶校验位,8位数据位,1位停止位。

串口编程中使用MScommd的注意事项

串口编程中使用MScommd的注意事项

串口编程中使用MScommd的注意事项串口编程中使用MScommd的注意事项微机能否通过端口检测到电平信号?悬赏分:20 - 解决时间:2006-10-16 11:39我做一个控制系统,需要微机检测到外部发出的信号(比如一个高电初次接触mysql:c++ 连接mysqlC语言链接MySQL, (实例一)用的是mysql自带的LIB包。

#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql.h>MYSQL* my_conn(){MYSQL *mysql;/*初始化指针*/mysql = mysql_init(NULL);/*连接数据库*/if(!(mysql = mysql_real_connect(mysql, "localhost", "root", "root", "test", 0, NULL, 0))){printf("error!!%s\n", mysql_error(mysql));exit(1);}printf("连接数据库成功!!\n");return mysql;}/*执行sql语句并返回*/MYSQL_RES* execute_query(MYSQL* mysql, char *sql){MYSQL_RES *res = NULL;printf("sql:%s\n", sql);/*执行SQL语句*/if(mysql_query(mysql,sql)) {fprintf(stderr,"Query failed (%s)\n",mysql_error(mysql));exit(1);}/*返回结果集*/if (!(res=mysql_store_result(mysql))) {fprintf(stderr,"Couldn't get result from %s\n", mysql_error(mysql));exit(1);}/*结果列数*/printf("number of fields returned: %d\n",mysql_num_fields(res));return res;}int main(){MYSQL *mysql;MYSQL_RES *res;MYSQL_ROW row;char *qbuf;mysql = my_conn();qbuf = "select * from test";/* printf("main sql:%s\n", qbuf);*/ res = execute_query(mysql, qbuf);while(row = mysql_fetch_row(res)) {printf("id=%s\t", row[0]);printf("name=%s\t", row[1]);printf("remark=%s\n", row[3]);}puts("query ok!!\n");mysql_free_result(res);mysql_close(mysql);return 1;}C语言链接MYSQL数据库(实例二1#include <mysql.h>/*注意要包含这个头文件*/2#include <string.h>3#include <stdlib.h>4#include <stdio.h>56/*定义了一些数据库连接需要的宏*/7#define HOST "localhost"8#define USERNAME "ABitNo"9#define PASSWORD "ABitNo"10#define DATABASE "abitno"1112/*这个函数用来执行传入的sql語句*/13void exe_sql(char* sql) {1415 MYSQL my_connection; /*这是一个数据库连接*/16int res; /*执行sql語句后的返回标志*/1718/*初始化mysql连接my_connection*/19 mysql_init(&my_connection);2021/*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并22返回一个值,返回不为空证明连接是成功的*/23if (mysql_real_connect(&my_connection, HOST, USERNA ME, PASSWORD, DATABASE,24 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/2526 printf("数据库执行exe_sql连接成功!\n");2728/*这句话是设置查询编码为utf8,这样支持中文*/29 mysql_query(&my_connection, "set names utf8");3031/*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,32这会返回一个int值,如果为0,证明語句执行成功*/33 res = mysql_query(&my_connection, sql);3435if (res) {/*现在就代表执行失败了*/36 printf("Error: mysql_query !\n");37/*不要忘了关闭连接*/38 mysql_close(&my_connection);39 } else {/*现在就代表执行成功了*/40/*mysql_affected_rows会返回执行sql后影响的行数*/41 printf("%d 行受到影响!\n\n", mysql_affected_rows(&my_connection));42/*不要忘了关闭连接*/43 mysql_close(&my_connection);44 }4546 } else {47/*数据库连接失败*/48 printf("数据库执行exe_sql连接失败!\n");49 }50}5152/*这个函数用来执行传入的sql語句,并打印出查询結果*/53void query_sql(char* sql) {54 MYSQL my_connection; /*这是一个数据库连接*/55int res; /*执行sql語句后的返回标志*/56 MYSQL_RES *res_ptr; /*指向查询结果的指针*/57 MYSQL_FIELD *field; /*字段结构指针*/58 MYSQL_ROW result_row; /*按行返回的查询信息*/5960int row, column; /*查询返回的行数和列数*/61int i, j; /*只是控制循环的两个变量*/6263/*初始化mysql连接my_connection*/64 mysql_init(&my_connection);6566/*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并67返回一个值,返回不为空证明连接是成功的*/68if (mysql_real_connect(&my_connection, HOST, USERNA ME, PASSWORD, DATABASE,69 0, NULL, CLIENT_FOUND_ROWS)) {/*Connection suc cess*/7071 printf("数据库查询query_sql连接成功!\n");7273/*这句话是设置查询编码为utf8,这样支持中文*/74 mysql_query(&my_connection, "set names utf8");7576/*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,77这会返回一个int值,如果为0,证明語句执行成功*/78 res = mysql_query(&my_connection, sql);7980if (res) { /*现在就代表执行失败了*/81 printf("Error: mysql_query !\n");82/*不要忘了关闭连接*/83 mysql_close(&my_connection);84 } else { /*现在就代表执行成功了*/85/*将查询的結果给res_ptr*/86 res_ptr = mysql_store_result(&my_connection);8788/*如果结果不为空,就把结果print*/89if (res_ptr) {90/*取得結果的行数和*/91 column = mysql_num_fields(res_ptr);92 row = mysql_num_rows(res_ptr) + 1;93 printf("查询到 %lu 行 \n", row);9495/*输出結果的字段名*/96for (i = 0; field = mysql_fetch_field(res_ptr); i++)97 printf("%s\t", field->name);98 printf("\n");100/*按行输出結果*/101for (i = 1; i < row; i++) {102 result_row = mysql_fetch_row(res_ptr); 103for (j = 0; j < column; j++)104 printf("%s\t", result_row[j]);105 printf("\n");106 }107108 }109110/*不要忘了关闭连接*/111 mysql_close(&my_connection);112 }113 }114}115116int main(int argc, char *argv[]) {117/*测试下向里面插入数据*/118char *exe = "insert into abitno values('ABitNo','');"; 119 exe_sql(exe);120121/*测试下查询*/122char *query = "select * from abitno;";123 query_sql(query);124125return 0;C语言链接MYSQL数据库(实例三)对于刚刚接触MySQL的用户,如果想用C语言连接MySQL,往往会是一件很麻烦的事情。

串口通讯方法的三种实现

串口通讯方法的三种实现

串口基本信息用一台电脑实验串口自发自收,实验前要将串口(以9针为例)的发送引脚(2脚)和接受引脚(3脚)短接。

三线连接:适用于计算机之间尤其是PC机和单片机之间的数据通信。

其连接信号对为(TxD,RxD)、(RxD,TxD)、(SG,SG)。

即发送数据TxD端和接受数据RxD端交叉连接,信号地SG对应连接。

七线交叉连接:适用于同型号的计算机之间的连接,如PC机间的数据通信。

其连接信号对为:(TxD,RxD)、(RxD,TxD)、(SG,SG)、(RTS,CTS)、(CTS,RTS)、(DSR.DTR)、(DTR,DSR)。

其中,TxD、RxD、SG与前面信号的含义相同,RTS为请求发送,CTS为准许发送,DSR为数据装置准备好,DTR为数据终端准备好。

在本地连接的微机系统中,RTS、CTS、DTR、DSR用作硬件联络控制信号。

目前使用的串口连接线有DB9和DB25两种连接器,用户可以国家使用的具体机器选择相应的连接器。

一个串口通讯类在/network/serialport.shtml。

PC机的RS-232接口的电平标准是-12V标示“1”,和+12V表示“0”,有些单片机的信号电平时TTL 型,即大于2.4v表示“1”,小于0.5v表示“0”,因此采用RS-232总线进行异步通信是,发送端和接受端要有一个电平转换接口。

串口通讯方法的三种实现串口是计算机上一种非常通用的设备通信协议。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS一232口。

同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。

串口通信方便易行,应用广泛。

在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。

VB2005串口通讯 (2)

VB2005串口通讯 (2)

VB2005串口通讯VB2005自带了一个串口通讯的控件SerialPort,该控件类似于VB6.0的串口Mscomm,但又有一定区别。

下面是对它们的一个比较:1.串口的打开/关闭VB6.0串口打开是MSComm1.PortOpen =True,VB2005则直接调用SerialPort1.OpenVB6.0串口关闭是MSComm1.PortOpen= False,VB2005则直接调用SerialPort1.Close2.参数的设置对比VB串口设置可以单独设置,也可以通过其Setting属性设置如:MSComm1.Settings = "9600,n,8,2"而VB2005的串口属性只能分别设置,如:端口:SerialPort1.PortName波特率:SerialPort1.BaudRate数据位长度:SerialPort1.DataBit奇偶校验:SerialPort1.Parity停止位:SerialPort1.StopBits3.向串行端口输出缓冲区写数据VB6.0向串口写数据是MSComm1.Output方法,其传递的是字符串或数据的起始地址VB2005向串口写数据是通过SerialPort1.Write方法,该方法有三种方式:(1).直接输出字符串,该方式只有一个参数,string,如:SerialPort1.Write SendString这里面SendString是一个字符串(2).以字节方式输出,这种方式有三个参数:第一个参数是要输出的字节数据的起始地址第二个参数是从字节数据的第几个开始第三个参数是要发送的字节个数例如:SerialPort1.Write (SendByte,1,10)就是指把字节数组的SendByte的第1到第10个字节发送到输出缓冲区(3).以字符方式输出,这种方式也有三个参数:第一个参数是要输出的字符数据的起始地址第二个参数是从字符数据的第几个开始第三个参数是要发送的字符个数例如:SerialPort1.Write (SendChar,1,10)就是指把字符数组的SendByte的第1到第10个字符发送到输出缓冲区4.从串行端口输入缓冲区读数据VB6.0从串口读数据是MSComm1.Input方法,其返回的是字符串或一个一维数据 VB2005从串口读数据是通过SerialPort1.Read方法,该方法有二种方式:(1).以字节方式读出,这种方式有三个参数:第一个参数buffer,是将输入写入到其中的字节数组第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递这里面SerialPort1.BytesToRead就是所接收的个数例如:SerialPort1.Read (ReadByte,1,10)就是指把缓冲区的第1到第10个字节读到ReadByte字节数组中(2).以字节方式读出,这种方式有三个参数:第一个参数buffer,是将输入写入到其中的字符数组第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递这里面SerialPort1.BytesToRead就是所接收的个数例如:SerialPort1.Read (ReadChar,1,10)就是指把缓冲区的第1到第10个字节读到ReadChar字符数组中5.相关属性(1).SerialPort1.DtrEnable 该值在串行通信过程中启用数据终端就绪 (DTR) 信号在通讯时,请把该值置为1,否则读入的数据会丢失(原因尚未搞明白,可能跟硬件有关系吧)(2).SerialPort1.RtsEnable 该值指示在串行通信中是否启用请求发送 (RTS) 信号当然,还有其它属性,这里只对常用几个参数作了对比,其它参数请自行参考相关说明.1。

MSComm控件实现串口通信的方法

MSComm控件实现串口通信的方法

MSComm控件实现串口通信的方法碧峰晨曦摘要:详细介绍了MSComm控件,并在VC++6.0中利用MSComm控件开发了基于对话框的串口通信实例。

关键词:串口通信,MSComm,VC++图书编号:TP3110.引言串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。

MSComm控件是微软公司开发的专门用于串口通信的控件。

该控件为开发串口通信程序提供了更加快捷、容易的方法。

在VC++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数。

当声明了一个CMSComm类对象后,就可以通过如下格式调用成员函数来访问控件属性了:<对象名>.<成员函数名>(<参数表>)或<对象名>-><成员函数名>(<参数表>)1.MSComm控件属性及事件1.1 MSComm控件属性MSComm控件有许多属性,最主要的几个属性如下:1)CommPort:设置该属性值可以获取当前程序使用的串口编号。

2)Setting:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。

3)PortOpen:设置该属性可以打开或关闭串口。

4)Input:从接收缓冲区中返回并删除数据。

5)Output:向串口通信输出缓冲区写入数据。

6)CommEvent:当MSComm控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。

1.2 MSComm控件的事件该控件只有一个事件,即OnComm事件。

当CommEvent属性值发生变化时就会触发OnComm事件。

根据CommEvent属性值来分别执行各种情况下的处理程序。

2 MSComm控件实例应用2.1插入MSComm控件在VC++6.0中新建一个基于对话框的工程,命名为Test。

默认情况下,VC++6.0中不会包含MSComm控件,所以需要我们手动将MSComm控件加载到VC++6.0中。

VB串口通信详解

VB串口通信详解

VB串口通信目前,Visual Basic (简称VB)已成为WINDOWS 系统开发得主要语言,以其高效、简单易学及功能强大得特点越来越为广大程序设计人员及用户所青睐。

VB 支持面向对象得程序设计,具有结构化得事件驱动编程模式并可以使用无限扩增得控件。

在VB 应用程序可以方便地调用WINDOWS API函数,使得编程效率提高,应用功能增强。

利用VB 提供得这些功能,我们可以有三种方法完成串口通信。

一种就是用VB 提供得具有强大功能得通信控件;另一种方法就是调用WINDOWS API 函数,使用WINDOWS 提供得通信函数编写移植性强得应用程序;第三就是利用文件得输入/ 输出完成,该方法简便易行,但有一定得局限性。

一、利用通信控件(MSCOMM)完成串口通信VB 提供了通信控件MSCOMM,文件名为MSCOMM、VBX。

该控件可设置串行通信得数据发送与接收,对串口状态及串行通信得信息格式与协议进行设置。

在通信过程中可以触发OnComm事件,在该事件过程进行数据检验处理及检错,还可以通过编程访问CommEvent 属性来了解通信得情况,进行收发数据得处理。

每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。

1、通信控件得事件及基本属性(1)事件OnComm:通信控件只提供了一个事件,该事件得触发可以对串口得通信事件及错误进行处理。

通过对CommEvent 属性得判断可知当前得通信错误与事件,分别对每个CommEvent 值进行编程就完成了对各个错误与事件得处理。

如:CommEvent = MSCOMM—EV—SEND 表示发送事件。

这些信息可从VB 提供得常量文件CONSTANT、TXT中查出。

(2)属性CommPort :设置通信控件与哪个串口相连接,设置并返回通信口号。

Setting :设置通信得信息格式,为字符型。

顺序为:波特率、校验、数据位、停止位。

PortOpen :布尔型、开关通信口。

MSComm控件的主要属性及事件

MSComm控件的主要属性及事件
附:MSComm控件的返回串行端口号,缺省值1。
(2)Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=′9600,n,8,1′
(3)PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}
(4)InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
(5)InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
(6)RThreshold:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。
如果在通信过程中发生错误或事件,就会触发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
(1)ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。
(6)ComEvRxParity:值为1009,奇偶校验错误。
(7)ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。�
(2)ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
(3)ComEvFrame:值为1004,硬件检测到帧错误。
(4)ComEvRxOver:值为1008,接收缓冲区溢出。
(5)ComEvTxFull:值为1010,发送缓冲区溢出。
(10)OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

C和串口通信方法SerialPort控件图文稿

C和串口通信方法SerialPort控件图文稿

C和串口通信方法S e r i a l P o r t控件文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]本例程主要讲解使用C#,实现与232串口通信。

达到采集串口数据,监控,可视化处理等。

一.概述在VisualStudio6.0中编写串口通讯程序,一般都使用MicrosoftCommunicationControl(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。

但在技术广泛应用的今天,没有将此控件加入控件库,所以人们采用了许多方法在来编写串口通讯程序:第一种方法是通过采用VisualStudio6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。

现在微软推出了最新版本的VisualStudio2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。

NETFramework2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,本文着重讨论了VisualStudio6.0的MSComm控件和SerialPort类设计方法的异同点。

二.SerialPort常用属性、方法和事件1.命名空间同步I/O和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using 2.串口的通讯参数串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm中相关的属性是CommPort和Settings。

SerialPort类与MSComm有一些区别:a.通讯端口号[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM 端口,请注意该属性返回类型为String,不是mPort的short类型。

MSCOMM控件的常用属性和方法

MSCOMM控件的常用属性和方法

MSCOMM控件的常用属性和方法利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。

以下是MSComm控件的常用属性和方法:●Commport:设置或返回串口号。

●Settings:以字符串的形式设置或返回串口通信参数。

●Portopen:设置或返回串口状态。

●InputMode:设置或返回接收数据的类型。

●Inputlen:设置或返回一次从接收缓冲区中读取字节数。

●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

●Rthreshold:该属性为一阀值。

当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。

用户可在OnComm事件处理程序中进行相应处理。

若Rthreshold属性设置为0,则不产生OnComm事件。

例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。

这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

●Sthreshold:该属性亦为一阀值。

当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB,C# MSComm控件的用法与详细介绍MSComm 是控件MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API 函数,而且在VC、VB、Delphi与C#等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

2.MSComm 控件的常用属性MSComm控件有很多重要的属性,但首先必须熟悉几个属性。

CommPort 设置并返回通讯端口号。

Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen 设置并返回通讯端口的状态。

也可以打开和关闭端口。

Input 从接收缓冲区返回和删除字符。

Output 向传输缓冲区写一个字符串。

下面分别描述:CommPort属性设置并返回通讯端口号。

语法 mPort[value ] (value 一整型值,说明端口号。

)说明在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。

但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。

注意:必须在打开端口之前设置 CommPort 属性。

RThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。

语法 object.Rthreshold [ = value ](value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。

)说明当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。

例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。

CTSHolding 属性:确定是否可通过查询 Clear To Send (CTS) 线的状态发送数据。

Clear To Send 是调制解调器发送到相联计算机的信号,指示传输可以进行。

该属性在设计时无效,在运行时为只读。

语法: object.CTSHolding(Boolean)Mscomm 控件的 CTSHolding 属性设置值:True Clear To Send 线为高电平。

False Clear To Send 线为低电平。

说明:如果 Clear To Send 线为低电平 (CTSHolding = False) 并且超时时,MSComm 控件设置 CommEvent 属性为 comEventCTSTO (Clear To Send Timeout) 并产生 OnComm 事件。

Clear To Send 线用于 RTS/CTS (Request To Send/Clear To Send) 硬件握手。

如果需要确定 Clear To Send 线的状态,CTSHolding 属性给出一种手工查询的方法。

详细信息有关握手协议,请参阅 Handshaking 属性。

SThreshold 属性: MSComm 控件设置 CommEvent 属性为 comEvSend 并产生OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。

语法 object.SThreshold [ = value ]value 整形表达式,代表在 OnComm 事件产生之前在传输缓冲区中的最小字符数。

说明:若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。

若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。

如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为comEvSend,并产生OnComm 事件。

comEvSend 事件仅当字符数与Sthreshold 交叉时被激活一次。

例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。

如果在输出队列中从没有比Sthreshold 多的字符,comEvSend 事件将绝不会发生。

Handshake 常数常数值描述comNone 0 无握手。

comXonXoff 1 XOn/Xoff 握手。

comRTS 2 Request-to-send/clear-to-send 握手。

comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。

OnComm 常数常数值描述comEvSend 1 发送事件。

comEvReceive 2 接收事件。

comEvCTS 3 clear-to-send 线变化。

comEvDSR 4 data-set ready 线变化。

comEvCD 5 carrier detect 线变化。

comEvRing 6 振铃检测。

comEvEOF 7 文件结束。

Error 常数常数值描述comEventBreak 1001 接收到中断信号comEventCTSTO 1002 Clear-to-send 超时comEventDSRTO 1003 Data-set ready 超时comEventFrame 1004 帧错误comEventOverrun 1006 端口超速comEventCDTO 1007 Carrier detect 超时comEventRxOver 1008 接收缓冲区溢出comEventRxParity 1009 Parity 错误comEventTxFull 1010 传输缓冲区满comEventDCB 1011 检索端口设备控制块 (DCB) 时的意外错误InputMode 常数常数值描述comInputModeText 0 (缺省)通过 Input 属性以文本方式取回数据。

comInputModeBinary 1 通过 Input 属性以二进制方式检取回数据。

CDHolding 属性:通过查询 Carrier Detect (CD) 线的状态确定当前是否有传输。

Carrier Detect 是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。

该属性在设计时无效,在运行时为只读。

语法 object.CDHolding设置值:CDHolding 属性的设置值为:设置描述True Carrier Detect 线为高电平False Carrier Detect 线为低电平说明:注意当 Carrier Detect 线为高电平 (CDHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为 comEventCDTO(Carrier Detect 超时错误),并产生 OnComm 事件。

注意在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。

Carrier Detect 也被称为 Receive Line Signal Detect (RLSD)。

数据类型 BooleanDSRHolding 属性:确定 Data Set Ready (DSR) 线的状态。

Data Set Ready 信号由调制解调器发送到相连计算机,指示作好操作准备。

该属性在设计时无效,在运行时为只读。

语法:object.DSRHoldingobject 所在处表示对象表达式,其值是“应用于”列表中的对象。

DSRHolding 属性返回以下值:值描述True Data Set Ready 线高False Data Set Ready 线低说明:当 Data Set Ready 线为高电平 (DSRHolding = True) 且超时时,MSComm 控件设置 CommEvent 属性为 comEventDSRTO(数据准备超时)并产生 OnComm 事件。

当为 Data Terminal Equipment (DTE) 机器写 Data Set Ready/Data Terminal Ready 握手例程时该属性是十分有用的。

数据类型:BooleanSettings 属性: 设置并返回波特率、奇偶校验、数据位、停止位参数。

语法: object.Settings[ = value]说明:当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。

Value 由四个设置值组成,有如下的格式:"BBBB,P,D,S "BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。

value 的缺省值是:"9600,N,8,1 "InputLen 属性:设置并返回 Input 属性从接收缓冲区读取的字符数。

语法 object.InputLen [ = value]InputLen 属性语法包括下列部分:value 整型表达式,说明 Input 属性从接收缓冲区中读取的字符数。

相关文档
最新文档