国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Win32下的幾種串口通信編程

2019-11-17 05:38:27
字體:
來源:轉載
供稿:網友

  ---- 要完成串口通信, 在32位模式下, 一般說來有以下四種方法:

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

---- 這里使用的是Win32 API 函數, 所以無論在BCB或VC下都可以實現. 具體的函數的意義可以參考Win32 API 的幫助.這里有一個易于使用的BCB下的類, 可以方便的使用串口.

---- 下面給出簡要說明:

---- (1) 應用CreateFile() 來初始化串口


   FhFileComm=CreateFile(
       FCommName.c_str(),
       GENERIC_READ GENERIC_WR99vE,
       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來實現:

---- 這不是一下子能說得清的, 假如要做, 當然要找本書了.



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金阳县| 吴江市| 米脂县| 深水埗区| 博客| 平江县| 利津县| 偃师市| 方城县| 德江县| 务川| 太原市| 文安县| 壶关县| 申扎县| 富蕴县| 壤塘县| 大新县| 太湖县| 芜湖县| 搜索| 南昌市| 章丘市| 秦皇岛市| 岳西县| 于都县| 临朐县| 华池县| 大余县| 万安县| 铁岭市| 富阳市| 金溪县| 南乐县| 惠东县| 繁峙县| 大新县| 那坡县| 贵德县| 自治县| 孟州市|