
用java做这样的工作?不太适合吧。你需要监听系统usb接口,这需要调用系统的部分功能,一般来说java是跑在jvm里,和系统有点远,虽然可以JNI本地调用,但是也得知道可调用的接口啊
数据通过USB实时传输到PC
==> 这段肯定用到mfc
java 端获取数据,要么c++那边开发了一个可用的dll,要么需要自己写一个与cpp对应的java类来实时调用mfc
ifdatacbSize = sizeof(ifdata);
// 枚举符合该GUID的设备接口
bResult = ::SetupDiEnumDeviceInterfaces(
hDevInfoSet, // 设备信息集句柄
NULL, // 不需额外的设备描述
(LPGUID)&HARDDISK_GUID,//GUID_CLASS_USB_DEVICE, // GUID
(ULONG)nCount, // 设备信息集里的设备序号
&ifdata); // 设备接口信息
if (bResult)
{
ULONG predictedLength = 0;
ULONG requiredLength = 0;
// 取得该设备接口的细节(设备路径)
bResult = SetupDiGetInterfaceDeviceDetail(
hDevInfoSet, // 设备信息集句柄
&ifdata, // 设备接口信息
NULL, // 设备接口细节(设备路径)
0, // 输出缓冲区大小
&requiredLength, // 不需计算输出缓冲区大小(直接用设定值)
NULL); // 不需额外的设备描述
// 取得该设备接口的细节(设备路径)
predictedLength=requiredLength;
// if(pDetail)
// {
// pDetail =NULL;
// }
pDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, predictedLength);
pDetail- >cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
bResult = SetupDiGetInterfaceDeviceDetail(
hDevInfoSet, // 设备信息集句柄
&ifdata, // 设备接口信息
pDetail, // 设备接口细节(设备路径)
predictedLength, // 输出缓冲区大小
&requiredLength, // 不需计算输出缓冲区大小(直接用设定值)
NULL); // 不需额外的设备描述
if (bResult)
{
// 复制设备路径到输出缓冲区
for(int i=0;i <17;i++){
ch[i]=(pDetail- >DevicePath+8+i);
}
ch[17]= "/0 ";
if (strcmp(ch,"vid_11dd&pid_0101")==0 ¦ ¦
strcmp(ch,"vid_11dd&pid_11dd")==0 ¦ ¦
strcmp(ch,"vid_0101&pid_0101")==0 ¦ ¦
strcmp(ch,"vid_0101&pid_11dd")==0) //比较版本号,防止意外出错
{
len = strlen(pDetail- >DevicePath);
devicename = new char[len];
memset(devicename, 0, len);
for(int i=0;i <(len-38);i++)
{
ch[i]=(pDetail- >DevicePath+i);
}
ch[len-38]= "/0 ";
memset(volume, 0, MAX_PATH);
}
}
}
nCount++;
}
// 释放设备接口数据空间
::GlobalFree(pDetail);
// 关闭设备信息集句柄
::SetupDiDestroyDeviceInfoList(hDevInfoSet);
}
以上就是关于我想用java 做一个客户端的小程序,当用户使用USB插入电脑时,就显示在屏幕上显示,客户登陆了全部的内容,包括:我想用java 做一个客户端的小程序,当用户使用USB插入电脑时,就显示在屏幕上显示,客户登陆了、Java怎么通过USB传输数据、怎么获得USB设备的Product ID,Vendor ID等信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)