本帖最后由 lxyppc 于 2017-10-10 20:49 编辑
g169321 发表于 2017-10-10 12:02
写了这么多, 楼主都没把事情说清楚。
是我太肤浅,还是太浮澡
PC端用的是Qt开发环境,这个Qt程序很简单,就是读取摄像头的数据和发送鼠标键盘数据。摄像头数据读取用的是OpenCV库
鼠标键盘数据发送用的是QUsbHid库
打开摄像头的代码void open_camera(void)
{
QString cam_name = QString("Camera - %1").arg(mCapId);
mCap = cvCreateCameraCapture(mCapId);
if(!mCap){
...
}
setWindowTitle(cam_name);
}
在timer事件中读取摄像头数据并通过QLabel显示出来
void timerEvent(QTimerEvent* evt)
{
if(mCap){
IplImage* frame = cvQueryFrame(mCap);
if(frame){
QImage img((const uchar *)frame->imageData, frame->width, frame->height, QImage::Format_RGB888);
if(myLabel){
myLabel->setPixmap(QPixmap::fromImage(img.rgbSwapped()));
}
}
}
}
打开自定义HID设备的代码
QList<QUsbHidInfo> list = QUsbHid::enumDevices(0x0483, 0x5740);
if(list.size()>0){
mHid.setPath(list.at(0).path);
mHid.open(QUsbHid::ReadWrite);
}else{
info("Hid device not found!\r\nInput simulation not work!");
}
向HID设备发送数据的代码
void mouse_action(int x, int y, int btn, int is_down)
{
control_t t;
t.type = CT_MOUSE;
t.data.mouse.x = x;
t.data.mouse.y = y;
t.data.mouse.button = btn;
t.data.mouse.is_press = is_down;
if(mHid.isOpen())
mHid.writeData(0,QByteArray((char*)&t, sizeof(t)));
}
完整PC端程序代码在Github上
|