触发器与相机联动成功

This commit is contained in:
2024-05-22 01:32:43 +08:00
parent 8c68d557eb
commit 323cc25cf7
13 changed files with 230 additions and 135 deletions
@@ -1,9 +1,30 @@
#include <triggerManager.h>
#include <backEndManager.h>
#include <threadPoolManager.h>
#include <backStruct.h>
#include <cameraManager.h>
#include <jsonParsing.h>
static correctionStruct* correctionData;
void triggerManager::decodeCameraCMD(QByteArray byte)
{
#if 0
#if 1
//if (checkTrigger(1, 2, byte) == true)
{
detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0);
data->correctionData = correctionData;
_threadManager->addTask(data);//添加任务
auto camera = _cameraManager->cameras.find("123");
camera->second->Process(data);
}
//if (checkTrigger(2, 2, byte) == true)
{
detData* data = dManager->insertDetData("Camera1", "Thread2", "TEST", 0);
data->correctionData = correctionData;
_threadManager->addTask(data);//添加任务
auto camera = _cameraManager->cameras.find("Vir-CA013-20GC");
camera->second->Process(data);
}
return;
if (byte.isEmpty())
return;
double cameraData = 0;
@@ -24,12 +45,27 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
correctionData->in_Y_Y0Z = { -1147.29,-1147.28,-940.82 };
correctionData->in_Z_Y0Z = { 118.15,-228.19,-256.5 };
correctionData->in_X_Y0Z_Value = { -36.652200,-36.7302,41.0436 };
detData* data = dManager.insertDetData("Camera1", "correctionDataThread", "TEST", 0);
detData* data = dManager->insertDetData("Camera1", "correctionDataThread", "TEST", 0);
data->correctionData = correctionData;
workThread->addTask(data);//添加任务
_threadManager->addTask(data);//添加任务
correctionData = nullptr;
}
if (checkTrigger(1, 2, byte) == true)
{
detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0);
data->correctionData = correctionData;
_threadManager->addTask(data);//添加任务
auto camera = _cameraManager->cameras.find("123");
camera->second -> Process(data);
}
if (checkTrigger(2, 2, byte) == true)
{
detData* data = dManager->insertDetData("Camera1", "Thread3", "TEST", 0);
data->correctionData = correctionData;
_threadManager->addTask(data);//添加任务
auto camera = _cameraManager->cameras.find("456");
camera->second->Process(data);
}
//总流程开始,机器人发送1至寄存器259
//上位机确认OK之后,清零寄存器259,并发送1至寄存器260
@@ -37,8 +73,8 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
//之后机器人确认之后需发送测量点位总数具体值至寄存器258
if (checkTrigger(259, 1, byte) == true)
{
bridge.back.sendFinsMsg("write_short_259_0");//触发信号清零
bridge.back.sendFinsMsg("write_short_260_1");//开始检测信号
sendFinsMsg("write_short_259_0");//触发信号清零
sendFinsMsg("write_short_260_1");//开始检测信号
}
//机器人激光当前点位 264 1...9
@@ -64,7 +100,7 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
double xValue = (xValue1 == 1 ? 1 : -1) * ((double)xValue2 + ((double)xValue3) / (std::pow(10, to_string(xValue3).length())));
double yValue = (yValue1 == 1 ? 1 : -1) * ((double)yValue2 + ((double)yValue3) / (std::pow(10, to_string(yValue3).length())));
double zValue = (zValue1 == 1 ? 1 : -1) * ((double)zValue2 + ((double)zValue3) / (std::pow(10, to_string(zValue3).length())));
double rangeData = threadlist[0]->getValueFromCamera();
double rangeData = _cameraManager->cameras.find("相机的名字")->second->getCameraValue();
if (armPos == 1)//第一次
correctionData = new correctionStruct();
@@ -92,16 +128,16 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
correctionData->in_X_Y0Z_Value.push_back(rangeData);
}
}
bridge.back.sendFinsMsg("write_short_261_0");//清零
bridge.back.sendFinsMsg("write_short_262_1");
bridge.back.sendFinsMsg("write_short_263_1");
sendFinsMsg("write_short_261_0");//清零
sendFinsMsg("write_short_262_1");
sendFinsMsg("write_short_263_1");
//上位机校正完成,将寄存器274置为1,并将结果按照定义XYZ规则放入310~336中
if (armPos == 9)
{
detData* data = dManager.insertDetData("Camera1", "correctionDataThread", "TEST", 0);
detData* data = dManager->insertDetData("Camera1", "correctionDataThread", "TEST", 0);
data->correctionData = correctionData;
workThread->addTask(data);//添加任务
_threadManager->addTask(data);//添加任务
correctionData = nullptr;
}
}
@@ -110,8 +146,8 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
if (checkTrigger(300, 1, byte) == true)
{
bridge.back.sendFinsMsg("write_short_300_0");//触发信号清零
bridge.back.sendFinsMsg("write_short_301_1");//开始检测信号
sendFinsMsg("write_short_300_0");//触发信号清零
sendFinsMsg("write_short_301_1");//开始检测信号
int Pos = getValue(303, byte);
}
@@ -122,6 +158,9 @@ void triggerManager::decodeCameraCMD(QByteArray byte)
void triggerManager::init(backEndManager* input)
{
_backEndManager = input;
dManager = _backEndManager->_detDataManager;
_cameraManager = _backEndManager->_cameraManager;
_threadManager = _backEndManager->_threadManager;
QLibrary* m_lib = new QLibrary(triggerFileName);
bool flag = m_lib->load();
if (!m_lib->isLoaded())
@@ -152,4 +191,14 @@ void triggerManager::init(backEndManager* input)
}
}
this->start();
}
int triggerManager::getValue(int dmPos, QByteArray byte)
{
int triggerPos = (dmPos - _backEndManager->_jsonConfiguration->tcp.startPos) * 2;
if (byte.size() / 2 < triggerPos)
return false;
int val1 = byte.at(triggerPos) * 256;
int val2 = static_cast<unsigned char>(byte.at(triggerPos + 1));
return val1 + val2;
}