不知道用VC编程控制并口和控制串口是不是可以一样的,用API函数能不能实现,最好有没有相应的控件,我仅仅是要实现简单的硬件握手查询 ,不知哪位大虾能够提示一下,指点一下?

解决方案 »

  1.   

    能不能用控件实现?Mscomm控件是不是只能用于串口?
      

  2.   

    http://www.csdn.net/cnshare/soft/16/16791.shtm
      

  3.   

    /*
    Module : PARALLEL.H
    Purpose: Declaration for an MFC class to encapsulate parallel ports
    Created: PJN / 28-12-1999
    History: NoneCopyright (c) 1999 - 2000 by PJ Naughter.  
    All rights reserved.*////////////////////// Macros / Structs etc //////////////////////////#ifndef __PARALLEL_H__
    #define __PARALLEL_H__
    #ifndef __AFXTEMPL_H__
    #pragma message("To avoid this message, put afxtempl.h in your pre compiled header (normally stdafx.h)")
    #include <afxtempl.h> 
    #endif
    /////////////////////////// Classes ///////////////////////////////////////////
    ////// Parallel port exception class ////////////////////////////////////////////void AfxThrowParallelException(DWORD dwError = 0);class CParallelException : public CException
    {
    public:
    //Constructors / Destructors
    CParallelException(DWORD dwError);
    ~CParallelException();//Methods
    #ifdef _DEBUG
    virtual void Dump(CDumpContext& dc) const;
    #endif
    virtual BOOL GetErrorMessage(LPTSTR lpstrError, UINT nMaxError, PUINT pnHelpContext = NULL);
    CString GetErrorMessage();//Data members
    DWORD m_dwError;protected:
    DECLARE_DYNAMIC(CParallelException)
    };
    ////// The class used to hold a parallel ports settings /////////////////////////class CParallelPortSettings
    {
    public:
    //Typedefs / Defines
      enum ParallelPortType
      {
        ParallelTypeUndefined,
        ParallelTypeSPP,
        ParallelTypePS2,
        ParallelTypeEPP,
        ParallelTypeECP,
      };  enum ECPPortMode
      {
        ECPModeUndefined,
        ECPModeSPP,
        ECPModePS2,
        ECPModeFastCentronics,
        ECPModeECP,
        ECPModeEPP,
        ECPModeTest,
        ECPModeConfiguration
      };//Constructors / Destructors
      CParallelPortSettings();
      CParallelPortSettings(const CParallelPortSettings& state);//Standard methods
      CParallelPortSettings& operator=(const CParallelPortSettings& state);//Member variables
      unsigned short   m_nBaseAddress; //The base address of the parallel port e.g. 0x278
      ParallelPortType m_Type;         //The port type
      ECPPortMode      m_ECPMode;      //The ECP mode if the type is ECP 
    };                                  
    //// The actual parallel port class /////////////////////////////////////////////class CParallelPort : public CObject
    {
    public:  
    //Constructors / Destructors
      CParallelPort();
      ~CParallelPort();//Methods
      void                               Open(int nPort=1);
      inline BOOL                        IsOpen() const;
      void                               Close();
      void                               SetECPMode(CParallelPortSettings::ECPPortMode mode);
      CParallelPortSettings::ECPPortMode GetECPMode();
      void                               WriteControl(int nData);
      int                                ReadControl();
      void                               WriteData(int nData);
      int                                ReadData();
      int                                ReadStatus();
      BOOL                               ReadByteUsingNibbleMode(BYTE& byData);
      BOOL                               WriteByteUsingNibbleMode(BYTE byData);
      inline BOOL                        ReadUsingNibbleMode(void* lpBuf, DWORD dwBytes);
      inline BOOL                        WriteUsingNibbleMode(const void* lpBuf, DWORD dwBytes);
      void                               SetTimeout(DWORD dwTimeout) { m_dwTimeout = dwTimeout; };
      DWORD                              GetTimeout() const { return m_dwTimeout; };
      CParallelPortSettings              GetSettings() const;//Static methods
      static BOOL PortPresent(int nPort);//MFC Diagnostics
    #ifdef _DEBUG
      void Dump(CDumpContext& dc) const;
    #endifprotected:
    //typedefs
      typedef UCHAR (_stdcall DLPORTREADPORTUCHAR)(ULONG Port);
      typedef DLPORTREADPORTUCHAR* LPDLPORTREADPORTUCHAR;
      typedef VOID (_stdcall DLPORTWRITEPORTUCHAR)(ULONG Port, UCHAR Value);
      typedef DLPORTWRITEPORTUCHAR* LPDLPORTWRITEPORTUCHAR;//Methods
      static BOOL        InitializeDriverLINX();
      static void        DeInitializeDriverLINX();
      static BOOL        RunningOnNT();
      static BOOL        GetPort(unsigned short nBaseAddress, CParallelPortSettings& settings);
      static BOOL        GetECPPort(unsigned short nBaseAddress);
      static BOOL        GetEPPPort(unsigned short nBaseAddrsss);
      static BOOL        GetPS2Port(unsigned short nBaseAddress);
      static BOOL        GetSPPPort(unsigned short nBaseAddress);
      static int         GetEPPTimeoutBit(unsigned short nBaseAddress);
      static CParallelPortSettings::ECPPortMode ReadECPMode(unsigned short nBaseAddress);
      inline static int  _inp(unsigned short port);
      inline static int  _outp(unsigned short port, int databyte);
      inline static void WriteControl(unsigned short nBaseAddress, int nData);
      inline static int  ReadControl(unsigned short nBaseAddress);
      inline static void WriteData(unsigned short nBaseAddress, int nData);
      inline static int  ReadData(unsigned short nBaseAddress);
      inline static int  ReadStatus(unsigned short nBaseAddress);//Member variables
      HANDLE         m_hPort;         //SDK handle to lock Win32 access to the port
      int            m_nPortIndex;    //index of the current port into m_Ports
      DWORD          m_dwTimeout;     //Timeout in Milliseconds for reads and writes
      unsigned short m_nBaseAddress;  //The base address of the port//Static memmber variables
      static BOOL                                                  sm_bRunningOnNT;         //Are we running on NT / Windows 2000
      static int                                                   sm_nRefCount;            //Reference count for the class
      static HINSTANCE                                             sm_hDLINX;               //handle to the DriverLINX dll.
      static LPDLPORTREADPORTUCHAR                                 sm_lpfnDlPortReadUchar;  //Function pointer for writing via DriverLINX
      static LPDLPORTWRITEPORTUCHAR                                sm_lpfnDlPortWriteUchar; //Function pointer for rading via DriverLINX
      static CArray<CParallelPortSettings, CParallelPortSettings&> sm_Ports;                //All the parallel ports available on this machine  DECLARE_DYNAMIC(CParallelPort)
    };//// A Simple class to transfer and receive files using nibble modeclass CParallelPortFileTransfer
    {
    public:
    //Constructors / Destructors
      CParallelPortFileTransfer(CParallelPort* pPort);
      ~CParallelPortFileTransfer();//Methods
      void SendFile(const CString& sLocalFile);
      void ReceiveFile(const CString& sLocalFile);protected:
      CParallelPort* m_pPort;
    };
    #endif //__PARALLEL_H__
      

  4.   

    http://www.reallystar.com/Tech/Temp/para.rar
    cpp文件发不出来,放到网上了