wfview/shuttle.cpp

94 wiersze
2.0 KiB
C++
Czysty Zwykły widok Historia

2021-05-27 07:49:35 +00:00
#include "shuttle.h"
#include <QDebug>
2021-06-01 16:48:19 +00:00
shuttle::shuttle(int vid, int pid):
vid(vid),
pid(pid)
2021-05-27 07:49:35 +00:00
{
}
shuttle::~shuttle()
{
this->closeDevice();
m_hid_dev->deleteLater();
}
2021-06-01 16:48:19 +00:00
void shuttle::init()
2021-05-27 07:49:35 +00:00
{
2021-06-01 16:48:19 +00:00
m_hid_dev = new QHidDevice();
qDebug("Opening shuttle");
2021-05-27 07:49:35 +00:00
2021-06-01 16:48:19 +00:00
m_hid_dev->open(vid, pid);
qDebug() << "Manufacturer:" << m_hid_dev->manufacturer();
qDebug() << "Product:" << m_hid_dev->product();
return;
2021-05-27 07:49:35 +00:00
}
void shuttle::closeDevice()
{
qDebug("Closing");
if (m_hid_dev->isOpen()) {
m_hid_dev->close();
}
}
void shuttle::read(QByteArray* buf)
{
QByteArray b(128, '0');
m_hid_dev->read(&b, b.size());
qDebug() << "Reading" << b << b.size();
buf->append(b);
}
void shuttle::write(QByteArray* buf)
{
qDebug() << "Writing" << *buf << buf->size();
if (m_hid_dev->write(buf, buf->size()) < 0) {
qWarning("write failed");
}
}
2021-06-01 16:48:19 +00:00
void shuttle::process()
{
quint8 jogpos=0;
qDebug() << "Starting shuttle process";
while (true) {
QByteArray b(128, '0');
if (m_hid_dev != Q_NULLPTR) {
m_hid_dev->read(&b, b.size(), 100);
//qDebug() << "Reading" << b << b.size();
if (b.size() == 5)
{
qDebug() << "Shuttle Data received: " << hex << (quint8)b[0] << ":"
<< hex << (quint8)b[1] << ":"
<< hex << (quint8)b[2] << ":"
<< hex << (quint8)b[3] << ":"
<< hex << (quint8)b[4];
if ((quint8)b[1] != jogpos) {
if ((quint8)b[1] > jogpos && ((quint8)b[1] != 0x00 && jogpos != 0xff))
{
qDebug() << "Jog UP";
}
else {
qDebug() << "Jog Down";
}
jogpos = (quint8)b[1];
}
}
}
else {
QThread::yieldCurrentThread();
QThread::msleep(100);
}
}
}