📄 lptaccess.cpp
字号:
//LPTAccess Class Cpp
#include "StdAfx.h"
#include "LPTAccess.h"
/* ----Prototypes of Inp and Outp--- */
short _stdcall Inp32(short PortAddress);
void _stdcall Out32(short PortAddress, short data);
/*--------------------------------*/
CLPTAccess::CLPTAccess()
{
Board = 0;
}
void CLPTAccess::SelectBoard(short iBoard)
{
Board = iBoard;
switch (iBoard)
{
case 0:
Out32(CLPT,BOARD0);
break;
case 1:
Out32(CLPT,BOARD1);
break;
default:
break;
}
Sleep(100);
}
void CLPTAccess::WriteControl(short icmd)
{
Out32(CLPT,icmd);
Sleep(100);
}
void CLPTAccess::WriteData(short idata)
{
Out32(DLPT,idata);
Sleep(100);
}
void CLPTAccess::WriteData(int iCh, int iAmp)
{
short iData;
switch (iCh)
{
case 0:
iData = CH0;
break;
case 1:
iData = CH1;
break;
case 2:
iData = CH2;
break;
case 3:
iData = CH3;
break;
case 4:
iData = CH4;
break;
case 5:
iData = CH5;
break;
case 6:
iData = CH6;
break;
case 7:
iData = CH7;
break;
case 8:
iData = CH8;
break;
case 9:
iData = CH9;
break;
case 10:
iData = CH10;
break;
case 11:
iData = CH11;
break;
case 12:
iData = CH12;
break;
case 13:
iData = CH13;
break;
case 14:
iData = CH14;
break;
case 15:
iData = CH15;
break;
default:
break;
}
switch (iAmp)
{
case 0:
iData |= AMP0;
break;
case 1:
iData |= AMP1;
break;
case 2:
iData |= AMP2;
break;
case 3:
iData |= AMP3;
break;
case 4:
iData |= AMP4;
break;
case 5:
iData |= AMP5;
break;
case 6:
iData |= AMP6;
break;
case 7:
iData |= AMP7;
break;
default:
break;
}
Out32(DLPT,iData);
}
short CLPTAccess::ReadData()
{
return Inp32(DLPTA);
}
short CLPTAccess::ReadStatus()
{
return Inp32(SLPT);
}
void CLPTAccess::FinishSetting()
{
WriteControl(0xff);
WriteData(0x00);
}
void CLPTAccess::ActiveControl()
{
int cmd;
switch (Board)
{
case 0:
cmd = BOARD0 | 0x02;
break;
case 1:
cmd = BOARD1 | 0x02;
break;
default:
break;
}
WriteControl(cmd);
}
void CLPTAccess::ResetDevice()
{
WriteControl(RESET_DEVICE);
}
void CLPTAccess::SelectCycleByte(int iByte)
{
switch (iByte)
{
case 0: //低第一字节
WriteControl(0x03); //0x0b
break;
case 1:
WriteControl(0x01); //0x09
break;
case 2:
WriteControl(0x07); //0x0f
break;
case 3: //最高字节
WriteControl(0x05); //0x0d
break;
default:
break;
}
}
void CLPTAccess::WriteCycle(UINT uiTimes)
{
UINT uiValue = uiTimes * 1000; //uiTimes单位为毫秒,频率为2MHz
UINT uiV = ~uiValue;
BYTE *bByte = NULL;
for (int i=0;i<4;i++)
{
bByte = (BYTE*)(&uiV)+i;
InactiveControl(*bByte);
SelectCycleByte(i);
WriteData(*bByte);
}
}
void CLPTAccess::SelectWidthByte(int iByte)
{
switch (iByte)
{
case 0:
WriteControl(0x0B); //0X03
break;
case 1:
WriteControl(0x09); //0X01
break;
/*
case 2:
WriteControl(0xC);
break;
case 3:
WriteControl(0xE);
break;
*/
default:
break;
}
}
void CLPTAccess::WriteWidth(UINT uiWidth)
{
UINT uiValue = uiWidth * 2; //uiWidth单位为微秒,频率为2MHz
UINT uiV = ~uiValue;
BYTE *bByte = NULL;
for (int i=0;i<2;i++)
{
bByte = (BYTE*)(&uiV)+i;
InactiveControl(*bByte);
SelectWidthByte(i);
WriteData(*bByte);
}
}
void CLPTAccess::FinishWrite()
{
WriteControl(LOCK_DEVICE);
}
void CLPTAccess::InactiveControl(short idata)
{
WriteControl(0x0D);
WriteData(idata);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -