2024-04-08 02:38:51 +00:00
|
|
|
|
|
|
|
|
|
|
#include "GetRfidEngine.h"
|
|
|
|
|
|
|
|
|
|
|
|
using namespace ai_matrix;
|
|
|
|
|
|
|
|
|
|
|
|
GetRfidEngine::GetRfidEngine() {}
|
|
|
|
|
|
|
|
|
|
|
|
GetRfidEngine::~GetRfidEngine() {}
|
|
|
|
|
|
|
|
|
|
|
|
APP_ERROR GetRfidEngine::Init()
|
|
|
|
|
|
{
|
|
|
|
|
|
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
|
|
|
|
|
|
this->baseConfig_ = Config::GetIns()->getBaseConfig();
|
|
|
|
|
|
this->serialConfig_ = Config::GetIns()->getSerialConfig();
|
|
|
|
|
|
this->ethernetConfig_ = Config::GetIns()->getEthernetConfig();
|
|
|
|
|
|
|
|
|
|
|
|
this->iConnectType = this->baseConfig_.iConnectType;
|
|
|
|
|
|
|
|
|
|
|
|
LogInfo << "GetRfidEngine Init ok";
|
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
APP_ERROR GetRfidEngine::DeInit()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (this->iConnectType == AEI_SOCKET_TYPE)
|
|
|
|
|
|
{
|
|
|
|
|
|
this->baseScoket_.Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (this->iConnectType == AEI_COM_TYPE)
|
|
|
|
|
|
{
|
|
|
|
|
|
this->baseComPort_.ttyClose();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LogInfo << "GetRfidEngine DeInit ok";
|
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
APP_ERROR GetRfidEngine::Process()
|
|
|
|
|
|
{
|
|
|
|
|
|
int iRet = APP_ERR_OK;
|
|
|
|
|
|
|
|
|
|
|
|
if (this->iConnectType == AEI_SOCKET_TYPE)
|
|
|
|
|
|
{
|
2024-04-25 09:53:34 +00:00
|
|
|
|
LogInfo << "RFID服务端IP:" << this->ethernetConfig_.strIp << " 端口:" << this->ethernetConfig_.iPort;
|
2024-04-08 02:38:51 +00:00
|
|
|
|
this->baseScoket_.Open();
|
|
|
|
|
|
this->baseScoket_.SetPort(this->ethernetConfig_.iPort, this->ethernetConfig_.strIp);
|
|
|
|
|
|
this->baseScoket_.Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (this->iConnectType == AEI_COM_TYPE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(this->baseComPort_.ttyOpen(this->serialConfig_.strComName) < 0){
|
|
|
|
|
|
LogError << "串口:" << this->serialConfig_.strComName << " 开启失败!";
|
|
|
|
|
|
}
|
|
|
|
|
|
if(this->baseComPort_.ttySetBaud(this->serialConfig_.iBaud,
|
|
|
|
|
|
this->serialConfig_.iDataBits,
|
|
|
|
|
|
this->serialConfig_.strParityBits,
|
|
|
|
|
|
this->serialConfig_.iStopBits) < 0) {
|
|
|
|
|
|
LogError << "串口设置参数失败";
|
|
|
|
|
|
}
|
|
|
|
|
|
LogInfo << this->serialConfig_.strComName << "com 开启成功";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
LogError << "通讯类型设置异常!";
|
|
|
|
|
|
}
|
2024-04-25 09:53:34 +00:00
|
|
|
|
LogInfo << "RFID开启通讯...";
|
2024-04-08 02:38:51 +00:00
|
|
|
|
|
|
|
|
|
|
while (!isStop_)
|
|
|
|
|
|
{
|
|
|
|
|
|
char chbuffer[AEI_COMM_BUFFER_SIZE] = {0};
|
|
|
|
|
|
int nRevSize = 0;
|
|
|
|
|
|
memset(chbuffer, 0x00, sizeof(chbuffer));
|
|
|
|
|
|
|
|
|
|
|
|
if (this->iConnectType == AEI_SOCKET_TYPE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!this->baseScoket_.bRuning())
|
|
|
|
|
|
{
|
|
|
|
|
|
LogError << "TCP 连接失败,重启中 ...";
|
|
|
|
|
|
usleep(20 * 1000 * 1000); // 20秒后重试
|
|
|
|
|
|
this->baseScoket_.Close();
|
|
|
|
|
|
this->baseScoket_.Open();
|
|
|
|
|
|
this->baseScoket_.Init();
|
|
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
nRevSize = this->baseScoket_.Read();
|
|
|
|
|
|
if (nRevSize <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
this->baseScoket_.Monitor();
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
memcpy(chbuffer, this->baseScoket_.chbuffer, nRevSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (this->iConnectType == AEI_COM_TYPE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!this->baseComPort_.bRuning())
|
|
|
|
|
|
{
|
|
|
|
|
|
LogError << this->serialConfig_.strComName << " 连接失败,重启中 ...";
|
|
|
|
|
|
usleep(20 * 1000 * 1000); // 20秒后重试
|
|
|
|
|
|
if(this->baseComPort_.ttyOpen(this->serialConfig_.strComName) < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
LogInfo << this->serialConfig_.strComName << "com 开启成功";
|
|
|
|
|
|
|
|
|
|
|
|
if(this->baseComPort_.ttySetBaud(this->serialConfig_.iBaud,
|
|
|
|
|
|
this->serialConfig_.iDataBits,
|
|
|
|
|
|
this->serialConfig_.strParityBits,
|
|
|
|
|
|
this->serialConfig_.iStopBits) < 0) {
|
|
|
|
|
|
this->baseComPort_.ttyClose();
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
nRevSize = this->baseComPort_.ttyRead();
|
|
|
|
|
|
|
|
|
|
|
|
if(nRevSize <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
usleep(1000 * 1000);
|
|
|
|
|
|
//comporthandle.ttyClose();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
nRevSize = this->baseComPort_.vGetBuffer(chbuffer, (int32_t)sizeof(chbuffer));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
LogError << "通讯类型设置异常!";
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<RfidInfo> pRfidTrain = std::make_shared<RfidInfo>();
|
|
|
|
|
|
pRfidTrain->strRfid = chbuffer;
|
|
|
|
|
|
pRfidTrain->strTime = TimeUtil::getins()->getDateTime();
|
|
|
|
|
|
|
|
|
|
|
|
iRet = outputQueMap_[strPort0_]->push(pRfidTrain);
|
|
|
|
|
|
if (iRet != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
LogError << "send data failure!";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return APP_ERR_OK;
|
|
|
|
|
|
}
|