WIN_API串口通信详细讲解带范例程序说明

合集下载

Win32API 异步串口通讯

Win32API 异步串口通讯

使用Win32API实现Windows下异步串口通讯目录:1.异步非阻塞串口通讯的优点2.异步非阻塞串口通讯的基本原理3.异步非阻塞串口通讯的基础知识4.异步非阻塞串口通讯的实现步骤一,异步非阻塞串口通讯的优点读写串行口时,既可以同步执行,也可以重叠(异步)执行。

在同步执行时,函数直到操作完成后才返回。

这意味着在同步执行时线程会被阻塞,从而导致效率下降。

在重叠执行时,即使操作还未完成,调用的函数也会立即返回。

费时的I/O操作在后台进行,这样线程就可以干别的事情。

例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。

"重叠"一词的含义就在于此。

二,异步非阻塞串口通讯的基本原理首先,确定要打开的串口名、波特率、奇偶校验方式、数据位、停止位,传递给CreateFile()函数打开特定串口;其次,为了保护系统对串口的初始设置,调用GetCommTimeouts()得到串口的原始超时设置;然后,初始化DCB对象,调用SetCommState() 设置DCB,调用SetCommTimeouts()设置串口超时控制;再次,调用SetupComm()设置串口接收发送数据的缓冲区大小,串口的设置就基本完成,之后就可以启动读写线程了。

三,异步非阻塞串口通讯的基础知识下面来介绍并举例说明一下编写异步非阻塞串口通讯的程序中将会使用到的几个关键函数CreateFile()功能:打开串口设备函数原型HANDLE CreateFile(LPCTSTR lpFileName, // 串口名称字符串;如:"COM1" 或"COM2"DWORD dwDesiredAccess, // 设置读写属性(访问模式);一般为GENERIC_READ|GENERIC_WRITE, DWORD dwShareMode, // 共享模式;"必须"为0, 即不能共享LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性;一般为NULLDWORD dwCreationDistribution, // 创建方式,串口设置必须设置此值;在这里"必须"为OPEN_EXISTING DWORD dwFlagsAndAttributes, // 文件属性和标志;在这里我们设置成FILE_FLAG_OVERLAPPED ,实现异步I/OHANDLE hTemplateFile // 临时文件的句柄,通常为NULL);说明:如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。

WIN32 API串口通信

WIN32 API串口通信

WIN32 API串口通信掌握串行通信API函数的用法是掌握串行通信编程技术的关键。

在Win32中,系统将串行口与文件统一了起来,对它们的打开、读写、关闭等操作都使用相同的API函数,但是它们之间又有差别,这些差别主要体现在API函数中部分参数的设置上。

有关通信的API主要包括打开串口、关闭串口、配置串口、设置缓冲区、设置超时、事件驱动、读串口、写串口等。

串口的打开和关闭1:串口的打开。

由于在Windows环境中,串口作为一种文件来使用,打开串口用打开文件同样的API函数CreateFile()。

函数原型为:HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 其中几个参数的含义分别为:lpFileName指定文件名或设备名,串口通讯时,它必须是“COMx”,其中的“x”为串口编号,如第一个串口则为“COM1”;dwDesiredAccess为串口读写属性;dwShareMode指定该端口的共享属性,串行口不能作为共享设备,故参数值必须为0;lpSecurityAttributes为安全属性,对于串口应该为0 ;dwCreationDisposition指文件的创建模式,对于串口必须为OPEN—EXISTING;dwFlagsAndAttributes描述了创建文件的其它属性,对于串行口,有效的设置只能是FILE-FLAG-OVERLAPPED 或者0,分别表示异步或同步读写;参数hTemplateFile必须为NULL。

返回值:若成功,返回创建的句柄;否则返回INVALID—HANDLE—VALUE。

经典串口调试助手源程序及串口通信设置

经典串口调试助手源程序及串口通信设置

经典串口调试助手源程序及串口通信设置标题:串口调试助手之经典源程序及通信设置导言:串口调试助手是一种用于串口通信的调试工具,广泛应用于工业控制、测试等领域。

本文将介绍一种基于Windows平台的经典串口调试助手源程序及相关的串口通信设置,旨在帮助读者更好地了解该工具的使用和配置方法。

一、经典串口调试助手源程序1.开发平台:本程序采用C++ Builder 6.0开发。

2.功能概述:(1)串口设置包括设置串口波特率、数据位、校验位、停止位、流控、超时等参数。

(2)发送数据支持以字符串或Hex方式发送数据。

(3)接收数据实时显示串口接收到的数据,并支持数据格式设置。

(4)自动发送数据支持单次或循环发送,可设置发送时间间隔和发送次数。

(5)保存数据支持将接收到的数据保存为文本或二进制文件。

3.源程序结构本程序主要由以下几个模块组成:(1)Main Form:主窗体,包含图形界面显示和基本操作控件。

(2)Serial:串口类,负责串口相关操作,例如打开、关闭、设置参数、发送、接收等。

(3)SaveToFile:文件保存类,负责数据保存到文件中。

(4)Config:配置类,负责程序设置和读取。

(5)Hex:十六进制转换类,用于将字符串转换为Hex格式。

二、串口通信设置1.串口连接串口连接有两种方式:一种是通过RS232串口连接,需要将串口线插入串口,然后将串口线连接到目标设备;另一种是通过USB转串口连接,需要将USB转串口转接器插入计算机USB接口,然后将串口线连接到USB转串口转接器。

2.串口参数设置在使用串口调试助手前,必须先设置串口参数。

打开主窗体后,点击“串口设置”按钮,在弹出的窗口中设置串口的参数,包括波特率、数据位、校验位、停止位、流控和超时等参数。

其中,波特率是指通信时的数据传输速率,常用的有9600、19200、38400、57600、115200等。

数据位是指每次传输的数据位数,常用的有8位、7位、6位等。

基于Win API实现串行通信的方法

基于Win API实现串行通信的方法
科技信息
0I 技术论坛0 T
S I N E&T C N L G F R A I N CE C E H O O YI O M TO N
20 年 08
第 3 期 1
基于 Wi P 实现串行通信的方法 nA I
于 露 李 卿 c 国人 民解 放军 9 5 0部 队 2 0所 辽 宁 中 15 3
的连 接 , 以实 现 控 制外 设 和传 输 数 据 等 目的 。 名 管 道 、 件 槽 、 盘 、 是 控 制 台 , 是用 A I 邮 磁 还 都 P 函数 CetFl来 打 开 raei e 在 Widw 应 用 程 序 的 开 发 中 . nos 我们 常 常需 要 面 临 与 外 围 数 据 源 或 创 建 的 。 该 函 数 的 声 明 为 :HA DL rae i (L C S R N E C etFl e P TT
设 备 通 信 的 问题 。 者 在 实 际 工 作 中 积 累 了一 些 经 验 , 结 合 硬 件 、 笔 现 软 lFl a e / 文 件 名 D RDd Dei d cs,/ 问模 式 D RD p i N m ,/ e WO w s eAces/ 访 r WO 件 , 需 要 注 意 的 要点 作 一 番 探 讨 。 希 望 对各 位 需要 编 写 串 E通 信 程 d S ae d, / 共 及 l w hrMo e /
【 摘
大 连 1 6 2 ) 1 0 3
要】 串行 通 讯 方便 易行 , 军 内外 应 用 广 泛 。 文 章 结 合硬 件 详 细介 绍 了在 W id w 环 境 下 使 用 w i P 在 no s nA I实现 异 步 串行 通 讯 的 方 法 。
【 关键词 】 串行通信; 重叠 IO; n I / WiAP

基于windows api的串口通信方式、软件设计、终端通信协议

基于windows api的串口通信方式、软件设计、终端通信协议

基于windows api的串口通信方式、软件设计、终端通信协议摘要:手机、gps等终端的通信已经深入人民的日常生活中,大部分通信的手段为无线传输、蓝牙、usb,终端通信的串口通信是探究终端核心和通信网络协议等的重要手段,本文主要介绍终端通信的基于windows api的串口通信方式、软件设计、终端通信协议等有关内容。

关键词串口;模块;通信;软件;设计;结构;协议;中图分类号:s611 文献标识码:a 文章编号:引言串口是常用的计算机与外部串行设备之间的数据传输通道。

为了提高串口通信的速度和资源利用率,软件采用windows api函数并基于多线程技术和异步串口通信的设计理念,实现了终端(手机终端、gps)与上位机之间的数据交换,并且将采集到的数据保存到数据库中,便于分析和处理。

软件结构及概述软件涉及的核心内容包含三部分:串口通信模块,终端设备操控模块,通信数据分析模块。

串口通信模块由三个“类”组成-串口初始化(communication_init)、数据发送(message_send)、数据接收(message_receive)。

串口初始化完成对串口关键参数配置后的初始化操作,接收和发送模块分别为单独的功能模块,调用时均会创立独立线程,线程池时刻检索端口连接及忙闲状态,保障数据收发的准确性和稳定性。

软件的组成结构如图 1 所示。

终端设备操控模块,是采用串口向终端发送at指令,以控制终端的行为,目前的at指令能够模拟几乎所有手机按键操作指令,除此以外,at指令亦能够将终端模式打开到专业版本模式下,并且可通过at指令直接获取工程模式下参数。

一般情况下,终端将直接反馈ok,error等信息作为操作执行的回应。

通信数据分析模块是针对特殊终端在非at指令下产生的通信相关数据的收集及分析,能够通过这些数据获悉通信网络的状况。

串口通信模块串口设置界面截图串口的本质功能是作为 cpu 和串行设备间的编码转换器。

Windows串口编程技术

Windows串口编程技术

串口相关函数详解
函数SetCommState函数根据入口参数中的DCB结构
指针对串口设置进行调整。一般来讲,我们仅需对 DCB结构中的少数几个域进行调整,因此,不应该 直接填充该结构,好的做法是首先调用 GetCommState函数获取当前的DCB结构,然后对 关心的域进行调整。另外GetCommProperties函数 可以帮助获取设备的性能参数,比如设备支持的最 大波特率值:dwMaxBaud。
串口相关函数详解
BOOL SetCommBreak(
HANDLE hFile // 设备句柄 ); 该函数将指定通信设备的数据传输挂起,将数据线置于 BREAK状态,直到ClearCommBreak函数被调用。这里BREAK 并不是向串口设备发送的特殊的中断字符,而是通信线路的电气 状态。 BOOL ClearCommBreak( HANDLE hFile // 设备句柄 ); 该 函数恢复指定通信设备的挂起的数据传输过程,并将数据线置于 NONBREAK状态,参见SetCommBreak函数说明。 BOOL ClearCommError( HANDLE hFile, // 设备句柄 LPDWORD lpErrors, // 错误码 LPCOMSTAT lpStat // 通信状态 );
串口相关函数详解
配置类函数根据输入参数/结构对串口进行配置,
每一个Set**函数对应有一个Get**函数用于获 取当前配置。详细介绍请参阅MSDN文档,这 里我们仅对几个关键函数进行说明。 上面介绍的Set**函数中,除了SetCommMask 和SetupComm外,入口参数中都有对应的配置 结构,参阅相关结构的说明可以知道该函数的 作用。SetCommMask函数用来指定关心的事件, 其参数dwEvtMask与操作类函数中 WaitCommEvent的取值一致。下面说明 SetupComm函数。

串行通信的基本原理

串行通信的基本原理

本文详细介绍了串行通信的基本原理,以及在Windows NT、Win98环境下用MFC 实现串口(COM)通信的方法:使用ActiveX控件或Win API.并给出用Visual C++6.0编写的相应MFC32位应用程序。

关键词:串行通信、VC++6.0、ActiveX控件、Win API、MFC32位应用程序、事件驱动、非阻塞通信、多线程.在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。

计算机和单片机(如MCS-51)都具有串行通信口,可以设计相应的串口通信程序,完成二者之间的数据通信任务。

实际工作中利用串口完成通信任务的时候非常之多。

已有一些文章介绍串口编程的文章在计算机杂志上发表。

但总的感觉说来不太全面,特别是介绍32位下编程的更少,且很不详细。

笔者在实际工作中积累了较多经验,结合硬件、软件,重点提及比较新的技术,及需要注意的要点作一番探讨。

希望对各位需要编写串口通信程序的朋友有一些帮助。

一.串行通信的基本原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。

当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。

在接收数据时,串行的位被转换为字节数据。

在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。

应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

串口通信程序的流程如下图:二.串口信号线的接法一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。

25芯和9芯的主要信号线相同。

以下的介绍是以25芯的RS-232C为例。

①主要信号线定义:2脚:发送数据TXD; 3脚:接收数据RXD; 4脚:请求发送RTS; 5脚:清除发送CTS;6脚:数据设备就绪DSR;20脚:数据终端就绪DTR; 8脚:数据载波检测DCD;1脚:保护地; 7脚:信号地。

windows串口

windows串口

windows串口在工业控制中,工控机(一般都基于W indows平台)经常需要与智能仪表通过串口进行通信。

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

一般情况下,工控机和各智能仪表通过RS485总线进行通信。

RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。

每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。

在W in32下,可以使用两种编程方式实现串口通信,其一是使用Activ eX控件,这种方法程序简单,但欠灵活。

其二是调用W indows 的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。

本文我们只介绍API串口通信部分。

串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。

同步操作时,AP I函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。

无论那种操作方式,一般都通过四个步骤来完成:(1)打开串口(2)配置串口(3)读写串口(4)关闭串口(1)打开串口W in32系统把文件的概念进行了扩展。

无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateF ile 来打开或创建的。

该函数的原型为:HANDLE CreateF ile( LPCTSTR lpF ileName,DW ORD dwDesired Access,DW ORD dwShareMode,LPSECURITY_ATTR IBUTES lpSecur ity Attributes,DW ORD dwCreationDistr ibution,DW ORD dwFlags AndAttributes,HANDLE hTemp lateF ile);lpF ileName:将要打开的串口逻辑名,如“COM1”;dwDesir edAccess:指定串口访问的类型,可以是读取、写入或二者并列;dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0;lpSecur ity Attributes:引用安全性属性结构,缺省值为NULL;dwCreationDistribut ion:创建标志,对串口操作该参数必须置为OPEN_EXIST ING;dwF lagsAndAttr ibutes:属性描述,用于指定该串口是否进行异步操作,该值为F ILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作;hTemplateF ile:对串口而言该参数必须置为NULL;同步I/O方式打开串口的示例代码:HANDLE hCom; //全局变量,串口句柄hCom=CreateFile("COM1",//COM1口GENERIC_READ|GENER IC_W RITE, //允许读和写0, //独占方式NULL,OPEN_EXIST ING, //打开而不是创建0, //同步方式NULL);if(hCom==(HANDLE)-1){Afx Mess ageBox("打开COM失败!");return FALSE;}return TRUE;重叠I/O打开串口的示例代码:HANDLE hCom; //全局变量,串口句柄hCom =CreateFile("COM1", //COM1口GENERIC_READ|GENER IC_W RITE, //允许读和写0, //独占方式NULL,OPEN_EXIST ING, //打开而不是创建F ILE_ATTR IBUTE_NORMAL|F ILE_FLAG_OVERLAPPED, //重叠方式NULL);if(hCom ==INVAL ID_HANDLE_VALUE){Afx Mess ageBox("打开COM失败!");return FALSE;}return TRUE;(2)、配置串口在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。

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

WIN32 API串口通讯实例教程第一节实现串口通讯的函数及串口编程简介API函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作。

常用函数及作用下:函数名作用CreateFile 打开串口GetCommState 检测串口设置SetCommState 设置串口BuilderCommDCB 用字符串中的值来填充设备控制块GetCommTimeouts 检测通信超时设置SetCommTimeouts 设置通信超时参数SetCommMask 设定被监控事件WaitCommEvent 等待被监控事件发生WaitForMultipleObjects 等待多个被监测对象的结果WriteFile 发送数据ReadFile 接收数据GetOverlappedResult 返回最后重叠(异步)操作结果PurgeComm 清空串口缓冲区,退出所有相关操作ClearCommError 更新串口状态结构体,并清除所有串口硬件错误CloseHandle 关闭串行口用Windows API 编写串口程序本身是有巨大优点的,因为控制能力会更强,效率也会更高。

API编写串口,过程一般是这样的:1、创建串口句柄,用CreateFile;2、对串口的参数进行设置,其中比较重要的是波特率(BaudRate),数据宽度(BytesBits),奇偶校验(Parity),停止位(StopBits),当然,重要的还有端口号(Port);3、然后对串口进行相应的读写操作,这时候用到ReadFile和WriteFile函数;4、读写结束后,要关闭串口句柄,用CloseFile。

下面依次讲述各个步骤的过程。

第二节创建串口句柄打开串口从字面上去理解,大家也可以发现CreateFile实际上表明Windows是把串口当作一个文件来处理的,所以它也有文件那样的缓冲区、句柄、读写错误等,不同的是,这个文件名字只有固定的几个(一般为四个),而且始终存在(EXSITING),而且在调用CreateFile的时候请注意它的参数。

CreateFile函数原型如下:HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile );lpFileName:指向一个以NULL结束的字符串,该串指定了要创建、打开或截断的文件、管道、通信源、磁盘设备或控制台的名字。

当用CreateFile打开串口时,这个参数可用“COM1”指定串口1,用“COM2”指定串口2,依此类推。

dwDesireAccess:指定对文件访问的类型,该参数可以为GENERIC_READ(指定对该文件的读访问权)或GENERIC_WRITE(指定该文件的写访问权)两个值之一或同时为为这两个值。

用ENERIC_READ|GENERIC_WRITE则指定可对串口进行读写;dwShareMode:指定此文件可以怎样被共享。

因为串行口不支持任何共享模式,所以dwShareMode必须设为0;lpSecurityAttributes定义安全属性,一般不用,可设为NULL。

Win 9x下该参数被忽略;dwCreationDistribution定义文件创建方式,对串口必须设为OPEN_EXISTING,表示打开已经存在的文件;dwFlagsAndAttributes为该文件指定定义文件属性和标志,这个程序中设为FILE_FLAG_OVERLAPPED,表示异步通信方式;hTemplateFile 指向一个模板文件的句柄,串口无模板可言,设为NULL。

在 Windows 9x 下该参数必须为NULL。

串口被成功打开时,返回其句柄,否则返回INVALID_HANDLE_value(0XFFFFFFFF)。

上面说到了异步,那什么是异步呢?异步是相对同步这个概念而言的。

异步,就是说,在进行串口读写操作时,不用等到I/O操作完成后函数才返回,也就是说,异步可以更快得响应用户操作;同步,相反,响应的I/O操作必须完成后函数才返回,否则阻塞线程。

对于一些很简单的通讯程序来说,可以选择同步,这样可以省去很多错误检查,但是对于复杂一点的应用程序,异步是最佳选择。

实例1:/****************** example1.cpp ******************************************/ /* lishaoan 2009-06-29 *****************************************************/ /* ******************************************************/#include <windows.h>#include <stdio.h>#include <stdlib.h>bool openport(char *portname)//打开串口{HANDLE hComm;hComm = CreateFile(portname, //串口号GENERIC_READ | GENERIC_WRITE, //允许读写0, //通讯设备必须以独占方式打开0, //无安全属性OPEN_EXISTING, //通讯设备已存在FILE_FLAG_OVERLAPPED, //异步I/O0); //通讯设备不能用模板打开if (hComm == INVALID_HANDLE_VALUE){CloseHandle(hComm);return FALSE;}elsereturn true;}void main(){bool open;open=openport("com2");if(open)printf("open comport success");system("pause") ;}/************************** program end***************************************/实例2:/****************** example2.cpp ******************************************/ /* lishaoan 2009-06-29 *****************************************************/ /* ******************************************************/#include <windows.h>#include <stdio.h>#include <stdlib.h>bool openport(char *portname)//打开串口{HANDLE hComm;hComm = CreateFile(portname, //串口号GENERIC_READ | GENERIC_WRITE, //允许读写0, //通讯设备必须以独占方式打开0, //无安全属性OPEN_EXISTING, //通讯设备已存在0, //同步I/O0); //通讯设备不能用模板打开if (hComm == INVALID_HANDLE_VALUE){CloseHandle(hComm);return FALSE;}elsereturn true;}void main(){bool open;open=openport("com2");if(open)printf("open comport success");system("pause") ;}/************************** program end***************************************/第三节设置串口在打开通信设备句柄后,常常需要对串行口进行一些初始化工作。

这需要通过一个DCB 结构来进行。

DCB结构包含了诸如波特率、每个字符的数据位数、奇偶校验和停止位数等信息。

在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。

第一次打开串口时,串口设置为系统默认值,函数GetCommState和SetCommState可用于检索和设定端口设置的DCB(设备控制块)结构,该结构中BaudRate、ByteSize、StopBits 和Parity字段含有串口波特率、数据位数、停止位和奇偶校验控制等信息。

程序中用DCB进行串口设置时,应先调用API函数GetCommState,来获得串口的设置信息:GetCommState()用途:取得串口当前状态原型:BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);参数说明:-hFile:串口句柄-lpDCB:设备控制块(Device Control Block)结构地址。

此结构中含有和设备相关的参数。

此处是与串口相关的参数。

由于参数非常多,当需要设置串口参数时,通常是先取得串口的参数结构,修改部分参数后再将参数结构写入。

然后在需要设置的地方对dcb进行设置。

串口有很多的属性,上面也已经介绍了一些最重要的参数。

这里介绍数据结构DCB:typedef struct _DCB { // dcbDWORD DCBlength; //DCB结构体大小DWORD BaudRate; //波特率DWORD fBinary: 1; //是否是二进制,一般设置为TRUEDWORD fParity: 1;//是否进行奇偶校验DWORD fOutxCtsFlow:1; //CTS线上的硬件握手DWORD fOutxDsrFlow:1; //DSR线上的硬件握手DWORD fDtrControl:2; //DTR控制DWORD fDsrSensitivity:1; // DSR sensitivityDWORD fTXContinueOnXoff:1; // XOFF continues TxDWORD fOutX: 1; //是否使用XON/XOFF协议DWORD fInX: 1; //是否使用XON/XOFF协议DWORD fErrorChar: 1; //发送错误协议DWORD fNull: 1; // enable null strippingDWORD fRtsControl:2; // RTS flow controlDWORD fAbortOnError:1; // abort reads/writes on errorDWORD fDummy2:17; // reservedWORD wReserved; // not currently usedWORD XonLim; //设置在XON字符发送之前inbuf中允许的最少字节数WORD XoffLim; //在发送XOFF字符之前outbuf中允许的最多字节数BYTE ByteSize; //数据宽度,一般为8,有时候为7BYTE Parity; //奇偶校验BYTE StopBits; //停止位数char XonChar; //设置表示XON字符的字符,一般是采用0x11这个数值char XoffChar; //设置表示XOFF字符的字符,一般是采用0x13这个数值char ErrorChar; // error replacement characterchar EofChar; // end of input characterchar EvtChar; // received event characterWORD wReserved1; // reserved; do not use} DCB;我们真正在串口编程中用到的数据成员没有几个,在此仅介绍少数的几个常用的参数:DWORD BaudRate:串口波特率DWORD fParity:为1的话激活奇偶校验检查DWORD Parity:校验方式,值0~4分别对应无校验、奇校验、偶校验、校验置位、校验清零DWORD ByteSize:一个字节的数据位个数,范围是5~8DWORD StopBits:停止位个数,0~2分别对应1位、1.5位、2位停止位然后再末尾调用SetCommState就可以了,还是比较方便的。

相关文档
最新文档