第一个例子 用 DeviceIoControl ()函数配置 只传数据进去 不反馈数据的例子 :
static DWORD dwChannelADC = 0;
static DWORD dwReadSize = 0;
static short nCntValue;
m_hDriver=CreateFile(L"ADC1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL );
if(INVALID_HANDLE_VALUE==m_hDriver)
MessageBox(_T("设备打开失败"));
BOOL Ret = DeviceIoControl(m_hDriver,IOCTL_SET_ADC_CHANNEL, &dwChannelADC,sizeof(dwChannelADC),NULL,0,NULL,NULL);
if(!ReadFile(m_hDriver,&nCntValue,sizeof(nCntValue),&dwReadSize,NULL))
{
int dwErrID ;
dwErrID=GetLastError();
str.Format(_T("读取失败,错误号:%d"),dwErrID);
MessageBox(str,0,0);
return;
}
str.Format(TEXT("%d"),nCntValue);
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
CloseHandle(m_hDriver);
第二个例子 用 DeviceIoControl ()函数配置 传数据进去 并且反馈数据的例子 :
static short IONum ;
BYTE outBuf ;
CString str;
DWORD bytesReturned;
IONum = 6;
m_hDriver=CreateFile(L"PIO1:",GENERIC_ALL, 0,NULL,OPEN_EXISTING,0,NULL );
if(INVALID_HANDLE_VALUE==m_hDriver)
MessageBox(_T("设备打开失败"));
BOOL Ret = DeviceIoControl(m_hDriver,IOCTL_GPC_SET_PIN_OUT, &IONum,sizeof(short),NULL,0,NULL,NULL);
Ret = DeviceIoControl(m_hDriver,IOCTL_GPC_READ_PIN, &IONum,sizeof(short),&outBuf,sizeof(BYTE),&bytesReturned,NULL);
if (!Ret)
{
str.Format(L"error is %d",GetLastError());
MessageBox(str,0,0);
}
CloseHandle(m_hDriver);