码迷,mamicode.com
首页 > Windows程序 > 详细

使用win32 API 实现串行通信 (一)

时间:2015-12-11 22:16:29      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

本文基于wince平台,使用win32 API实现串行通信

1、打开和关闭串行端口

     串行端口设备使用CreateFile函数打开,所使用的名称要遵循特定的格式,即3个字符

COM后紧跟要打开的COM端口号,再加个冒号,冒号是Windows CE所必需的。

如,hser=CreateFile(TEXT(“COM1:”),GENERIC_READ|GENERIC_WRITE,0,

NULL,OPEN_EXISTING,0,NULL),为以可读可写的方式打开COM1端口。

      调用CloseHandle函数关闭一个串行端口。

2、读写串行端口

      调用ReadFlie与WriteFile函数进行读与写,由于Windows CE不支持重叠I/O,因此不要试图从主线程读或写大量的串行数据。所以常用的方法是使用单独的线程读写串口,即读和写分别建立线程,使用各自的线程函数进行处理。

3、异步串口I/O

      虽然Windows CE不支持重叠I/O,但是可以使用多线程来实现同样功能的重叠操作,在主线程忙碌的时候,启动单独线程进行处理同步I/O操作。

      这个时候,可以使用WaitCommEvent函数,该函数将阻塞一个线程直到一个预先选择的串行事件发生,即串口没有数据的时候等待,一旦有数据继续执行。要等待某一个事件,首先使用SetCommMask来设置事件掩码,通常是EV_EXCHAR参数,接收一个字符。

4、配置串行端口

     可以使用GetCommState和SetCommState来配置串行端口。

     需要注意的是,首先用GetCommState获得BCD结构体数据,这里BCD结构体有系统默认的值,不需要你去修改,然后使用SetCommState进行设置,主要设置波特率、起始位、数据位、停止位、奇偶检验。

5、设置端口的超时值

      使用GetCommTimeouts和SetCommTimeouts进行设置。

 

对于串口编程,数据的解析很重要,以上代码写好,基本不会变。下来就是解析和分发。

使用win32 API 实现串行通信 (一)

标签:

原文地址:http://www.cnblogs.com/weiguanhu/p/5040248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!