请问在win2000下能够引用上述的头文件吗,如何引用?因为我要用到其中的 int _outp( unsigned short port, int databyte ); 函数,
请问vc在win2000下有没有类似的函数,需要调用什么头文件

解决方案 »

  1.   

    当然可以了,不就是用conio.h中的函数嘛。
    在2000下的VC 也用这个文件的。
      

  2.   

    这个文件只要你装了VC就有的,把文件所在的路径include进去就行了。
      

  3.   

    conio.h是标准的C库文件,与2K无关。_outp在2K下不能使用,要读写硬件,如串口,磁盘要用
    CreateFile/WriteFile/ReadFile/DeviceIOControl 等几个函数,你可以查MSDN。
      

  4.   

    直接 #include <conio.h>就可以了;
      

  5.   

    我是在写串口程序,vc写的dll中包含该函数,编译后,用vb程序调用,读该串口的数据。该系统在98下调用成功,在win2000下,报“应用程序正常初始化(0xc00000ba)失败。”的错误
      

  6.   

    SoLike(是我) :你好   能不能举个读取串口数据的例子。
      

  7.   

    SoLike(是我) :能不能举一个DeviceIOControl 函数控制串口的例子
      

  8.   

    http://expert.csdn.net/Expert/topic/1956/1956624.xml?temp=.4726068相似的问题,楼主可以看看;
      

  9.   

    penter(净土) 你好,可是并没有给出win2k下的相关流程呀?
      

  10.   

    大致流程如下://打开串口
    HANDLE m_hFile = CreateFile((LPCTSTR)m_strPort,
    GENERIC_READ | GENERIC_WRITE,
    0,                    // exclusive access
    NULL,                 // no security attrs
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL );
    if(m_hFile==INVALID_HANDLE_VALUE)
    {
    TRACE("端口无法打开!");
    return;
    }//进行设置DCB dcb;//DCB结构定义了串行通信的控制信息 
    dcb.DCBlength = sizeof(DCB);
    GetCommState(m_hFile,&dcb);//得到当前通信设备的控制信息//设置波特率
    dcb.BaudRate = 4800;
    //设置通信位字节数
    dcb.ByteSize = 8;
    dcb.Parity = EVENPARITY;//设置校验方式,偶
    dcb.StopBits = 1;//设置停止位字节数dcb.fOutxDsrFlow = TRUE;
    dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;dcb.fOutxCtsFlow = TRUE;
    dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;

    dcb.fOutxCtsFlow = FALSE;
    dcb.fRtsControl = RTS_CONTROL_ENABLE;

    dcb.fInX = TRUE;
    dcb.fOutX = TRUE;

    dcb.XonChar = 0X11;
    dcb.XoffChar = 0X13;
    dcb.XonLim = 100;
    dcb.XoffLim = 100;dcb.fBinary = TRUE;
    dcb.fParity = TRUE;SetCommState(m_hFile,&dcb);//设置控制信息

    COMMTIMEOUTS CommTimeOuts;//用于SetCommTimeouts和GetCommTimeouts函数来设置和获得通讯设备的超时参数
    CommTimeOuts.ReadIntervalTimeout = 1000;
    CommTimeOuts.ReadTotalTimeoutMultiplier = 12000/dcb.BaudRate + 1;
    CommTimeOuts.ReadTotalTimeoutConstant = 1000;
    CommTimeOuts.WriteTotalTimeoutMultiplier = 12000/dcb.BaudRate + 1;
    CommTimeOuts.WriteTotalTimeoutConstant = 1000;SetCommTimeouts(m_hFile,&CommTimeOuts);SetupComm(m_hFile,2048,2048);//设输入输出缓冲大小PurgeComm(m_hFile,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);//刷新输出缓冲区//发数据
    BYTE pSend[20];
    memset(pSend, 1, 20);
    DWORD dwLengthW = 0;
    if(WriteFile(m_hFile,pSend,20,&dwLengthW,NULL)==FALSE)
    {
    DWORD dwErrorNo = GetLastError();
    if(dwErrorNo)
    {
    TRACE("数据发送时错误,错误码:%lu",dwErrorNo);
    }
    }//读数据
    BYTE pRead[20];
    memset(pRead, 0, 20);
    DWORD dwLengthR = 0;
    if(ReadFile(m_hFile,pRXData,10,&dwLengthR ,NULL)==FALSE)
    {
    DWORD dwErrorNo = GetLastError();
    if(dwErrorNo)
    {
    TRACE("数据接收时错误,错误码:%lu",dwErrorNo);
    }
    }// 关串口
    EscapeCommFunction(m_hFile,CLRDTR);
    PurgeComm(m_hFile,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
    CloseHandle(m_hFile);
      

  11.   

    上面只是给出一个流程,很多参数事实上无须全部设置,如超时限制、DCB的某些成员等。由于仓促,上面的代码也许错误很多,你需要看MSDN来得到等多的信息。
    此外,串口通讯的控制方式也很多,如通过事件、定时器、轮询,多线程等等,你可以查考一下相关的资料来选择自己合适的方式
      

  12.   

    SoLike(是我) ,那关于并口的呢?谢谢
      

  13.   

    主要问题是:因为_outp在2K下不能使用,能不能在2000下找一个的函数替代它,若有请给出例子
      

  14.   

    to  tjyuanl(涟漪) 流程在杂志上;-----
      

  15.   

    这是.cpp文件的内容:
    #include <windows.h>
    #include <conio.h>HANDLE HinstHandle;BOOL WINAPI DllMain (HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved)
    {
      switch (dwReason)
      {
        case DLL_PROCESS_ATTACH:
        {
          HinstHandle = hDLL;
          break;
        }    case DLL_THREAD_ATTACH:      break;    case DLL_THREAD_DETACH:
          break;    case DLL_PROCESS_DETACH:
          break;
      }return TRUE;
    }
    WORD WINAPI out_byte (unsigned short port,unsigned short data)
    {
    _outp(port,data);
    return 0;
    }WORD WINAPI out_word (unsigned short port,unsigned short data)
    {
    _outpw(port,data);
    return 0;
    }WORD WINAPI in_byte (unsigned short port)
    {
    return _inp(port);
     return 0;
    }WORD WINAPI in_word (unsigned short port)
    {
    return _inpw(port);
    return 0;
    }
    BOOL CALLBACK VBDLLProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
    {
      switch (msg)
      {
        case WM_COMMAND:      EndDialog(hDlg, TRUE);
          return (TRUE);
      }
      return (FALSE);
    }这是.def的内容:
     LIBRARY  VBDLLCODE      PRELOAD MOVEABLE DISCARDABLE
    DATA      PRELOAD SINGLEEXPORTS
         out_byte    @2
         out_word    @3
         in_byte     @4
         in_word     @5
         VBDLLProc  @6这是我的dll的源代码,用vb调用该dll文件,在98下通过,在2000下,报“应用程序正常初始化(0xc00000ba)失败。”的错误,请问我将如何对其进行修改?