目的是向USB设备传输图像并显示 USB设备已经做好了 驱动正常 而且有测试程序 只要选择一个文件 点发送 最终设备就可以显示图像了
现在我要做的就是在另一个复杂点的程序中也实现这个功能 但是目前总是不成功 因为是第一次接触USB传输的领域 请大家不吝赐教 多谢了 代码如下: // 加PIPE0和不加PIPE0 hFile是一样的 , 如果加PIPE1则不一样 在我先前的测试过程中,PIPE0可以单步调试过WriteFile那行函数 但是返回无效的句柄错误 。 而现在 PIPE0和PIPE1都是走到WriteFile那一行再运行 便跳出程序界面 再也回不到调试功能了 不知道是异常跳出还是什么 点关闭程序还是能关闭的 就是再也执行不到贴出的这些代码了 CString strDev = "\\\\.\\DevName\\PIPE0";
HANDLE hFile = CreateFile( strDev,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( INVALID_HANDLE_VALUE == hFile )
{
iErrCode = GetLastError();
}
else
{
DWORD nBytesWritten = 0;
CFile file;
file.Open("D:\\image.bin",CFile::modeRead);
int iLength = file.GetLength();
char* pData = new char[iLength];
memset(pData,0,iLength);
int iRead = file.Read(pData,iLength); BOOL bWrite = FALSE;
try
{
// 这一行就跳出调试功能了
bWrite = WriteFile( hFile, pData , iLength, &nBytesWritten, NULL);
}
catch(...)
{
AfxMessageBox("asdf");
}
if ( bWrite )
{ }
else
{
iErrCode = GetLastError();
bWrite = CloseHandle( hFile );
} delete []pData;
}
请大家看看这是什么问题 , 并如何解决WriteFile的问题 再谢!
现在我要做的就是在另一个复杂点的程序中也实现这个功能 但是目前总是不成功 因为是第一次接触USB传输的领域 请大家不吝赐教 多谢了 代码如下: // 加PIPE0和不加PIPE0 hFile是一样的 , 如果加PIPE1则不一样 在我先前的测试过程中,PIPE0可以单步调试过WriteFile那行函数 但是返回无效的句柄错误 。 而现在 PIPE0和PIPE1都是走到WriteFile那一行再运行 便跳出程序界面 再也回不到调试功能了 不知道是异常跳出还是什么 点关闭程序还是能关闭的 就是再也执行不到贴出的这些代码了 CString strDev = "\\\\.\\DevName\\PIPE0";
HANDLE hFile = CreateFile( strDev,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( INVALID_HANDLE_VALUE == hFile )
{
iErrCode = GetLastError();
}
else
{
DWORD nBytesWritten = 0;
CFile file;
file.Open("D:\\image.bin",CFile::modeRead);
int iLength = file.GetLength();
char* pData = new char[iLength];
memset(pData,0,iLength);
int iRead = file.Read(pData,iLength); BOOL bWrite = FALSE;
try
{
// 这一行就跳出调试功能了
bWrite = WriteFile( hFile, pData , iLength, &nBytesWritten, NULL);
}
catch(...)
{
AfxMessageBox("asdf");
}
if ( bWrite )
{ }
else
{
iErrCode = GetLastError();
bWrite = CloseHandle( hFile );
} delete []pData;
}
请大家看看这是什么问题 , 并如何解决WriteFile的问题 再谢!
可以通过WriteFile 但是返回0 错误码是无效句柄
也在网上搜过类似的题目 但是都说的不是很清晰
有人说这已经成功了 但是我的数据并没有传到设备里 而且设备还死掉了
必须重新插一次才能重新使用
CreateFile中,CREATE_ALWAYS改成OPEN_EXISTING。
调试时查看这个调用的每个参数,是否为预期值,
实在不行,直接给值,先测试下,驱动是否能正常工作
D:\\image.bin写死了,