不知道用VC编程控制并口和控制串口是不是可以一样的,用API函数能不能实现,最好有没有相应的控件,我仅仅是要实现简单的硬件握手查询 ,不知哪位大虾能够提示一下,指点一下?
解决方案 »
- MFC编程中 在新建类中使用vector
- vc串口编程比其他语言如何?
- 请问浮点数的读取该如何实现?
- 【关于vector】如何表述这样一个简单的vector数据类型?
- 请问如何通过编程打开“ICMP”(2K或者XP)
- 在分布式系统中,,,客户端从中间层com查询上千条记录,,服务器和客户端不同一台机器,com怎样返回这些记录啊?返回大数组,,,还是做
- 帮忙看看为什么会出现"无效的描述符索引"谢谢
- 问题部分解决,谢谢onestab!请进来领600分!(二)
- 我在VC中用ADO编程操作数据库中的image字段,存的时候没有问题,读的时候却有问题?
- ActiveX控件的弹出菜单不能Disable掉?
- 动态库调用的问题。
- 编译出错了
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__
cpp文件发不出来,放到网上了