版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于基于Windows API的串行通信程序设计的串行通信程序设计在在Windows下编写串行通信程序方法有:下编写串行通信程序方法有:u 使用串行通信程序控件使用串行通信程序控件MSCOMM.OCX;u 使用使用Windows 系统提供的有关串行通信系统提供的有关串行通信API函数;函数;u 使用其他第三方提供的串行通信控件;使用其他第三方提供的串行通信控件; 使用使用API函数实现串行通信,具有通用、灵活、无须第三方控件支函数实现串行通信,具有通用、灵活、无须第三方控件支持等优点。持等优点。一、串行通信一、串行通信API函数简介函数简介1、打开串口、打开串口 要使用串口,必须先打开串口。在
2、要使用串口,必须先打开串口。在VC+中,打开串口与打开文件使用相中,打开串口与打开文件使用相同的函数,其原型为:同的函数,其原型为: HANDLE CreateFile( LPCTSTR lpFileName, /指向串口名称字符串,如指向串口名称字符串,如“COM1” DWORD dwDesiredAccess, /访问模式,读、写访问模式,读、写 DWORD dwShareMode, /共享模式,共享模式,0=独占独占 LPSECURITY_ATTRIBUTES lpSecurityAttributes, /安全属性,安全属性,NULL DWORD dwCreationDispositio
3、n, /创建方式,创建方式,OPEN_EXISTING DWORD dwFlagsAndAttributes, /文件属性,文件属性,0 HANDLE hTemplateFile /临时文件句柄,临时文件句柄,NULL ); 创建成功,返回串口的句柄。应保存好该句柄,接下来的操作中要用创建成功,返回串口的句柄。应保存好该句柄,接下来的操作中要用到。到。2、对串口进行初始设置、对串口进行初始设置 打开串口后,应设置其工作参数和工作环境。主要为:打开串口后,应设置其工作参数和工作环境。主要为:(1) 设置通信的参数设置通信的参数 串口的参数用一个串口的参数用一个DCB结构描述。该结构有结构描述。该
4、结构有28个成员,这里仅列出个成员,这里仅列出4个个关键成员:关键成员: typedef struct _DCB DWORD BaudRate; /波特率波特率 BYTE ByteSize; /每个字符的位数每个字符的位数 BYTE Parity; / 0=无校验无校验,1=奇校验奇校验,2=偶校验偶校验 BYTE StopBits; /停止位数。停止位数。0,1,2 = 1, 1.5, 2 ); 一般情况下,未列出的成员可采用系统指定的值。因此,应先得到一般情况下,未列出的成员可采用系统指定的值。因此,应先得到系统对系统对DCB结构的配置,再按自己的要求修改上述结构的配置,再按自己的要求修改
5、上述4个成员。个成员。 下面的程序段是对下面的程序段是对DCB结构的配置代码样例:结构的配置代码样例: DCB MyDcb; /定义定义DCB结构结构 GetCommState(MyHand,&MyDcb); /得到系统的配置得到系统的配置 MyDcb. BaudRate=2400; / 将波特率改为将波特率改为2400bps MyDcb.ByteSize=8; / 8位数据位数据 MyDcb.Parity=0; / 无校验位无校验位 MyDcb.StopBits=1; /1停止位停止位 SetCommState(MyHand,&MyDcb); /按新参数配置串口按新参数配置串
6、口在得到系统的配置值后,也可以用如下函数来修改在得到系统的配置值后,也可以用如下函数来修改DCB结构的结构的4个成员个成员: BuildCommDCB(COM1:2400,n,8,1,&MyDcb);其中,字符串中的各字符含义为:其中,字符串中的各字符含义为: COM1: 表示串口表示串口1; 2400: 表示波特率为表示波特率为2400bps ; n: 表示无校验位;表示无校验位; 8: 表示表示8位数据;位数据; 1: 表示表示1停止位。停止位。(2)设置接收和发送缓冲区的大小)设置接收和发送缓冲区的大小 在在Windows下,用户接收和发送数据的操作形式如下:下,用户接收和发送数
7、据的操作形式如下:u 接收数据接收数据 系统会自动地将串口接收到的数据存放到内存中的一个系统会自动地将串口接收到的数据存放到内存中的一个接收缓冲区接收缓冲区。 用户程序只需从该缓冲区得到数据,不必直接访问芯片的数据接收缓冲器。用户程序只需从该缓冲区得到数据,不必直接访问芯片的数据接收缓冲器。u 发送数据发送数据 用户程序只需将要发送的数据写入一个用户程序只需将要发送的数据写入一个发送缓冲区发送缓冲区即可。一旦写入,即可。一旦写入,系统会自动发送出去。系统会自动发送出去。 因此,用户程序应根据需要设置因此,用户程序应根据需要设置接收和发送接收和发送缓冲区的大小。至于缓冲区的大小。至于接收接收和发
8、送和发送缓冲区的位置在何处,用户程序不必关心。缓冲区的位置在何处,用户程序不必关心。 函数原型:函数原型: BOOL SetupComm( HANDLE hFile, /串口的句柄串口的句柄 DWORD dwInQueue, /接收缓冲区的大小,字节数接收缓冲区的大小,字节数 DWORD dwOutQueue /发送缓冲区的大小,字节数发送缓冲区的大小,字节数 );(3)设置读写超时时间)设置读写超时时间u 读超时读超时 用户程序从接收缓冲区读取数据时,若在指定的时间内未读到数据,用户程序从接收缓冲区读取数据时,若在指定的时间内未读到数据,称为读超时。称为读超时。u 写超时写超时 用户程序将要
9、发送的数据写入发送缓冲区后。若在指定的时间内未将用户程序将要发送的数据写入发送缓冲区后。若在指定的时间内未将写入的数据全部发送出去,称为写超时。写入的数据全部发送出去,称为写超时。 因此,用户程序应根据实际情况设置因此,用户程序应根据实际情况设置读超时和写超时读超时和写超时。 读读/写超时由一个结构来描述,其定义为:写超时由一个结构来描述,其定义为: typedef struct _COMMTIMEOUTS DWORD ReadIntervalTimeout; /读间隔读间隔 DWORD ReadTotalTimeoutMultiplier; /读时间系数读时间系数 DWORD ReadTot
10、alTimeoutConstant; /读时间常数读时间常数 DWORD WriteTotalTimeoutMultiplier; /写时间系数写时间系数 DWORD WriteTotalTimeoutConstant; /写时间常数写时间常数 COMMTIMEOUTS,*LPCOMMTIMEOUTS;读超时时间读超时时间 = 读时间系数读时间系数要读取(接收)的字节数要读取(接收)的字节数 读时间常数;读时间常数;写超时时间写超时时间 = 写时间系数写时间系数要发送(写入)的字节数要发送(写入)的字节数 写时间常数;写时间常数;读操作除了要符合读超时时间读操作除了要符合读超时时间 外,还应符
11、合:读取的两个字节之间的外,还应符合:读取的两个字节之间的间隔不能超过读间隔。间隔不能超过读间隔。设置超时的函数为:设置超时的函数为: SetCommTimeouts(hCom,&TimeOuts);参数为:参数为: hCom 串口句柄;串口句柄; TimeOuts 超时结构。超时结构。(4)读写操作)读写操作u 读操作函数原型:读操作函数原型: BOOL ReadFile( HANDLE hFile, /串口句柄串口句柄 LPVOID lpBuffer, /指向读得的数据存放的变量指向读得的数据存放的变量 DWORD nNumberOfBytesToRead, /希望读到多少字节希望读到多少字节 LPDWORD lpNumberOfBytesRead, /返回实际读到多少字节返回实际读到多少字节 LPOVERLAPPED lpOverlapped /指向一个指向一个 OVERLAPPED结构,结构,NULL );u 写操作写操作函数原型:函数原型: BOOL WriteFile( HANDLE hFile, /串口句柄串口句柄 LPVOID lpBuffer, /指向发送数据存放的变量指向发送数据存放的变量 DWORD nNumberOfBytesToWrite, /希望发送多少字节希
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级音乐上册教案
- 企业经营战略概论模拟试卷
- 2026 学龄前自闭症精细提升课件
- 会计从业资格(会计基础)模拟试卷157
- 会议管理制度
- 促销活动方案标准版本
- 企业加工合同
- 2026 学龄前自闭症入门干预认知课件
- 25-第十章 体温监测与显示实验
- 生物-2026届长春高三下三模
- 2023年广东交通职业技术学院单招综合素质模拟试题及答案解析
- 郑渊洁童话之《五个苹果折腾地球》
- 大一下学期高等数学期中考试试卷及答案
- GB/T 27725-2011热塑性塑料蝶阀
- GB/T 1957-2006光滑极限量规技术条件
- 农业行政处罚程序和文书制作课件
- 工业机器人编程与实操期末试题
- 初中化学中考其他-学案离子(物质)的检验鉴别
- 输电线路改造工程验收交底
- 气动冲床设备日常点检标准作业指导书
- 五年级苏教版数学下册《质因数和分解质因数》公开课教案
评论
0/150
提交评论