|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
|
#include "LaserLogger.h"
|
|
|
|
|
|
|
|
|
|
|
|
typedef HANDLE(WINAPI*pCH365mOpenDevice)(ULONG iIndex, BOOL iEnableMemory, BOOL iEnableInterrupt);
|
|
|
|
|
|
typedef BOOL(WINAPI*pCH365mReadIoByte)(ULONG iIndex, PVOID iAddr, PUCHAR oByte);
|
|
|
|
|
|
typedef BOOL(WINAPI*pCH365mSetA15_A8)(ULONG iIndex, UCHAR iA15_A8);
|
|
|
|
|
|
typedef BOOL(WINAPI*pCH365mWriteIoByte)(ULONG iIndex, PVOID iAddr, UCHAR iByte);
|
|
|
|
|
|
typedef VOID(WINAPI*pCH365mCloseDevice)(ULONG iIndex);
|
|
|
|
|
|
#define LASER_PORT 7 //<2F><><EFBFBD><EFBFBD>ض˿<D8B6>
|
|
|
|
|
|
#define PORT_CNT 8 //<2F><>λ<EFBFBD>˿ڵĸ<DAB5><C4B8><EFBFBD>
|
|
|
|
|
|
#define OUT_PORT_ADDR_L 0xDE //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ڵĵ<DAB5>ַ--<2D><>8 λ
|
|
|
|
|
|
#define OUT_PORT_ADDR_H 0xDD //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ڵĵ<DAB5>ַ--<2D><>8 λ
|
|
|
|
|
|
#define IN_PORT_ADDR_L 0x1F //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ڵĵ<DAB5>ַ--<2D><>8 λ 10 <20><><EFBFBD><EFBFBD>31
|
|
|
|
|
|
#define IN_PORT_ADDR_H 0xDF //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ڵĵ<DAB5>ַ--<2D><>8 λ 10 <20><><EFBFBD><EFBFBD>223
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Pci365CardMgr
|
|
|
|
|
|
{
|
|
|
|
|
|
typedef struct SPciPort
|
|
|
|
|
|
{
|
|
|
|
|
|
SPciPort()
|
|
|
|
|
|
{
|
|
|
|
|
|
num = -1;
|
|
|
|
|
|
bReverse = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
public:
|
|
|
|
|
|
int num;//<2F>˿ڵı<DAB5><C4B1><EFBFBD>
|
|
|
|
|
|
bool bReverse;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ת(<28><>ת<EFBFBD><D7AA><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD>ȡ<EFBFBD><C8A1>д<EFBFBD>붼<EFBFBD>ᷴ<EFBFBD><E1B7B4><EFBFBD><EFBFBD>)
|
|
|
|
|
|
}SPciPort;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
Pci365CardMgr();
|
|
|
|
|
|
~Pci365CardMgr();
|
|
|
|
|
|
public:
|
|
|
|
|
|
static Pci365CardMgr* m_instance;
|
|
|
|
|
|
|
|
|
|
|
|
long m_OutPortStateLow;//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>˿ڵ<CBBF>״̬(<28>Ͱ<EFBFBD>λ)--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
|
|
|
|
|
long m_OutPortStateHigh;//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>˿ڵ<CBBF>״̬(<28>߰<EFBFBD>λ)--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
HINSTANCE m_PciCh365Handle;//<2F><><EFBFBD><EFBFBD>Ch365<36><35>̬<EFBFBD><CCAC><EFBFBD>ӿ<EFBFBD><D3BF>ľ<EFBFBD><C4BE><EFBFBD>
|
|
|
|
|
|
HANDLE m_DeviceHandle;//pci<63>豸<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
|
|
|
|
|
bool m_bIniPci365Card = false;
|
|
|
|
|
|
public:
|
|
|
|
|
|
void InitPci365Card();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
bool ReadDll();
|
|
|
|
|
|
bool IniPciCard();
|
|
|
|
|
|
void CtrlLaserGate(bool bon);
|
|
|
|
|
|
void WritePortState(SPciPort PciPort, bool bOpen);
|
|
|
|
|
|
bool LowOrHight(int &PortNum);
|
|
|
|
|
|
long& GetOutPortState(bool bLow);
|
|
|
|
|
|
int GetPortAddr(bool bLow, bool bWirte);
|
|
|
|
|
|
long SetBitOn(long PortVal, int PortIdx);
|
|
|
|
|
|
BYTE SetBitOff(BYTE PortVal, int PortIdx);
|
|
|
|
|
|
void WriteIoPortByte(int PortAddr, long PortVal);
|
|
|
|
|
|
|
|
|
|
|
|
//dll <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
pCH365mOpenDevice CH365mOpenDevice;// <20><><EFBFBD><EFBFBD>CH365<36>豸,<2C><><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|
|
|
|
|
pCH365mReadIoByte CH365mReadIoByte;//<2F><>I/O<>˿ڶ<CBBF>ȡһ<C8A1><D2BB><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
|
pCH365mSetA15_A8 CH365mSetA15_A8;//<2F><><EFBFBD>øߵ<C3B8>ַ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A15-A8<41><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
pCH365mWriteIoByte CH365mWriteIoByte;// <20><>I/O<>˿<EFBFBD>д<EFBFBD><D0B4>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
|
pCH365mCloseDevice CH365mCloseDevice;// <20>ر<EFBFBD>CH365<36>豸
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
static Pci365CardMgr* GetInstance()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_instance == nullptr) {
|
|
|
|
|
|
m_instance = new Pci365CardMgr();
|
|
|
|
|
|
}
|
|
|
|
|
|
return m_instance;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|