版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年农业种植精准化降本增效项目分析方案
- 房务中心领班演讲稿
- 出入境安全演讲稿
- 2026年秋招:上海电气集团试题及答案
- 2026年山西图书馆成本管控专员招聘考试练习试卷(含答案)
- 2026年浙江公交集团消防安全管理员招聘考试练习试卷(含答案)
- 2026年贵州退役军人服务中心文秘招聘考试练习试卷(含答案)
- 2026大庆四中考试题目及答案
- 警务公开发展现状及对策
- 常见招考人员试题及答案分析
- 2026广西壮族自治区交通运输厅直属事业单位重点领域急需紧缺高层次人才招聘39人考试备考题库及答案详解
- 2025-2026 学年七年级上期末语文试卷
- 融资渠道2026年融资咨询服务合同
- 2026成人高考专升本语文模拟测试试题及答案
- 2026秋统编版(新教材)九年级历史上册(全册)每课核心知识点清单梳理
- 2026秋小学统编版道德与法治五年级上册教学计划含进度表
- 工程项目部绩效考核实施细则
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- brc内审员考试试题及答案
- 2026年联通考试试题及答案
- 云梯车安全专项施工方案
评论
0/150
提交评论