lptda.cpp

来自「计算机并口转3路串行DA的DLL源码及电路,芯片MAX541/MAX5541,可」· C++ 代码 · 共 93 行

CPP
93
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?