请查看以下代码
#include "MyClass.h"
#include <qstring.h>
#include <qdebug.h>
MyClass::MyClass()
{
QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
int counter=0;
while(counter<ports.size())
{
QString portName = ports[counter].portName;
QString productId= ports[counter].productID;
QString physicalName = ports[counter].physName;
QString vendorId = ports[counter].vendorID;
QString friendName = ports[counter].friendName;
string convertedPortName = portName.toLocal8Bit().constData();
string convertedProductId = productId.toLocal8Bit().constData();
string convertedPhysicalName = physicalName.toLocal8Bit().constData();
string convertedVendorId = vendorId.toLocal8Bit().constData();
string convertedFriendName = friendName.toLocal8Bit().constData();
cout << "Port Name: " << convertedPortName << endl;
cout << "Product ID:" << convertedProductId << endl;
cout << "Physical Name: " << convertedPhysicalName << endl;
cout << "Vendor Id: " << convertedVendorId << endl;
cout << "Friend Name: " << convertedFriendName << endl;
cout << endl;
counter++;
}
}
我已连接“Dreamcheeky Thunder Missile Launcher”USB玩具,但我无法获得它的供应商ID或产品ID或至少与之相关的任何内容!见下图
但是使用USBDView软件,我可以获得所有细节。见下图
我的代码有什么关系?或者如果它根本不适合?请帮忙!
答案 0 :(得分:1)
只需运行玩具的安装程序并检查它的内容,它就不会描述任何用于作为串行端口访问它的API或文档。
如果您在他们的程序中使用某种监控程序,您可以对其命令设备进行逆向工程。
直接与他们的UI交互可能更容易。使用像AHK这样的程序或调用SendInput()来相对于UI左上角的坐标,你可以命令设备的方向。
编辑:更多与此相关的链接: 由于USB设备未被列为COM#(串口如何显示),并且它是HID设备,因此您需要一个可以与之通信的库。以下是一些可以帮助您实现目标的链接:
http://www.qtcentre.org/threads/41075-USB-HID-connect-on-QT
http://www.signal11.us/oss/hidapi/
https://github.com/iia/Qt_libusb
看起来Robo Realm的那些人已经做过了:
http://www.roborealm.com/help/DC_Missile.php
http://www.roborealm.com/help/USB_HID.php
http://www.roborealm.com/tutorial/usb_missile_launcher/slide010.php
希望有所帮助。