You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.3 KiB
119 lines
4.3 KiB
6 years ago
|
#include "lattice_com_reign.h"
|
||
|
#include "ui_lattice_com_reign.h"
|
||
|
|
||
|
#include <QTime>
|
||
|
|
||
|
lattice_com_reign::lattice_com_reign(QWidget *parent) :
|
||
|
QMainWindow(parent),
|
||
|
ui(new Ui::lattice_com_reign)
|
||
|
{
|
||
|
ui->setupUi(this);
|
||
|
log = "";
|
||
|
on_com_reflseh_clicked();
|
||
|
tmr.setInterval(100);
|
||
|
tmr.setSingleShot(false);
|
||
|
//tmr.setTimerType();
|
||
|
QObject::connect(&tmr, SIGNAL(timeout()), this, SLOT (com_data_received()));
|
||
|
//QObject::connect(&com, SIGNAL(readyRead()), this, SLOT (com_data_received()));
|
||
|
QWidget* widgets_unlocked[] = { ui->com_tx };
|
||
|
for (int i = 0; i < sizeof(widgets_unlocked)/sizeof(QWidget*); i++)
|
||
|
widgets_unlocked[i]->setEnabled(com.isOpen());
|
||
|
tmr.start(1);
|
||
|
}
|
||
|
|
||
|
lattice_com_reign::~lattice_com_reign()
|
||
|
{
|
||
|
delete ui;
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::on_com_reflseh_clicked()
|
||
|
{
|
||
|
com_list = QSerialPortInfo::availablePorts();
|
||
|
for (int i = 0; i < com_list.length(); i++) {
|
||
|
if (com_list.at(i).portName() == "ttyUSB0")
|
||
|
com_list.removeAt(i);
|
||
|
}
|
||
|
for (int i = 0; i < com_list.length(); i++)
|
||
|
ui->com_list->addItem(com_list.at(i).portName());
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::on_com_list_currentIndexChanged(int index)
|
||
|
{
|
||
|
ui->com_list->setToolTip(com_list.at(index).description());
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::on_connect_clicked()
|
||
|
{
|
||
|
QWidget* widgets_locked[] = { ui->com_list, ui->com_reflesh };
|
||
|
QWidget* widgets_unlocked[] = { ui->com_tx };
|
||
|
if (ui->connect->text() == "Connect") {
|
||
|
com.setPortName(com_list.at(ui->com_list->currentIndex()).portName());
|
||
|
if (com.open(QSerialPort::ReadWrite)) {
|
||
|
com.setParity(QSerialPort::NoParity);
|
||
|
com.setDataBits(QSerialPort::Data8);
|
||
|
com.setStopBits(QSerialPort::OneStop);
|
||
|
com.setFlowControl(QSerialPort::NoFlowControl);
|
||
|
com.setBaudRate(921600);
|
||
|
ui->connect->setText("Disconnect");
|
||
|
toLog ("COM " + com.portName() + " OPENED OK");
|
||
|
}
|
||
|
else
|
||
|
toLog ("COM " + com.portName() + " OPEN ERROR");
|
||
|
}
|
||
|
else {
|
||
|
com.close();
|
||
|
toLog ("COM " + com.portName() + " CLOSED");
|
||
|
ui->connect->setText("Connect");
|
||
|
}
|
||
|
for (int i = 0; i < sizeof(widgets_locked)/sizeof(QWidget*); i++)
|
||
|
widgets_locked[i]->setEnabled(!com.isOpen());
|
||
|
for (int i = 0; i < sizeof(widgets_unlocked)/sizeof(QWidget*); i++)
|
||
|
widgets_unlocked[i]->setEnabled(com.isOpen());
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::toLog(QString str)
|
||
|
{
|
||
|
log = QTime::currentTime().toString("HH:mm:ss") + "\t" + str + "\n" + log;
|
||
|
ui->log->setText("LOG\n\n" + log);
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::on_com_tx_clicked()
|
||
|
{
|
||
|
QByteArray a;
|
||
|
a.push_back(ui->byte_to_transmit->value());
|
||
|
com.write(a);
|
||
|
toLog ("BYTE " + QString::number(ui->byte_to_transmit->value(), 16) + " TX");
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::com_data_received()
|
||
|
{
|
||
|
ui->time->setText(QTime::currentTime().toString("HH:mm:ss"));
|
||
|
if (com.isOpen() == false)
|
||
|
return;
|
||
|
QByteArray bytes_read = com.readAll();
|
||
|
QString com_outs_now = "CTS ";/*
|
||
|
if (com.isRequestToSend()) com_outs_now = com_outs_now + "1, DTR ";
|
||
|
else com_outs_now = com_outs_now + "0, DTR ";
|
||
|
if (com.isDataTerminalReady()) com_outs_now = com_outs_now + "1";
|
||
|
else com_outs_now = com_outs_now + "0";*/
|
||
|
int pinout = com.pinoutSignals();
|
||
|
if (pinout & (QSerialPort::ClearToSendSignal)) com_outs_now = com_outs_now + "1, DSR ";
|
||
|
else com_outs_now = com_outs_now + "0, DSR ";
|
||
|
if (pinout & (QSerialPort::DataSetReadySignal)) com_outs_now = com_outs_now + "1, DCD ";
|
||
|
else com_outs_now = com_outs_now + "0, DCD ";
|
||
|
if (pinout & (QSerialPort::DataCarrierDetectSignal)) com_outs_now = com_outs_now + "1";
|
||
|
else com_outs_now = com_outs_now + "0";
|
||
|
if (com_outs_now != com_outs) {
|
||
|
com_outs = com_outs_now;
|
||
|
toLog(com_outs);
|
||
|
}
|
||
|
for (int i = 0; i < bytes_read.length(); i++)
|
||
|
toLog ("RECEIVED BYTE " + QString::number(((int)(bytes_read.at(i)) & 0xFF), 16) + ", PINOUT " + QString::number(pinout, 16));
|
||
|
}
|
||
|
|
||
|
void lattice_com_reign::on_clear_log_clicked()
|
||
|
{
|
||
|
log = "";
|
||
|
ui->log->setText("LOG\n\n" + log);
|
||
|
}
|