#include "lattice_com_reign.h" #include "ui_lattice_com_reign.h" #include 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); }