0

这是我的代码:

#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 软件,我可以得到所有的细节。见下图

在此处输入图像描述

我的代码有什么问题?或者如果它根本不适合?

4

1 回答 1

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

希望有帮助。

于 2013-05-08T20:38:25.870 回答