USB设备读写

乐乐家样样 2019-04-08 05:26:02
第一次做USB上位机通讯软体,用于调试的USB从站设备为三菱的A800变频器,获得设备相关信息后,

USB device is HUB:
USB extHubName:USB#VID_8087&PID_0024#5&371edbc6&0&1#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
Find A800
{36fc9e60-c465-11cf-8056-444553540000}\0107 is connected
USB controller name:MITSUBISHI FREQROL A800 USB Controller
connection index:[Port:5]
Class : 255
VID : 1747
PID : 7776
iManufacturer : 1
niSerialNumber: 0
bus speed full
Device Address: 2 nOpen Pipes: 2
read:0 buf:P

readfile writefile返回值都是0,
相关程序:
char buff[64];
ULONG nWritten;
ULONG nRead;

memset(buff,0,64);

BOOL read;
BOOL write;
read = ReadFile(hHubDevice, buff, 64, &nRead, NULL);
if(!read)
{
DWORD dwError;
dwError = GetLastError();
USBInfo.append(QString("GetLastError :%1").arg(dwError));
}

有哪位大神可以指导下为什么会出现这样的情况?

还是说createfile需要特殊的设定才可以读写设备
hHubDevice = CreateFile(deviceName,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);

请问相同的设备多次CreateFile获得的句柄hHubDevice是相同的吗?

...全文
123 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
破晓669 2019-07-01
  • 打赏
  • 举报
回复
如果返回值是非零,但接收的字节数是0,那么可能是文件指针在读操作期间超出了文件的end位置。然而,如果文件以FILE_FLAG_OVERLAPPED方式打开,lpOverlapped 参数不为NULL,文件指针在读操作期间超出了文件的end位置,那么返回值肯定是FALSE,GetLastError返回的错误是ERROR_HANDLE_EOF。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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