网站地图>收藏本站>设为首页
定做流程>服务项目>价格参考>付款方式>诚邀加盟>关于本站>联系我们
当前位置:5173毕业设计论文网文章资讯VC

基于VC++串口通信的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-04-21 10:59:00
QQ交谈在线咨询详情 5173论文网竭诚为您服务 本站永久域名:www.lw5173.com

   关API函数。

  在32位windows系统中,串口和其他通信设备都是作为文件处理的。串口的打开、关
  闭、读取和写入所有的函数与操作文件的函数完全一致。
  打开串口
  通信会话以调用CreateFile()开始。CreateFile()为读访问、写访问或读写访问“打开”串
  口。按照windows的通常做法,CreateFile()返回一个句柄,随后在打开端口的操作中使用。
  CreateFile()函数非常复杂,复杂性的原因之一是他是通用的。可以使用 CreateFile 打开已经
  存在的文件,创建新文件和打开根本就不是文件的设备,例如串口、并口、和调制解调器。
  CreateFile()函数声明如下:
  HANDLE CreateFile(
  LPCTSTR lpszName,   //lpszName:指定要打开的串口逻辑名,用字符串表示,
  例如”COM1”,表示串口1
  DWORD fdwAccess,   //fdwAccess:用来指定串口访问的类型。与文件一样,
  串口也是可以被打开一并读取写入或者两者兼有。
  GENERIC_READ为读取访问,GENERIC_WRITE 为写访问
  const GENERIC_READ = 0x80000000h;
  const GENERIC_WRITE = 0x40000000h;
  因为大部分串口通信都是双向的, 所以在设置中通常将
  两个标识连接起来使用,
  即 fdwAccess = GENERIC_READ|GENERIC_WRITE
  DWORD fdwShareMode,  //fdwShareMode:指定该端口的共享属性。该参数是为
  那些有许多应用程序共享的文件提供的。 对于不能共享
  的串口,它必须设为0。这就是文件与通信设备之间的
  主要差异之一。 如果在当前的应用程序调用 CreateFile()
  时,另一个应用程序已经打开了串口,该函数就会返回
  错误代码,原因是两个应用程序不能共享一个端口。然
  而, 同一个应用程序的多个线程可以共享由 CreateFile()
  返回的端口句柄,并且根据安全性属性设置,该句柄可
  以被打开端口的应用程序的子程序所继承。
  LPSECURITY_ATTRIBUTES lpsa,  //lpsa: 引 用 安 全属性 结构
  (SECURITY_ARRTIBUTES) ,该结构定义了一些属
  性,例如通信句柄如何被打开端口的应用程序的子
  程序所继承。将该参数设置为NULL将为该端口分
  配默认的安全性属性。 子应用程序所继承的默认属
  性是该端口不能被继承的。
  安全属性结构 SECURITY_ATTRIBUTES 声明如下:
  typedef struct _SECURITY_ATTRIBUTES{
  DWORD nLength;//指明该结构的长度
  DWORD lpSecurityDescriptor;//指向一个安全描
  述字符
  BOOL bInheritHandle;//表明句柄是否能被继承
  }SECURITY_ATTRIBUTES;
  DWORD fdwCreate,    //fdwCreate:指定如果 CreateFile()正在被已有的文件调
  用时应采取的动作。因为串口总是存在,fdwCreate 必
  须设置成 OPEN_EXISTING。该标志告诉 Windows 不要
  企图创 建 新端口,而是打开 已存在的端 口。
  OPEN_EXISTING 常数定义为:const OPEN_EXISTING = 3;
  DWORD fdwAttrsAndFlags,  //fdwAttrsAndFlags:描述了端口的各种属性。对于
  文件来说,对于文件来说可能具有很多属性,但对于串
  口,唯一有意义的设置是 FILE_FLAG_OVERLAPPED。当
  创建时指定该设置, 端口 I/O可以在后台进行(后台 I/O
  也叫异步I/O) 。 FILE_FLAG_OVERLAPPED常数定义如下:
  const FILE_FLAG_OVERLAPPED = 0x40000000h;
  HANDLE hTemplateFile    //hTemplateFile:指向模版文件的句柄,当端口处于打开
  状态时,不使用该参数,因而必须设置成 0。
  )
  当使用 CreateFile()函数打开串口时,为实现调制解调器的排他性访问,共享标识
  (fdwShareMode)必须设为零;创建标识(fdwCreate)必须设为 OPEN_EXISTING;模板句柄(hTemplateFile)必须设置为空。

以上内容只是毕业设计作品的部分资料介绍,如果了解更多详情请联系客服QQ:57510459
     购买帮助>>

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论