|
|
@@ -25,16 +25,16 @@ MainWidget::MainWidget(QWidget *parent)
|
|
|
m_chWidget[i].chid=i+1;
|
|
|
}
|
|
|
|
|
|
+ m_DevFile="";//"/dev/bus/usb/001/003";
|
|
|
_timer_update_info = new QTimer(this);
|
|
|
_timer_update_info->setInterval(1000);
|
|
|
-
|
|
|
connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(UpdateStatusInfo()));
|
|
|
+ connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(on_Button_checkserial_clicked()));
|
|
|
+ connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(on_Button_openserial_clicked()));
|
|
|
+ //on_Button_checkserial_clicked();
|
|
|
+ //on_Button_openserial_clicked();
|
|
|
_timer_update_info->start();
|
|
|
|
|
|
- m_DevFile="/dev/bus/usb/001/003";
|
|
|
- on_Button_checkserial_clicked();
|
|
|
- on_Button_openserial_clicked();
|
|
|
-
|
|
|
QTimer* timSend = new QTimer(this);
|
|
|
timSend->setInterval(1000);// 设置默认定时时长1000ms
|
|
|
|
|
|
@@ -261,74 +261,59 @@ void MainWidget::on_Button_openserial_clicked()
|
|
|
}
|
|
|
|
|
|
else
|
|
|
- {
|
|
|
- m_DevFile = ui->serialCB_3->currentText();
|
|
|
- requestUsbPermission(m_DevFile);
|
|
|
- if(ui->Button_openserial_3->text() == "打开串口"){
|
|
|
- requestUsbPermission(m_DevFile);
|
|
|
-
|
|
|
- QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
|
|
|
- jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
|
|
|
- "usb/USBListActivity",
|
|
|
- "OpenSerial",
|
|
|
- "(Ljava/lang/String;)Z",
|
|
|
- javaString.object<jstring>());
|
|
|
- if (res==true)
|
|
|
- {
|
|
|
- m_openflag=true;
|
|
|
- lblPortState->setText("connected");
|
|
|
- lblPortState->setStyleSheet("color:green");
|
|
|
- ui->Button_openserial_3->setText("关闭串口");
|
|
|
- //QMessageBox::information(this, "确认", "打开成功!");
|
|
|
- }
|
|
|
- else
|
|
|
+ {
|
|
|
+ if(m_openflag)
|
|
|
+ {
|
|
|
+ if(m_PreDevFile!=m_DevFile || m_DevFile=="")
|
|
|
{
|
|
|
m_openflag=false;
|
|
|
- lblPortState->setText("disconnected");
|
|
|
- lblPortState->setStyleSheet("color:red");
|
|
|
- ui->Button_openserial_3->setText("打开串口");
|
|
|
- QMessageBox::information(this, "确认", "打开失败!");
|
|
|
+ if(m_PreDevFile!="")
|
|
|
+ {
|
|
|
+ QAndroidJniObject javaString = QAndroidJniObject::fromString(m_PreDevFile);
|
|
|
+ jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
|
|
|
+ "usb/USBListActivity",
|
|
|
+ "closeSerial",
|
|
|
+ "(Ljava/lang/String;)Z",
|
|
|
+ javaString.object<jstring>());
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- /*
|
|
|
- QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
|
|
|
- QAndroidJniObject restring = QAndroidJniObject::callStaticObjectMethod(
|
|
|
- "usb/USBListActivity",
|
|
|
- "OpenSerial",
|
|
|
- "(Ljava/lang/String;)Ljava/lang/String;",
|
|
|
- javaString.object<jstring>());
|
|
|
-
|
|
|
- QString recinfo=restring.toString();
|
|
|
- QMessageBox::information(this, "确认", recinfo);*/
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
|
|
|
- jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
|
|
|
- "usb/USBListActivity",
|
|
|
- "closeSerial",
|
|
|
- "(Ljava/lang/String;)Z",
|
|
|
- javaString.object<jstring>());
|
|
|
- if (res==true)
|
|
|
- {
|
|
|
- m_openflag=false;
|
|
|
- lblPortState->setText("disconnected");
|
|
|
- lblPortState->setStyleSheet("color:red");
|
|
|
- ui->Button_openserial_3->setText("打开串口");
|
|
|
- //QMessageBox::information(this, "确认", "关闭成功!");
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
+ if(!m_openflag)
|
|
|
+ {
|
|
|
+ if( m_DevFile!="")
|
|
|
{
|
|
|
- m_openflag=true;
|
|
|
- lblPortState->setText("connected");
|
|
|
- lblPortState->setStyleSheet("color:green");
|
|
|
- ui->Button_openserial_3->setText("关闭串口");
|
|
|
- QMessageBox::information(this, "确认", " 关闭失败!");
|
|
|
+ requestUsbPermission(m_DevFile);
|
|
|
+
|
|
|
+ QAndroidJniObject javaString = QAndroidJniObject::fromString(m_DevFile);
|
|
|
+ jboolean res = QAndroidJniObject::callStaticMethod<jboolean>(
|
|
|
+ "usb/USBListActivity",
|
|
|
+ "OpenSerial",
|
|
|
+ "(Ljava/lang/String;)Z",
|
|
|
+ javaString.object<jstring>());
|
|
|
+ if (res==true)
|
|
|
+ {
|
|
|
+ m_openflag=true;
|
|
|
+ //QMessageBox::information(this, "确认", "打开成功!");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ m_PreDevFile=m_DevFile;
|
|
|
+
|
|
|
+ if(!m_openflag)
|
|
|
+ {
|
|
|
+ lblPortState->setText("disconnected");
|
|
|
+ lblPortState->setStyleSheet("color:red");
|
|
|
+ ui->Button_openserial_3->setText("打开串口");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lblPortState->setText("connected");
|
|
|
+ lblPortState->setStyleSheet("color:green");
|
|
|
+ ui->Button_openserial_3->setText("关闭串口");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
/*发送数据*/
|
|
|
@@ -508,24 +493,31 @@ void MainWidget::on_Button_checkserial_clicked()
|
|
|
|
|
|
QAndroidJniObject usbDevObj;
|
|
|
QAndroidJniObject usbDevObjIter;
|
|
|
- for (int i = 0; i < devListSize; ++i)
|
|
|
+ if(devListSize<1)
|
|
|
{
|
|
|
- usbDevObjIter = devListIter.callObjectMethod("next",
|
|
|
+ m_DevFile="";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for (int i = 0; i < devListSize; ++i)
|
|
|
+ {
|
|
|
+ usbDevObjIter = devListIter.callObjectMethod("next",
|
|
|
"()Ljava/lang/Object;");
|
|
|
- usbDevObj = usbDeviceListHashMap.callObjectMethod("get",
|
|
|
+ usbDevObj = usbDeviceListHashMap.callObjectMethod("get",
|
|
|
"(Ljava/lang/Object;)Ljava/lang/Object;",
|
|
|
usbDevObjIter.object());
|
|
|
- m_DevVid = usbDevObj.callMethod<jint>("getVendorId", "()I");
|
|
|
- m_DevPid = usbDevObj.callMethod<jint>("getProductId", "()I");
|
|
|
- //QAndroidJniObject str((usbDevObj.callMethod<jstring>("getDeviceName", "()Ljava/lang/String;"));
|
|
|
- QAndroidJniObject str( usbDevObj.callObjectMethod(
|
|
|
+ m_DevVid = usbDevObj.callMethod<jint>("getVendorId", "()I");
|
|
|
+ m_DevPid = usbDevObj.callMethod<jint>("getProductId", "()I");
|
|
|
+ //QAndroidJniObject str((usbDevObj.callMethod<jstring>("getDeviceName", "()Ljava/lang/String;"));
|
|
|
+ QAndroidJniObject str( usbDevObj.callObjectMethod(
|
|
|
"getDeviceName",
|
|
|
"()Ljava/lang/String;"
|
|
|
).object<jstring>());
|
|
|
- m_DevFile = str.toString();
|
|
|
- findFlag=true;
|
|
|
- ui->serialCB_3->addItem(m_DevFile);
|
|
|
- modifyUsbDeviceXml("device_filter.xml",QString::number(m_DevVid),QString::number(m_DevPid));
|
|
|
+ m_DevFile = str.toString();
|
|
|
+ findFlag=true;
|
|
|
+ ui->serialCB_3->addItem(m_DevFile);
|
|
|
+ modifyUsbDeviceXml("device_filter.xml",QString::number(m_DevVid),QString::number(m_DevPid));
|
|
|
+ }
|
|
|
}
|
|
|
//if(findFlag) QMessageBox::information(this, "确认", "检测到USB设备:"+m_DevFile);
|
|
|
}
|