#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::ToHex(QString
&str
, QByteArray
&byteData
)
{
int hexdata
,lowhexdata
;
int hexdatalen
= 0;
int len
= str
.length();
byteData
.resize(len
/2);
char lstr
,hstr
;
for(int i
=0; i
<len
; )
{
hstr
=str
[i
].toLatin1();
if(hstr
== ' ')
{
i
++;
continue;
}
i
++;
if(i
>= len
)
break;
lstr
= str
[i
].toLatin1();
hexdata
= convertCharToHex(hstr
);
lowhexdata
= convertCharToHex(lstr
);
if((hexdata
== 16) || (lowhexdata
== 16))
break;
else
hexdata
= hexdata
*16+lowhexdata
;
i
++;
byteData
[hexdatalen
] = (char)hexdata
;
hexdatalen
++;
}
byteData
.resize(hexdatalen
);
}
char Widget
::convertCharToHex(char ch
)
{
if((ch
>= '0') && (ch
<= '9'))
return ch
-0x30;
else if((ch
>= 'A') && (ch
<= 'F'))
return ch
-'A'+10;
else if((ch
>= 'a') && (ch
<= 'f'))
return ch
-'a'+10;
else return (-1);
}
void Widget
::insertSpaceDataHandle(QString
&strHexRcvData
)
{
int strCount
=strHexRcvData
.length();
if(strHexRcvData
.length()>2)
{
for(int i
= 0 ; i
< strCount
/2-1 ; i
++ )
{
strHexRcvData
.insert(3*i
+2," ");
}
}
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::ToHex(QString
&str
, QByteArray
&byteData
)
{
int hexdata
,lowhexdata
;
int hexdatalen
= 0;
int len
= str
.length();
byteData
.resize(len
/2);
char lstr
,hstr
;
for(int i
=0; i
<len
; )
{
hstr
=str
[i
].toLatin1();
if(hstr
== ' ')
{
i
++;
continue;
}
i
++;
if(i
>= len
)
break;
lstr
= str
[i
].toLatin1();
hexdata
= convertCharToHex(hstr
);
lowhexdata
= convertCharToHex(lstr
);
if((hexdata
== 16) || (lowhexdata
== 16))
break;
else
hexdata
= hexdata
*16+lowhexdata
;
i
++;
byteData
[hexdatalen
] = (char)hexdata
;
hexdatalen
++;
}
byteData
.resize(hexdatalen
);
}
char Widget
::convertCharToHex(char ch
)
{
if((ch
>= '0') && (ch
<= '9'))
return ch
-0x30;
else if((ch
>= 'A') && (ch
<= 'F'))
return ch
-'A'+10;
else if((ch
>= 'a') && (ch
<= 'f'))
return ch
-'a'+10;
else return (-1);
}
void Widget
::insertSpaceDataHandle(QString
&strHexRcvData
)
{
int strCount
=strHexRcvData
.length();
if(strHexRcvData
.length()>2)
{
for(int i
= 0 ; i
< strCount
/2-1 ; i
++ )
{
strHexRcvData
.insert(3*i
+2," ");
}
}
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::rcvDataHandle(QString
&rcvData_S
, QString
&rcvPoint
, int rcv_Point
)
{
int rcv_Red
,rcv_Green
,rcv_Blue
;
QString str
;
rcvPoint
= rcvData_S
.remove(" ").mid((rcv_Point
-1)*RCV_COUNTPOINTDATA
,RCV_COUNTPOINTDATA
);
int count
= pointSize
* pointSize
;
rcv_Red
= rcvPoint
.mid(RCV_RED
,RCV_COUNTCOLORINFOMA
).toInt(&ok
,16)/count
;
rcv_Green
= rcvPoint
.mid(RCV_GREEN
,RCV_COUNTCOLORINFOMA
).toInt(&ok
,16)/count
;
rcv_Blue
= rcvPoint
.mid(RCV_BLUE
,RCV_COUNTCOLORINFOMA
).toInt(&ok
,16)/count
;
str
= QString
::number(rcv_Red
,16);
addSpace(str
,COUNTLEDCOLORDATA
-str
.length());
rcvPoint
+= str
;
str
= QString
::number(rcv_Green
,16);
addSpace(str
,COUNTLEDCOLORDATA
-str
.length());
rcvPoint
+= str
;
str
= QString
::number(rcv_Blue
,16);
addSpace(str
,COUNTLEDCOLORDATA
-str
.length());
rcvPoint
+= str
;
}
int Widget
::judgementStandard(QString
&pointInfom
, long long macro
, long long errorRange
,int count
)
{
QString str
= QString
::number(macro
-errorRange
,16);
addSpace(str
,RCV_COUNTPOINTDATA
-str
.length());
if(QString
::compare(pointInfom
,str
)>=0)
{
sendData_Str
= sendData_Str
.remove(" ");
insertSendPointInfom(sendData_Str
,count
,QString
::number(GREENPOINT
,16));
return QUALIF
;
}else
{
insertSendPointInfom(sendData_Str
,count
,QString
::number(REDPOINT
,16));
return DISQUALIF
;
}
}
void Widget
::addSpace(QString
&str
,int num
)
{
for(int i
= 0 ; i
< num
; i
++)
{
str
= "0" + str
;
}
}
void Widget
::changePointColor()
{
QString pointInfom
;
if(rcvData_QStr
.length()!=0)
{
rcvDataHandle(rcvData_QStr
,pointInfom
,points
);
judgementStandard(pointInfom
,R_QUALIF_LUMINANCE
,R_QUALIF_LUMINANCE_ERROR
,points
);
}
}
#include "Widget.h"
#include <QApplication>
int main(int argc
, char *argv
[])
{
QApplication
a(argc
, argv
);
Widget w
;
w
.show();
return a
.exec();
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::on_btnUp_clicked()
{
ctrlPoint(1,ui
->sbPoints
->value(),ui
->hsldPointSize
->value());
}
void Widget
::on_btnDown_clicked()
{
ctrlPoint(2,ui
->sbPoints
->value(),ui
->hsldPointSize
->value());
}
void Widget
::on_btnLeft_clicked()
{
ctrlPoint(3,ui
->sbPoints
->value(),ui
->hsldPointSize
->value());
}
void Widget
::on_btnRight_clicked()
{
ctrlPoint(4,ui
->sbPoints
->value(),ui
->hsldPointSize
->value());
}
void Widget
::ctrlPoint(int num
,int num1
,int pointSize
)
{
if(!sendData_Str
.isEmpty())
{
int n_crd
= 0;
QString str
,str1
;
QString strTextEdit
= sendData_Str
.remove(" ").
mid(COORDINATESDATASITE
+(num1
-1)*COUNTCOORDINATESDATA
,COUNTCOORDINATESDATA
);
QString strPointSize
= QString
::number(pointSize
);
if(pointSize
<10)
{
strPointSize
= "0"+strPointSize
;
}
switch (num
)
{
case 1:
{
n_crd
= (strTextEdit
.mid(Y_SITE
,3)).toInt(&ok
,16);
n_crd
--;
break;
}
case 2://下
{
n_crd
= (strTextEdit
.mid(Y_SITE
,3)).toInt(&ok
,16);
n_crd
++;
break;
}
case 3:
{
n_crd
= (strTextEdit
.mid(X_SITE
,3)).toInt(&ok
,16);
n_crd
--;
break;
}
case 4:
{
n_crd
= (strTextEdit
.mid(X_SITE
,3)).toInt(&ok
,16);
n_crd
++;
break;
}
default:
break;
}
str1
= QString
::number(n_crd
,16);
if(str1
.length()<3 && str1
.length()>=2)
{
str1
= "0"+str1
;
}
else if(str1
.length()<2&& str1
.length()>=1)
{
str1
= "00"+str1
;
}
else if(str1
.length()>=3)
{
str1
= str1
.mid(str1
.length()- 3, 3);
}
else
{
str1
= "000";
}
switch (num
)
{
case 1:
str
= sendData_Str
.remove(" ")
.replace(COORDINATESDATASITE
+(num1
-1)*COUNTCOORDINATESDATA
,COUNTCOORDINATESDATA
,strTextEdit
.replace(Y_SITE
,3,str1
));
break;
case 2:
str
= sendData_Str
.replace(COORDINATESDATASITE
+(num1
-1)*COUNTCOORDINATESDATA
,COUNTCOORDINATESDATA
,strTextEdit
.replace(Y_SITE
,3,str1
));
break;
case 3:
str
= sendData_Str
.replace(COORDINATESDATASITE
+(num1
-1)*COUNTCOORDINATESDATA
,COUNTCOORDINATESDATA
,strTextEdit
.replace(X_SITE
,3,str1
));
break;
case 4:
str
= sendData_Str
.replace(COORDINATESDATASITE
+(num1
-1)*COUNTCOORDINATESDATA
,COUNTCOORDINATESDATA
,strTextEdit
.replace(X_SITE
,3,str1
));
break;
default:
break;
}
str
= str
.replace(POINTSIZEDETASITE
,COUNTPOINTSIZEDATA
,strPointSize
);
sendData_Str
= str
;
on_btnTXD_clicked();
}
else
{
}
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::sendInfo(QString
&info
)
{
info
= info
.remove(" ");
QByteArray sendBuf
;
insertSendPointInfom(info
,pointSize
);
ToHex(info
, sendBuf
);
serial
->write(sendBuf
);
}
void Widget
::receiveInfo()
{
rcvData_Byt
= serial
->readAll();
}
void Widget
::initTimer(int count
)
{
fTimer
= new QTimer(this);
fTimer
->stop();
fTimer
->setInterval(count
);
connect(fTimer
,SIGNAL(timeout()),this,SLOT(on_timer_timeout()));
}
void Widget
::on_timer_timeout()
{
updataUiData();
changePointColor();
receiveInfo();
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
#include <QMetaEnum>
void Widget
::portInit()
{
foreach
(const QSerialPortInfo
&info
, QSerialPortInfo
::availablePorts())
{
ui
->cmbPortNum
->addItem(info
.portName());
}
QMetaEnum baudRate
= QMetaEnum
::fromType
<QSerialPort
::BaudRate
>();
for(int i
= 0;i
< baudRate
.keyCount()-1;i
++)
{
ui
->cmbBaud
->addItem(baudRate
.key(i
));
}
ui
->cmbBaud
->setCurrentText(baudRate
.valueToKey(QSerialPort
::BaudRate
::Baud115200
));
QMetaEnum dataBits
=QMetaEnum
::fromType
<QSerialPort
::DataBits
>();
for(int i
= 0;i
< dataBits
.keyCount()-1;i
++)
{
ui
->cmbDataBit
->addItem(dataBits
.key(i
));
}
ui
->cmbDataBit
->setCurrentText(dataBits
.valueToKey(QSerialPort
::DataBits
::Data8
));
QMetaEnum parity
= QMetaEnum
::fromType
<QSerialPort
::Parity
>();
for (int i
= 0; i
< parity
.keyCount(); ++i
)
{
ui
->cmbParityBit
->addItem(parity
.key(i
));
}
ui
->cmbParityBit
->setCurrentText(parity
.valueToKey(QSerialPort
::Parity
::NoParity
));
QMetaEnum stopBits
= QMetaEnum
::fromType
<QSerialPort
::StopBits
>();
for (int i
= 0; i
< stopBits
.keyCount()-1; ++i
)
{
ui
->cmbStopBit
->addItem(stopBits
.key(i
));
}
ui
->cmbStopBit
->setCurrentText(stopBits
.valueToKey(QSerialPort
::StopBits
::OneStop
));
if(serial
->isOpen())
{
serial
->clear();
serial
->close();
}
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::on_btnPortStatus_clicked()
{
serial
->clear();
serial
->close();
if(!serial
->isOpen())
{
serial
->setPortName(ui
->cmbPortNum
->currentText());
if(!serial
->open(QIODevice
::ReadWrite
))
{
ui
->textEditRXD
->append("串口打开失败!\n无此串口或者串口被占用.\n");
}
else
{
ui
->textEditRXD
->append("串口打开成功!\n");
serial
->setBaudRate(QSerialPort
::Baud115200
,QSerialPort
::AllDirections
);
serial
->setDataBits(QSerialPort
::Data8
);
serial
->setFlowControl(QSerialPort
::NoFlowControl
);
serial
->setParity(QSerialPort
::NoParity
);
serial
->setStopBits(QSerialPort
::OneStop
);
connect(serial
,SIGNAL(readyRead()),this,SLOT(receiveInfo()));
ui
->btnPortStatus
->setEnabled(false);
ui
->btnClosePort
->setDisabled(false);
}
}
fTimer
->start();
}
void Widget
::on_btnClosePort_clicked()
{
serial
->clear();
serial
->close();
ui
->btnClosePort
->setEnabled(false);
ui
->btnPortStatus
->setDisabled(false);
fTimer
->stop();
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::insertSendPointInfom(QString
&m_sendDataStr
, int m_count
, QString m_color
, int m_size
, QString m_site
)
{
QString m_pointInfom
;
m_sendDataStr
= m_sendDataStr
.remove(" ").remove(POINTSIZEDETASITE
,COUNTPOINTSIZEDATA
)
.insert(POINTSIZEDETASITE
,"0"+QString
::number(m_size
,16));
m_pointInfom
= m_sendDataStr
.mid(COORDINATESDATASITE
+COUNTCOORDINATESDATA
*(m_count
-1),COUNTCOORDINATESDATA
);
m_pointInfom
= m_pointInfom
.remove(COLORSITE
,1).insert(COLORSITE
,m_color
);
m_pointInfom
= m_pointInfom
.remove(X_SITE
,COUNTCOORDINATESDATA
-1).insert(X_SITE
,m_site
);
}
void Widget
::insertSendPointInfom(QString
&m_sendDataStr
,int m_size
)
{
if( m_size
>= 15 )
{
m_size
= 15;
}
m_sendDataStr
= m_sendDataStr
.remove(" ").remove(POINTSIZEDETASITE
,COUNTPOINTSIZEDATA
)
.insert(POINTSIZEDETASITE
,"0"+QString
::number(m_size
,16));
}
void Widget
::insertSendPointInfom(QString
&m_sendDataStr
, int m_count
, QString m_color
)
{
m_sendDataStr
= m_sendDataStr
.remove(" ").remove(COORDINATESDATASITE
+COUNTCOORDINATESDATA
*(m_count
-1),COLORCOUNT
)
.insert(COORDINATESDATASITE
+COUNTCOORDINATESDATA
*(m_count
-1),m_color
);
}
void Widget
::insertSendPointInfom(QString
&m_sendDataStr
,QString m_site
, int m_count
)
{
QString m_pointInfom
;
m_site
.insert(SPACESITE
,1);
m_sendDataStr
= m_sendDataStr
.remove(" ").remove(COORDINATESDATASITE
+COUNTCOORDINATESDATA
*(m_count
-1)+1,COUNTCOORDINATESDATA
-1);
m_pointInfom
.remove(X_SITE
,COUNTCOORDINATESDATA
-1).insert(X_SITE
,m_site
);
}
include
"Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::on_btnTest_clicked()
{
QString pointInfom
;
if(rcvData_QStr
.length()!=0)
{
rcvDataHandle(rcvData_QStr
,pointInfom
,points
);
judgementStandard(pointInfom
,R_QUALIF_LUMINANCE
,R_QUALIF_LUMINANCE_ERROR
,points
);
}
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
void Widget
::updataUiData()
{
points
= ui
->sbPoints
->value();
pointSize
= ui
->sbHsldPointSize
->value();
if(QString
::compare(sendData_Str
.remove(" "),ui
->textEditTXD
->toPlainText().remove(" ")) != 0)
{
insertSpaceDataHandle(sendData_Str
);
ui
->textEditTXD
->setText(sendData_Str
);
}
if(rcvData_Byt
.length()!=0)
{
rcvData_QStr
= rcvData_Byt
.toHex().toUpper().mid(8);
insertSpaceDataHandle(rcvData_QStr
.remove(" "));
ui
->textEditRXD
->append("#接收#:"+rcvData_QStr
+"\n");
}
}
void Widget
::on_hsldPoints_sliderReleased()
{
points
= ui
->hsldPoints
->value();
}
void Widget
::on_hsldPointSize_sliderReleased()
{
pointSize
= ui
->hsldPointSize
->value();
}
void Widget
::on_textEditTXD_textChanged()
{
sendData_Str
= ui
->textEditTXD
->toPlainText();
}
void Widget
::on_sbHsldPointSize_valueChanged(int arg1
)
{
pointSize
= ui
->sbHsldPointSize
->value();
}
void Widget
::on_sbPoints_valueChanged(int arg1
)
{
points
= ui
->sbPoints
->value();
}
#include "Widget.h"
#include "ui_Widget.h"
#include <QPushButton>
Widget
::Widget(QWidget
*parent
) :
QWidget(parent
),
ui(new Ui
::Widget
)
{
ui
->setupUi(this);
serial
= new QSerialPort();
QString instructData
= "00 11 22 33 44 08 f0 00 20 ee f0 ee 40 a4 f0 db 81 a4 00 d9 81 06 01 06 81 08 01 08 81 0a 01 0a 81 0c 01 0c 81 0e 01 0e 81 10 01 10 81 12 01 12 81 14 01 14 81 16 01 16 81 18 01 18 81 1a 01 1a 81 1c 01 1c 81 1e 01 1e 81 20 01 20 81 22 01 22 ee";
sendData_Str
= instructData
;
portInit();
initTimer(100);
ui
->textEditTXD
->setText(sendData_Str
);
ui
->widget_6
->setVisible(false);
ui
->widget_5
->setVisible(false);
ui
->widget_3
->setVisible(false);
ui
->widget_2
->setVisible(false);
ui
->widget_6
->setVisible(false);
ui
->sbPoints
->setRange(1,18);
ui
->hsldPoints
->setRange(1,18);
ui
->hsldPointSize
->setRange(1,15);
}
Widget
::~Widget()
{
delete ui
;
delete serial
;
}
void Widget
::on_btnClear_clicked()
{
ui
->textEditRXD
->clear();
}
胡乱写的东西
转载请注明原文地址: https://mac.8miu.com/read-485465.html