📄 lptda.cpp
字号:
// lptda.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "lptda.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
LPTBYTE bDaByte;
unsigned short address = 0x378;
LPTDA_API _stdcall OpenLptPort()
{
InitializeWinIo();
}
LPTDA_API _stdcall CloseLptPort()
{
ShutdownWinIo();
}
LPTDA_API _stdcall Delay(long time)
{
LARGE_INTEGER CurrTicks, TicksCount;
QueryPerformanceFrequency(&TicksCount);
QueryPerformanceCounter(&CurrTicks);
TicksCount.QuadPart = TicksCount.QuadPart * time / 1000000i64;
TicksCount.QuadPart += CurrTicks.QuadPart;
while(CurrTicks.QuadPart<TicksCount.QuadPart)
QueryPerformanceCounter(&CurrTicks);
}
LPTDA_API _stdcall CS(UINT Chan)
{
bDaByte.byte=Chan;
_outp(address+2,bDaByte.byte);
//Delay(1);
}
LPTDA_API _stdcall SCLKH()
{
bDaByte.BIT.bit3 = 1;
_outp(address+2,bDaByte.byte);
//Delay(1);
}
LPTDA_API _stdcall SCLKL()
{
bDaByte.BIT.bit3 = 0;
_outp(address+2,bDaByte.byte);
//Delay(1);
}
LPTDA_API _stdcall DINH()
{
bDaByte.BIT.bit2 = 1;
_outp(address+2,bDaByte.byte);
//Delay(1);
}
LPTDA_API _stdcall DINL()
{
bDaByte.BIT.bit2 = 0;
_outp(address+2,bDaByte.byte);
//Delay(1);
}
LPTDA_API _stdcall daOut(UINT Chan,float Value)
{
int DATA = (int)(Value*3276.7+32767);
CS(Chan);
int D =0;
for(D = 0;D < 16 ; D++)
{
if((DATA & 0x8000)==0x8000)
DINH();
else
DINL();
SCLKH();
SCLKL();
DATA = DATA<<1;
}
CS(3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -