|
|
#include "CodeScanStation.h"
|
|
|
#include "QZkJsonParser.h"
|
|
|
|
|
|
CodeScanStation::CodeScanStation()
|
|
|
{
|
|
|
m_pobjThread = new QThread;
|
|
|
moveToThread(m_pobjThread);
|
|
|
|
|
|
connect(m_pobjThread, &QThread::started, this, &CodeScanStation::onOpen);
|
|
|
connect(m_pobjThread, &QThread::finished,
|
|
|
this, &QObject::deleteLater);
|
|
|
m_bStartEmptyCheck = false;
|
|
|
}
|
|
|
|
|
|
CodeScanStation::~CodeScanStation()
|
|
|
{
|
|
|
closeComs();
|
|
|
if (m_pobjThread)
|
|
|
{
|
|
|
m_pobjThread->quit();
|
|
|
m_pobjThread->wait();
|
|
|
m_pobjThread = nullptr;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
bool CodeScanStation::loadParameters(const QString& filePath)
|
|
|
{
|
|
|
int error;
|
|
|
QJsonObject objJson = QZkJsonParser::ReadJsonObject(filePath, &error);
|
|
|
if (!objJson.empty())
|
|
|
{
|
|
|
QJsonArray jArray = objJson["customer"].toArray();
|
|
|
for (int i = 0; i < jArray.size(); ++i)
|
|
|
{
|
|
|
QJsonObject COMObj = jArray[i].toObject();
|
|
|
SerialParam sp;
|
|
|
sp.port_name_ = COMObj["port_name"].toString();
|
|
|
sp.baud_ = COMObj["BAUD"].toInt();
|
|
|
sp.auto_connect_ = COMObj["auto_connect"].toBool();
|
|
|
sp.modbus_type_ = SERIAL_CUSTOM;
|
|
|
QString deviceName = COMObj["device_name"].toString();
|
|
|
if (deviceName == CODESCAN_COM_LEFT)
|
|
|
{
|
|
|
m_ComSensorIDMap.insert(sp.port_name_, em_LEFT);
|
|
|
m_DeviceParaMap.insert(em_LEFT, sp);
|
|
|
}
|
|
|
else if (deviceName == CODESCAN_COM_RIGHT)
|
|
|
{
|
|
|
m_ComSensorIDMap.insert(sp.port_name_, em_RIGHT);
|
|
|
m_DeviceParaMap.insert(em_RIGHT, sp);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
qDebug() << "please check the comSetting file, err: " << error;
|
|
|
return false;
|
|
|
}
|
|
|
qDebug() << "Code scan load param successed";
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
void CodeScanStation::openComs()
|
|
|
{
|
|
|
m_pobjThread->start();
|
|
|
}
|
|
|
|
|
|
void CodeScanStation::closeComs()
|
|
|
{
|
|
|
for (auto iter = m_DeviceParaMap.begin(); iter != m_DeviceParaMap.end(); iter++)
|
|
|
{
|
|
|
lp_serial_manager::instance()->close(iter.value().port_name_);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Q_SLOT void CodeScanStation::onOpen()
|
|
|
{
|
|
|
for (auto iter = m_DeviceParaMap.begin(); iter != m_DeviceParaMap.end(); iter++)
|
|
|
{
|
|
|
if (lp_serial_manager::instance()->open(iter.value()) == -1)
|
|
|
{
|
|
|
qDebug() << "open " << iter.value().port_name_ << " fail.";
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
connect(lp_serial_manager::instance(), SIGNAL(signal_data_recv(const QString&, QSharedPointer<QByteArray>)),
|
|
|
this, SLOT(onSerialDataRecv(const QString&, QSharedPointer<QByteArray>)));
|
|
|
//connect(lp_serial_manager::instance(), SIGNAL(signal_state_changed(const QString&, SerialErrorType)),
|
|
|
// this, SLOT(onStateChanged(const QString&, SerialErrorType)));//<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>״̬
|
|
|
}
|
|
|
|
|
|
Q_SLOT void CodeScanStation::onSerialDataRecv(const QString& sn, QSharedPointer<QByteArray> data_ptr_)
|
|
|
{
|
|
|
qDebug() << "code scan com receive data";
|
|
|
if (m_ComSensorIDMap.contains(sn))
|
|
|
{
|
|
|
emit sgNewCodeScanData((int)m_ComSensorIDMap.value(sn), data_ptr_);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//Q_SLOT void CodeScanStation::onStateChanged(const QString& sn, SerialErrorType err)
|
|
|
//{
|
|
|
// /*
|
|
|
// <09><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>״̬
|
|
|
// */
|
|
|
// QString strMsg;
|
|
|
// if (err == OpenSuccess)
|
|
|
// {
|
|
|
// strMsg = QString("%1 open success!").arg(sn);
|
|
|
// qDebug() << strMsg;
|
|
|
// }
|
|
|
// else if (err == DeviceNotFoundError)
|
|
|
// {
|
|
|
// strMsg = QString("%1 not found! open failed.").arg(sn);
|
|
|
// qDebug() << strMsg;
|
|
|
// }
|
|
|
// else if (err == OpenError)
|
|
|
// {
|
|
|
// strMsg = QString("%1 open failed.").arg(sn);
|
|
|
// qDebug() << strMsg;
|
|
|
// }
|
|
|
// else if (err == CloseSuccess)
|
|
|
// {
|
|
|
// strMsg = QString("%1 close success.").arg(sn);
|
|
|
// qDebug() << strMsg;
|
|
|
// }
|
|
|
// else if (err == CloseError)
|
|
|
// {
|
|
|
// strMsg = QString("%1 Not found! close failed.").arg(sn);
|
|
|
// qDebug() << strMsg;
|
|
|
// }
|
|
|
//}
|