不好意思又来请教各位大大了
这次老板出的作业是要我做
要和RS232做全雙工的資料傳送接收
port插入後會有Tx跟Rx兩個 port 在電腦新增com5.com6(老板有给我USB的RS458模拟盒当做测试器)
目前我查資料之後按照我自己的想法可能會需要用到
QThread創造兩個線程確保全雙工進行傳送接收
用QMutex確保傳送接收資料不阻塞
QserialPort抓取port放到combobox內
用readall()接收 用write傳送
按一個pushbutton後開啟全雙工傳送接收 输入与
显示初步設定顯示在lineEdit 1、2
線路中斷的時候自動出現提示messagebox提示錯誤並且終止程式線程
请问 如何使用QserialPort主动抓取所有可用的port并且放入combobox的addItem内
QThread要如何配合使用?
我自己有练习2个单功能的程式
头
文件 mythread
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include<QThread>
class mythread : public QThread
{
public:
mythread();//新增線程類
void run();//線程函數
QString name;
};
#endif // MYTHREAD_H
-----------------------------------------------------------------
主文件main
#include <QCoreApplication>
#include"mythread.h" //帶入線程標頭
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
mythread mthread1;//線程子類1
mthread1.name="mthread1";
mythread mthread2;//線程子類2
mthread2.name="mthread2";
mythread mthread3;//線程子類3
mthread3.name="mthread3";
mthread1.start(QThread::HighestPriority);//執行1 優先權設定為高
mthread2.start();//執行2
mthread3.start(QThread::HighestPriority);//執行3 優先權設定為高
return a.exec();
}
----------------------------------------------------------------------------------
#include "mythread.h"
#include <QDebug>
mythread::mythread()
{
}
void mythread::run()
{
qDebug()<<this->name<<"Running";
for(int i=0;i<10000;i++){
qDebug()<<this->name<<i;
}
}
----------------------------------------------------------------------------------
还有QserialPort的练习
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void serialReceived();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
--------------------------------------------------------------
主文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QtSerialPort/QSerialPort>
#include<QDebug>
QSerialPort *serial;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
serial=new QSerialPort(this);
serial->setPortName("com6");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
serial->write("OK*");
connect(serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
}
MainWindow::~MainWindow()
{
delete ui;
serial->close();
}
void MainWindow::serialReceived(){
QByteArray ba;
ba=serial->readAll();
ui->label->setText(ba);
qDebug()<<ba;
}
void MainWindow::on_pushButton_clicked()
{
serial->write(ui->lineEdit->text().toStdString().data());
}
--------------------------------------------------------------------
单个做我按照网路上的教学影片都有做出来也能正常
执行不过叫我两个弄在一起做再加上
其他功能我又迷胡了....
然后QT的范例又是各种看不懂.............
我在ui界面上是这样做的... 数字部份应该没啥
问题我应该能解决就不提问了...
window.open('http://www.qtcn.org/bbs/attachment/Mon_1611/17_176460_6101a3c74713af5.jpg?350');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >跪求大大指点迷津