千家信息网

outportb函数与inportb函数是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,outportb函数与inportb函数是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。outportb函数是属于Turbo C
千家信息网最后更新 2026年11月01日outportb函数与inportb函数是什么

outportb函数与inportb函数是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

outportb函数是属于Turbo C(TC)语言库函数,这是一个输出到硬件端口的函数,似乎是当年学习C语言的时候用这个东西,现在用的C++里面没有这个函数,今天在做一个软件说明书时,看到这个函数,在网上搜索了下,放在这里,以备大家使用时查明:

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

outportb函数

函数原型: void outportb(unsigned char port, unsigned char value)
函数功能: 向port地址的接口输出value
函数返回:
函数说明: port 端口地址,value要输出的8位数
所属文件: 
程序例:
#include    #include    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; }


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

另附上与之对应的inportb函数的说明

函数名: inportb
  功 能: 返回从指定硬件端口读入的一个8位二进制(一个字节)。
  用 法: int inportb(int port);
  程序例:
 
#include    #include    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++中,没有像inportb/outportb,inportw/outputw专门的端口读写函数
但可以用::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;     }



关于outportb函数与inportb函数是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

函数 端口 问题 输出 地址 更多 硬件 程序 语言 C++ 帮助 解答 易行 简单易行 东西 二进制 位数 例子 内容 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 中关村互联网科技集团 金融科技还是互联网 互联网科技开发公司 互联网医疗科技 奇士达互联网科技 互联网金融监管科技 湖南洣水互联网科技有限公司扣款 互联网科技公司需要的职位 温州喔噻互联网科技有限公司 广州市恰铎互联网科技有限公司 银川新华互联网科技学校联系电话 浙南科技城互联网大厦建设工程 科技大学互联网 厦门江牛科技互联网 互联网科技机房 亚光科技低轨卫星互联网 承德科技产业互联网平台 株洲百竞科技的互联网营销顾问 颐高云石互联网科技 小马过河互联网科技 左右互联网络科技 天速互联网络科技有限公司 互联网科技实习生岗位职责 承德科技产业互联网发展 广州市恰铎互联网科技有限公司 世界互联网领先科技成果获奖 互联网企业科技类企业如何做账 互联网科技新闻 玉溪新华互联网科技怎么选
0