在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      關(guān) 閉

      新聞中心

      EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > COM組件技術(shù)在現(xiàn)場(chǎng)總線控制系統(tǒng)組態(tài)軟件中的應(yīng)用

      COM組件技術(shù)在現(xiàn)場(chǎng)總線控制系統(tǒng)組態(tài)軟件中的應(yīng)用

      作者: 時(shí)間:2011-07-29 來源:網(wǎng)絡(luò) 收藏

      HRESULT SendData[in]BYTE SendBuf[256]);

      [id(3),helpstring(啟動(dòng)多線程)]

      HRESULT SendFinish ([in]BOOL bFinish);

      [id(4),helpstring(此函數(shù)返回值表示數(shù)據(jù)是否已向下位機(jī)發(fā)送完畢,同時(shí)可顯示哪些模塊未被配置,通常在此函數(shù)前先用FinishQuery([out]BOOL*bFinish)查詢發(fā)送是否完畢)]

      HRESULT ReceiveResult([out]BOOL *bSendFinish);

      [id(5)],helpstring(此函數(shù)返回值表示數(shù)據(jù)是否已向下位機(jī)發(fā)送完畢,“真”表示發(fā)送完畢)]

      HRESULT FinishQuery([out]BOOL *bFinish);

      [id(6),helpstring(網(wǎng)絡(luò)檢查,用來在發(fā)送數(shù)據(jù)前檢測(cè)是否有該節(jié)點(diǎn)存在)]

      HRESULT NetCheck[in]BYTE sour,[in]BYTE des,[in]BYTE type,[out]BOOL *flag);

      [id(7),helpstring(讀取模塊的測(cè)量值)]

      HRESULT GetPV([iv]BYTE bDesNode,[out]float value[256]);

      }

      適配器初始化函數(shù):

      #include conio.h>

      #include winioctl.h

      //包含其它頭文件

      ……

      STDMETHODIMP CNCardWork::NcardInit(BYTE bSrcNode,BYTE bIntrAdd,BYTE bRate,long bSegmentAdd,BOOL *flag)

      {

      NcardCtrl cardctrl; //NcardCtrl類的函數(shù)調(diào)用VxD函數(shù)

      exbSrcNode=bSrcNode; //給上位機(jī)節(jié)點(diǎn)賦值

      exbRate=bRate; //下位機(jī)與適配器的通信波特率

      BOOL transfersign; //初始化是否成功標(biāo)志

      DWORD dwSegmentaddress=bSegmentAdd;//適配器段地址

      HANDLE hDevice=NULL; //指向線性指針對(duì)句柄

      LpBaseAddress=(PBYTE)cardctrl.MapLinearAddress(dwSegmentaddress,0x400,hDevice);

      //調(diào)用VxD函數(shù),獲得指向ISA總線物理地址的線性地址指針

      cardctrl,UnMapLinearAddress(lpBaseAddress,hDevice);

      //關(guān)閉VxD

      //調(diào)用適配器初始化函數(shù)

      _outp(0x310,0x01); //打開郵箱鎖

      lpBaseAddress[0x3F0]=bSrcNodeNumber;//上位機(jī)節(jié)點(diǎn)號(hào)

      lpBaseAddress[0x3F1]=bRate; //波特率

      lpBaseAddress[0x3F8]=0xC6; //適配器初始化命令字

      DrvDelay(20,false); //延時(shí)20ms

      ………… //初始化后其它操作

      _outp(0x310,00); //關(guān)閉郵箱鎖

      return S_OK;

      }

      4 虛擬設(shè)備驅(qū)動(dòng)程序

      VxD是虛擬設(shè)備驅(qū)動(dòng)程序(Virtual Device Driver)的縮寫,中間的x表示某一設(shè)備。它能夠無限制地訪問所有硬件設(shè)備、自由地檢測(cè)操作系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如描述符和頁(yè)表)以及訪問任何內(nèi)存位置。

      本文中,VxD將ISA總線對(duì)應(yīng)的物理地址轉(zhuǎn)換成段線性地址,供應(yīng)用程序使用。VxD的開發(fā)工具是VtoolsD,轉(zhuǎn)換時(shí)用的函數(shù)為MapPhysToLinear。以下是部分程序代碼:

      //定義結(jié)構(gòu)體

      typedef struct _MapDevRequest

      {

      PVOID mdr_PhysicalAddress;DWORD mdr_SizeInBytes;

      PVOID mdr_LinearAddress;WORD mdr_Status;

      }MAPDEVREQUEST,*PMAPDEVREQUEST;

      #includevtoolscp.h>



      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉