-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserialmanager.cpp
107 lines (91 loc) · 2.63 KB
/
serialmanager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "serialmanager.h"
#include "qdebug.h"
#include "ui_serialmanager.h"
#include <QSerialPortInfo>
#include <QThread>
SerialManager::SerialManager(QWidget *parent) :
QWidget(parent),
ui(new Ui::SerialManager)
, spOpened(false)
{
ui->setupUi(this);
connect(&sp, SIGNAL(readyRead()), this, SLOT(onReadReady()));
}
SerialManager::~SerialManager()
{
delete ui;
}
void SerialManager::StartScan()
{
QList<QSerialPortInfo> portsList = QSerialPortInfo::availablePorts();
ui->comboBox->clear();
qDebug()<<"portsList len is "<<portsList.size();
if(portsList.size() > 0)
ui->comboBox->addItem("");
for(auto ic = portsList.cbegin(); ic != portsList.cend(); ++ic)
{
ui->comboBox->addItem(ic->portName(), ic->systemLocation());
}
}
void SerialManager::on_scanButton_clicked()
{
StartScan();
ui->connectButton->setEnabled(false);
}
void SerialManager::on_comboBox_activated(int index)
{
qDebug()<<"activated index "<<index<<" with value"<<ui->comboBox->itemText(index);
ui->connectButton->setEnabled(ui->comboBox->itemText(index) != "" );
}
void SerialManager::on_disconnectButton_clicked()
{
if(sp.isOpen())
{
sp.close();
}
spOpened = false;
ui->disconnectButton->setEnabled(spOpened);
}
void SerialManager::on_connectButton_clicked()
{
auto i = ui->comboBox->currentIndex();
qDebug()<<ui->comboBox->itemText(i)<<" "<<ui->comboBox->itemData(i).toString();
sp.setPortName( ui->comboBox->itemText(i) );
sp.setBaudRate(QSerialPort::Baud115200);
sp.setDataBits(QSerialPort::Data8);
sp.setParity(QSerialPort::NoParity);
sp.setStopBits(QSerialPort::OneStop);
sp.setFlowControl(QSerialPort::SoftwareControl);
auto openRV = sp.open(QIODevice::ReadWrite);
if(sp.isOpen())
{
spOpened = true;
ui->disconnectButton->setEnabled(spOpened);
ui->connectButton->setEnabled(false);
}
}
void SerialManager::onReadReady()
{
auto rv = sp.readAll();
qDebug()<<"Received "<<rv;
}
void SerialManager::makeMove(int slot, int direction, int step, int speed)
{
QString cmd = QString("G1 J%1 %2 S %3").arg(slot).arg(direction > 0?(step * 100):(-step * 100)).arg(speed);
qDebug()<<"cmd == "<<cmd;
auto array = cmd.toLocal8Bit();
int i;
for(i=0; i < array.length(); ++i)
{
char rr[2];
rr[1] = '\0';
rr[0]= array.at(i);
sp.write(rr);
QThread::msleep(5);
}
sp.write("\r\n");
}
void SerialManager::on_xButton_clicked()
{
sp.write("x");
}