[急]关于USB设备的读写

fanka12 2009-12-15 06:04:11
用OpenByInterface打开设备,hdevice != INVALID_HANDLE_VALUE的值为真,
然后用
    DWORD dwreturn;
if(WriteFile(hdevice,tx_buffer,TX_ByteCount,&dwreturn,NULL))
MessageBox("OK");
else
MessageBox("NO");
tx_buffer是BYTE型的数组,X_ByteCount是数组的长度,这时候会弹出OK,是不是就写成功呢?
如果设备收到我发送的请求数组并且数组里面的值是正确的,设备收到后会发回响应,也是BYTE型的数组,
    DWORD rCount;
if(ReadFile(hdevice,receive_buffer,RX_ByteCount,&rCount,NULL))
MessageBox("OK");
else
MessageBox("NO");
也会弹出OK,但是,在接下来我用
    CString str;
str.Format("%d",receive_buffer[2]);
MessageBox(str);
如果正确的话,receive_buffer[2]=0x11,也就是会显示17,但是我每次弹出的值都是204,为什么?我哪个地方出错了?
就是说收到的数据都不对。

tx_buffer数组使用前,我用
for(int i=0;i<TX_ByteCount;i++)
{
CString str;
str.Format("%d",tx_buffer[i]);
MessageBox(str);
验过,里面元素的值都是对的。

刚接触驱动,望大家帮忙。
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanka12 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cnzdgs 的回复:]
VC的Debug配置编译出的程序,未初始化的变量都会被初始化为204(0xCC)。
看起来是没有收到数据,看一下ReadFile之后rCount的值是多少。
[/Quote]
ReadFile之后rCount的值果然是0,
但是WriteFile之后的dwreturn的值是29,是对的。
是否表示发送已经成功了呢?那为什么我收不到数据?
为什么会这样,谢谢各位。
fanka12 2009-12-16
  • 打赏
  • 举报
回复
原来设备那边只能接收偶数长度的数据......
汗一个,我在最后加了个0,OK了。谢谢。
fanka12 2009-12-16
  • 打赏
  • 举报
回复
嗯,我也认为是我输入的数据与设备要求不符合,可能协议上面有的地方我理解错误了。
因为设备是已经调试好了的,应该没什么问题。
我原来是以为USB读写程序那写得不对。
谢谢上面的DD。
cnzdgs 2009-12-16
  • 打赏
  • 举报
回复
这是与设备通讯的问题,需要你自己来检查了。先看输出的数据是否符合设备要求,再确认设备是否收到了数据并做出了回应。
cnzdgs 2009-12-15
  • 打赏
  • 举报
回复
VC的Debug配置编译出的程序,未初始化的变量都会被初始化为204(0xCC)。
看起来是没有收到数据,看一下ReadFile之后rCount的值是多少。
fanka12 2009-12-15
  • 打赏
  • 举报
回复

//   DWORD rCount;
// if(ReadFile(hdevice,receive_buffer,RX_ByteCount,&rCount,NULL))
// MessageBox("OK");
// else
// MessageBox("NO");
全注释掉,receive_buffer[2]的值也还是204。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧