欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

outportb函數(shù)與inportb函數(shù)是什么-創(chuàng)新互聯(lián)

outportb函數(shù)與inportb函數(shù)是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)客戶(hù)idc服務(wù)中心,提供眉山服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線(xiàn)服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶(hù)提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性?xún)r(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。

outportb函數(shù)是屬于Turbo C(TC)語(yǔ)言庫(kù)函數(shù),這是一個(gè)輸出到硬件端口的函數(shù),似乎是當(dāng)年學(xué)習(xí)C語(yǔ)言的時(shí)候用這個(gè)東西,現(xiàn)在用的C++里面沒(méi)有這個(gè)函數(shù),今天在做一個(gè)軟件說(shuō)明書(shū)時(shí),看到這個(gè)函數(shù),在網(wǎng)上搜索了下,放在這里,以備大家使用時(shí)查明:

-----------------------------------------------------------------

outportb函數(shù)
函數(shù)原型: void outportb(unsigned char port, unsigned char value)
函數(shù)功能: 向port地址的接口輸出value
函數(shù)返回:
函數(shù)說(shuō)明: port 端口地址,value要輸出的8位數(shù)
所屬文件: <dos.h>
程序例:

#include <stdio.h> 

  #include <dos.h> 

  int main(void) 

  { 

  int value = 64; 

  int port = 0; 

  outportb(port, value); 

  printf("Value %d sent to port number %d\n", value, port); 

  return 0; 

}


---------------------------------------------------------------------------------------------

另附上與之對(duì)應(yīng)的inportb函數(shù)的說(shuō)明

函數(shù)名:inportb

功 能: 返回從指定硬件端口讀入的一個(gè)8位二進(jìn)制(一個(gè)字節(jié))。

用 法: int inportb(int port);

程序例:

#include <stdio.h> 

  #include <dos.h> 

  int main(void) 

  { 

  int value ; 

  int port =0x210; 

  value=inportb(port); 

  printf("port 0x%x sent Value is%d\n", port,value ); 

  return 0; 

  }

而在C++中,沒(méi)有像inportb/outportb,inportw/outputw專(zhuān)門(mén)的端口讀寫(xiě)函數(shù)  
  但可以用::CREATEFILE(。。。。)


例子:

  BOOL   CSerialPort::InitPort(CWnd*   pPortOwner, //   the   owner   (CWnd)   of   the   port   (receives   message)   
        UINT     portnr, //   portnumber   (1..4)   
        UINT     baud, //   baudrate   
        char     parity, //   parity     
        UINT     databits, //   databits     
        UINT     stopbits, //   stopbits     
        DWORD   dwCommEvents, //   EV_RXCHAR,   EV_CTS   etc   
        UINT     writebuffersize) //   size   to   the   writebuffer   
  {   
  assert(portnr   >   0   &&   portnr   <   5);   
  assert(pPortOwner   !=   NULL);   
    
  //   if   the   thread   is   alive:   Kill   
  if   (m_bThreadAlive)   
  {   
  do   
  {   
  SetEvent(m_hShutdownEvent);   
  }   while   (m_bThreadAlive);   
  TRACE("Thread   ended\n");   
  }   
    
  //   create   events   
  if   (m_ov.hEvent   !=   NULL)   
  ResetEvent(m_ov.hEvent);   
  m_ov.hEvent   =   CreateEvent(NULL,   TRUE,   FALSE,   NULL);   
    
  if   (m_hWriteEvent   !=   NULL)   
  ResetEvent(m_hWriteEvent);   
  m_hWriteEvent   =   CreateEvent(NULL,   TRUE,   FALSE,   NULL);   
    
  if   (m_hShutdownEvent   !=   NULL)   
  ResetEvent(m_hShutdownEvent);   
  m_hShutdownEvent   =   CreateEvent(NULL,   TRUE,   FALSE,   NULL);   
    
  //   initialize   the   event   objects   
  m_hEventArray[0]   =   m_hShutdownEvent; //   highest   priority   
  m_hEventArray[1]   =   m_ov.hEvent;   
  m_hEventArray[2]   =   m_hWriteEvent;   
    
  //   initialize   critical   section   
  InitializeCriticalSection(&m_csCommunicationSync);   
    
  //   set   buffersize   for   writing   and   save   the   owner   
  m_pOwner   =   pPortOwner;   
    
  if   (m_szWriteBuffer   !=   NULL)   
  delete   []   m_szWriteBuffer;   
  m_szWriteBuffer   =   new   char[writebuffersize];   
    
  m_nPortNr   =   portnr;   
    
  m_nWriteBufferSize   =   writebuffersize;   
  m_dwCommEvents   =   dwCommEvents;   
    
  BOOL   bResult   =   FALSE;   
  char   *szPort   =   new   char[50];   
  char   *szBaud   =   new   char[50];   
    
  //   now   it   critical!   
  EnterCriticalSection(&m_csCommunicationSync);   
    
  //   if   the   port   is   already   opened:   close   it   
  if   (m_hComm   !=   NULL)   
  {   
  CloseHandle(m_hComm);   
  m_hComm   =   NULL;   
  }   
    
  //   prepare   port   strings   
  sprintf(szPort,   "COM%d",   portnr);   
  sprintf(szBaud,   "baud=%d   parity=%c   data=%d   stop=%d",   baud,   parity,   databits,   stopbits);   
    
  //   get   a   handle   to   the   port   
  m_hComm   =   CreateFile(szPort, //   communication   port   string   (COMX)   
            GENERIC_READ   |   GENERIC_WRITE, //   read/write   types   
            0, //   comm   devices   must   be   opened   with   exclusive   access   
            NULL, //   no   security   attributes   
            OPEN_EXISTING, //   comm   devices   must   use   OPEN_EXISTING   
            FILE_FLAG_OVERLAPPED, //   Async   I/O   
            0); //   template   must   be   0   for   comm   devices   
    
  if   (m_hComm   ==   INVALID_HANDLE_VALUE)   
  {   
  //   port   not   found   
  delete   []   szPort;   
  delete   []   szBaud;   
    
  return   FALSE;   
  }   
    
  //   set   the   timeout   values   
  m_CommTimeouts.ReadIntervalTimeout   =   1000;   
  m_CommTimeouts.ReadTotalTimeoutMultiplier   =   1000;   
  m_CommTimeouts.ReadTotalTimeoutConstant   =   1000;   
  m_CommTimeouts.WriteTotalTimeoutMultiplier   =   1000;   
  m_CommTimeouts.WriteTotalTimeoutConstant   =   1000;   
    
  //   configure   
  if   (SetCommTimeouts(m_hComm,   &m_CommTimeouts))   
  {         
  if   (SetCommMask(m_hComm,   dwCommEvents))   
  {   
  if   (GetCommState(m_hComm,   &m_dcb))   
  {   
  m_dcb.fRtsControl   =   RTS_CONTROL_ENABLE; //   set   RTS   bit   high!   
  if   (BuildCommDCB(szBaud,   &m_dcb))   
  {   
  if   (SetCommState(m_hComm,   &m_dcb))   
  ;   //   normal   operation...   continue   
  else   
  ProcessErrorMessage("SetCommState()");   
  }   
  else   
  ProcessErrorMessage("BuildCommDCB()");   
  }   
  else   
  ProcessErrorMessage("GetCommState()");   
  }   
  else   
  ProcessErrorMessage("SetCommMask()");   
  }   
  else   
  ProcessErrorMessage("SetCommTimeouts()");   
    
  delete   []   szPort;   
  delete   []   szBaud;   
    
  //   flush   the   port   
  PurgeComm(m_hComm,   PURGE_RXCLEAR   |   PURGE_TXCLEAR   |   PURGE_RXABORT   |   PURGE_TXABORT);   
    
  //   release   critical   section   
  LeaveCriticalSection(&m_csCommunicationSync);   
    
  TRACE("Initialisation   for   communicationport   %d   completed.\nUse   Startmonitor   to   communicate.\n",   portnr);   
    
  return   TRUE;   
  }


關(guān)于outportb函數(shù)與inportb函數(shù)是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

本文題目:outportb函數(shù)與inportb函數(shù)是什么-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article10/gisdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、面包屑導(dǎo)航搜索引擎優(yōu)化網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
91午夜精品在线观看| 色婷婷精品二区久久蜜臀av | 黄色录像一级大片中国的| 人妻有码中文字幕在线| 欧美日韩亚洲综合国产人| 丰满人妻毛片一区二区三区| 久久精品久久精品欧美大片| 操女逼无遮挡国产av| 亚洲国产第一av导航| 日韩在线一区二区三区电影| 国产精品欧美一区二区视频| 久久国产精品亚洲熟女66r| 91欧美日韩国产在线观看| 免费黄片视频大全在线播放| 欧美日韩激情中文字幕| 另类国产人妖免费视频网站大全| 尤物视频在线观看羞羞| 东京热男人的av天堂| 青青草成人一区二区三区| 婷婷精品国产欧美精品亚洲| 激情综合婷婷中文字幕| 国产91九色蝌蚪在线观看| 国产大学生露脸在线视频| 久久精品国产亚洲av麻| 男人天堂av东京热伊人| 国产高潮精品呻吟久久av| 99精品热这里只有精品| 国产av一区二区三区野战| 自偷自拍在线免费观看| 91色老久久精品偷偷鲁无毒| 91精品国产欧美在线| 精品人妻av中文字幕| 一区二区三区四区蜜桃av| 亚洲国产精品激情在线| 国内自拍韩国资源在线| 日韩高清一级黄色大片网站| 人人妻人人澡人人爱| 亚洲香蕉视频免费在线观看| 国产精品毛片一区二区三| 黄色免费大片在线播放| 男女做爰高清无遮挡免费|