|
我已经试过多次了,但是始终读不了数据啊!!
如下分别是我的应用程序中READFILE()函数代码,驱动程序中READ()代码,在调试时串口打印信息:
1.
void CFPGADlg::OnInput1()
{
// TODO: Add your control notification handler code here
LPVOID inBuffer;
DWORD nBytesToRead=0;
LPDWORD nBytesRead;
BOOL bResult = ReadFile(gpiodriver, inBuffer, nBytesToRead, nBytesRead, NULL); //inBuffer(应用)=pBuffer(驱动)地址
if (bResult && nBytesToRead == 0)
MessageBox(L"READFILE FAILED!");
else
if(inBuffer && (0x1<<7)==128) //判断指针变量inBuffer的数据内容
MessageBox(L"HIGH POWER!");
else
MessageBox(L"LOW POWER!");
return;
}
2.
DWORD GIO_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
RETAILMSG(1,(TEXT("GPIO_Control: GPIO_Read\r\n"))); /* 提示执行读函数 */
DWORD dwRet=0;
if ((pBuffer == NULL) || (Count <= 0))
{
RETAILMSG(1, (TEXT("::: Read() parameter is error.\r\n")));
return 0;
}
achBuffer[BUFSIZE]=v_pIOPregs->GPBDAT; //1个元素的双字节
DWORD cbBuffer=wcslen ( achBuffer );
dwRet=min( cbBuffer, Count );
wcsncpy( ( LPWSTR ) pBuffer, achBuffer, dwRet);
//Return the number of the actual bytes
return dwRet;
}
3.
::: Read() parameter is error.
Data Abort: Thread=83910a84 Proc=82126340 'device.exe'
AKY=00000805 PC=03f62e4c(devmgr.dll+0x00002e4c) RA=03f62e4c(devmgr.dll+0x00002e4
c) BVA=06000000 FSR=00000007
RaiseException: Thread=83910a84 Proc=82126340 'device.exe'
AKY=00000805 PC=03f8e05c(coredll.dll+0x0001e05c) RA=802c2e8c(NK.EXE+0x000c2e8c)
BVA=00000003 FSR=00000003
还请您看后帮我分析下,错误原因在哪里呢?改如何修改?能不能给我一个源代码例子。我在这上面花了3个星期的时间,都没有结果,很郁闷!!希望您别让您的客户再郁闷下去了。谢谢!! |
|