首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > Win32下的几种串口通信编程
【标  题】:Win32下的几种串口通信编程
【关键字】:编程,in,Win,Win32,串口,32,Wi,Win32
【来  源】:网络

Win32下的几种串口通信编程

---- 要完成串口通信, 在32位模式下, 一般说来有以下四种方法:

---- 1. 以文件方式打开串口:

---- 这里使用的是Win32 API 函数, 所以无论在BCB或VC下都可以实现. 具体的函数的意义可以参考Win32 API 的帮助.这里有一个易于使用的BCB下的类, 可以方便的使用串口.

---- 下面给出简要说明:

---- (1) 应用CreateFile() 来初始化串口


   FhFileComm=CreateFile(
       FCommName.c_str(),
       GENERIC_READ | GENERIC_WRITE,
       0,  // exclusive access
       &lpSecurity,
       OPEN_EXISTING,
       FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // overlapped I/O
       NULL );
   if( FhFileComm == INVALID_HANDLE_VALUE)
      return false;
  
(2)  应用WriteFile() 和 ReadFile() 从串口读写数据
     bool MyComm::WriteBuffer(unsigned char *buffer,unsigned long length)
       {
        return  WriteFile(FhFileComm,buffer,length,&length,&FgOverLapped);
       }
     bool MyComm::ReadBuffer(unsigned char *buffer,unsigned long length)
       {
        return  ReadFile(FhFileComm,buffer,length,&length,&FgOverLapped);
       }
  相应的源文件为 UsageComm.cpp UsageComm.h

---- 2. 使用现成的控件:

---- 易于使用的是微软的MS Communication 控件, 它是做为一个 .ocx 提供的.

---- 在BCB 中可以用Import ActiveX Control 将它加入到BCB 中, 缺省是加载在ActiveX 页中. 就可以作为一个普通的BCB 控件来使用了.(也有不少第三方提供的其它硬件操作控件)

---- 3. 直接嵌入汇编法:

---- (该方法不能在NT下使用, 由于98的非完全保护, 下面的代码可以使用)利用BCB的直接嵌入汇编功能, 可以在BCB中直接对串口操作.

---- 如下所示,在BCB中使用汇编代码如下

  byte  __fastcall ReadByte(WORD Address)
  // eax :address

  {
    asm
    {
      mov   DX,AX
      in    AL,DX
    }
  }

  void  __fastcall WriteByte (unsigned char byte, WORD Address)
// EAX: BYTE EDX: ADDRESS
  {
    asm
    {
      out    DX,AL
    }
  }

---- 这里必须用__fastcall 调用约定以使在调用该函数时用寄存器传递参数.

---- (用在BCB中的汇编指令代码in 和out必须用小写,(其余可以为大写)寄存器名称大小写都可以)

---- 其它的如写多个字节,读多个字节, 同样可以实现.

---- 4. 最困难的要数用VxD来实现:

---- 这不是一下子能说得清的, 如果要做, 当然要找本书了.

用C++Builder开发ISAPI扩展应用程序:【上一篇】
利用C++ Builder实现网络连接检测程序:【下一篇】
【相关文章】
  • 用C++ Builder编程实现串行通信
  • 取得本地internet机器的名字及IP地址
  • BCB6中Indy9发送邮件的例子
  • Winsock错误代码一览表
  • Winsock API 函数大全 3
  • 在Windows桌面创建快捷方式
  • WindowsNT下Service的编程
  • Windows任务栏系统托盘图标演示程序
  • win9x下自动启动程序的10种方法
  • Win9x下隐藏程序不出现在CTRL-ALT-DEL对话框中
  • 【随机文章】
  • Struts1.2中配置数据源
  • ACCESS 中如何用 WSH 创建桌面快捷方式
  • Linux 指令篇:档案目录管理--cut
  • 使用梅花雨日历控件应该注意的问题
  • qmail系统的迁移经验共享
  • COM编程入门1
  • 宽带有线接入网技术及其比较
  • 从电话线跨到VPN
  • 采用无盘的十大理由
  • static_cast<>/dynamic_cast<>/const_cast<>
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.