📄 dio.cpp
字号:
#include "stdafx.h"
#include "DIO.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
HANDLE En_IO_Operation(){
HANDLE hDevice;
hDevice = CreateFile("\\\\.\\W2kIoDrv1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
if (hDevice == INVALID_HANDLE_VALUE) {
// printf("Failed to enable the IO operation and the Win32 error code is: %d\n",GetLastError());
exit(0);
}
return hDevice;
}
void Dis_IO_Operation(HANDLE hDevice)
{
if (hDevice == INVALID_HANDLE_VALUE)
{
// printf("The Windows 2000 IO Driver don't be opened!");
}else
{
CloseHandle(hDevice);
}
}
void Read(WORD PortNo,BYTE TransType,HANDLE hDevice,unsigned long DataCount,unsigned char *Data_ptr)
{
unsigned long i,inCount,bR;
void *userBuffer;
BOOL status;
inCount=DataCount+sizeof(WORD)+sizeof(BYTE);
userBuffer=malloc(inCount*sizeof(unsigned char));
*((WORD *)userBuffer)=PortNo;
*((BYTE *)((WORD *)userBuffer+1))=TransType;
status=ReadFile(hDevice,userBuffer,inCount,&bR,NULL);
if (!status)
{
// printf("Failed on call to ReadFile and the Win32 error code: %d\n",GetLastError());
exit(0);
}
for(i=0;i<DataCount;i++)
{
*(Data_ptr+i) = *((unsigned char *)userBuffer+i+sizeof(WORD)+sizeof(BYTE));
}
}
void Write(WORD PortNo,BYTE TransType,HANDLE hDevice,unsigned long DataCount,void *Data_ptr)
{
unsigned long i,inCount,bW;
void *userBuffer;
BOOL status;
switch(TransType)
{
case TRANS_BYTE:
inCount=DataCount+sizeof(WORD)+sizeof(BYTE);
userBuffer=malloc(inCount*sizeof(BYTE));
break;
case TRANS_WORD:
inCount=DataCount*sizeof(WORD)+sizeof(WORD)+sizeof(BYTE);
userBuffer=malloc(inCount*sizeof(unsigned char));
break;
case TRANS_DWORD:
inCount=DataCount*sizeof(DWORD)+sizeof(WORD)+sizeof(BYTE);
userBuffer=malloc(inCount*sizeof(unsigned char));
break;
default:
break;
}
*((WORD *)userBuffer)=PortNo;
*((BYTE *)((WORD *)userBuffer+1))=TransType;
for(i=0;i<DataCount;i++)
{
*((BYTE *)userBuffer+i+sizeof(WORD)+sizeof(BYTE))=*((BYTE *)Data_ptr+i);
}
status=WriteFile(hDevice,userBuffer,inCount,&bW,NULL);
if (!status)
{
// printf("Failed on call to WriteFile and the Win32 error code:%d\n",GetLastError());
// exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -