agv-control/Plugin/KcCtrl/KcOperDlg.cpp
2025-06-09 09:09:25 +08:00

550 lines
13 KiB
C++

// DevOptDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "KcCtrl.h"
#include "KcOperDlg.h"
#include "KcProtocol.h"
#include "afxdialogex.h"
// CDevOptDlg 对话框
IMPLEMENT_DYNAMIC(CKcOperDlg, CDialogEx)
CKcOperDlg::CKcOperDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_CK_OPT_DLG, pParent)
{
}
CKcOperDlg::~CKcOperDlg()
{
}
void CKcOperDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CKcOperDlg, CDialogEx)
ON_BN_CLICKED(IDC_BTN_0xAF, &CKcOperDlg::OnBnClickedBtn0xaf)
ON_BN_CLICKED(IDC_BTN_0xB0, &CKcOperDlg::OnBnClickedBtn0xb0)
ON_BN_CLICKED(IDC_BTN_0xB1, &CKcOperDlg::OnBnClickedBtn0xb1)
ON_BN_CLICKED(IDC_BTN_0x02, &CKcOperDlg::OnBnClickedBtn0x02)
ON_BN_CLICKED(IDC_BTN_0x03, &CKcOperDlg::OnBnClickedBtn0x03)
ON_BN_CLICKED(IDC_BTN_0x14, &CKcOperDlg::OnBnClickedBtn0x14)
ON_BN_CLICKED(IDC_BTN_0x17, &CKcOperDlg::OnBnClickedBtn0x17)
ON_BN_CLICKED(IDC_BTN_0xB2, &CKcOperDlg::OnBnClickedBtn0xb2)
ON_BN_CLICKED(IDC_BTN_0xAE, &CKcOperDlg::OnBnClickedBtn0xae)
ON_BN_CLICKED(IDC_BTN_0x1F, &CKcOperDlg::OnBnClickedBtn0x1f)
END_MESSAGE_MAP()
// CDevOptDlg 消息处理程序
void CKcOperDlg::OnBnClickedBtn0xaf()
{
//构造请求报文
CKcProtocol protocol;
unsigned char acMsgContent[1024];
int nMsgLength;
protocol.BuildRequestMessage(0xAF, acMsgContent, nMsgLength);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(),theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return ;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize > 0)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret = protocol.Analysis0xAFMessage(acRecv, recvSize);
theApp.SendMsg2Platform("OPENTCS", AGV_STATUS_RPT, ret);
}
else
{
//std::cout << "Received: failed." << recvSize << std::endl;
}
}
void CKcOperDlg::OnBnClickedBtn0xb0()
{
//构造请求报文
CKcProtocol protocol;
unsigned char acMsgContent[1024];
int nMsgLength;
protocol.BuildRequestMessage(0xB0, acMsgContent, nMsgLength);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize > 0)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret = protocol.Analysis0xB0Message(acRecv, recvSize);
theApp.SendMsg2Platform("OPENTCS", 0xB0, ret);
}
else
{
//std::cout << "Received: failed." << recvSize << std::endl;
}
}
void CKcOperDlg::OnBnClickedBtn0x17()
{
//构造请求报文
CKcProtocol protocol;
unsigned char acMsgContent[1024];
int nMsgLength;
protocol.BuildRequestMessage(0x17, acMsgContent, nMsgLength);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize > 0)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret = protocol.Analysis0x17Message(acRecv, recvSize);
theApp.SendMsg2Platform("OPENTCS", 0x17, ret);
}
else
{
//std::cout << "Received: failed." << recvSize << std::endl;
}
}
void CKcOperDlg::OnBnClickedBtn0xb1()
{
// TODO: 在此添加控件通知处理程序代码
}
void CKcOperDlg::OnBnClickedBtn0x02()
{
Json::Value param;
param["varCount"] = 1;
Json::Value value;
Json::Value value_item;
value_item["name"] = "NaviControl";
value_item["count"] = 1;
Json::Value member;
Json::Value member_item;
member_item["offset"] = 0;
member_item["length"] = 1;
member.append(member_item);
value_item["member"] = member;
value.append(value_item);
param["var"] = value;
Build0x02Message(param);
}
void CKcOperDlg::OnBnClickedBtn0x03()
{
Json::Value param;
param["var_count"] = 1;
Json::Value value;
Json::Value value_item;
value_item["name"] = "NaviControl";
value_item["count"] = 1;
Json::Value member;
Json::Value member_item;
member_item["offset"] = 0;
member_item["length"] = 1;
member_item["value"] = 1;
member.append(member_item);
value_item["member"] = member;
value.append(value_item);
param["var"] = value;
//Json::FastWriter writer;
//string strJson = writer.write(param);
//AfxMessageBox(strJson.c_str());
Build0x03Message(param);
}
void CKcOperDlg::OnBnClickedBtn0x14()
{
Json::Value param;
param["angle"] = 1.0;
param["x"] = 3.0;
param["y"] = 2.0;
Build0x14Message(param);
}
void CKcOperDlg::OnBnClickedBtn0xb2()
{
Json::Value param;
int nType = 3;
if (1 == nType)
{
param["paramSize"] = 4;
param["actionParallelManner"] = 2;
param["actionType"] = 1;
Json::Value paramData;
Json::Value dataItem;
dataItem["isStopImmediately"] = 1;
paramData.append(dataItem);
param["paramData"] = paramData;
}
else if(2 == nType)
{
param["paramSize"] = 8;
param["actionParallelManner"] = 2;
param["actionType"] = 2;
Json::Value paramData;
Json::Value dataItem;
dataItem["orderId"] = 1;
dataItem["taskKey"] = 1;
paramData.append(dataItem);
param["paramData"] = paramData;
}
else if (3 == nType)
{
param["paramSize"] = 8;
param["actionParallelManner"] = 2;
param["actionType"] = 3;
Json::Value paramData;
Json::Value dataItem;
dataItem["orderId"] = 1;
dataItem["isStopImmediately"] = 1;
paramData.append(dataItem);
param["paramData"] = paramData;
}
Build0xB2Message(param);
}
void CKcOperDlg::Build0xAEMessage(Json::Value param)
{
unsigned char acMsgContent[1024] = { 0 };
int nMsgLength = 0;
CKcProtocol protocol;
protocol.BuildRequestMessage(0xAE, acMsgContent, nMsgLength, param);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize == 28)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret ;
ret["state"] = 1;
theApp.SendMsg2Platform("OPENTCS", 0xAE, ret); //下发成功
}
else
{
Json::Value ret;
ret["state"] = 0;
theApp.SendMsg2Platform("OPENTCS", 0xAE, ret); //下发失败
}
}
void CKcOperDlg::Build0xB2Message(Json::Value param)
{
unsigned char acMsgContent[1024] = { 0 };
int nMsgLength = 0;
CKcProtocol protocol;
protocol.BuildRequestMessage(0xB2, acMsgContent, nMsgLength, param);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize == 28)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret;
ret["state"] = 1;
theApp.SendMsg2Platform("OPENTCS", 0xB2, ret); //下发成功
}
else
{
Json::Value ret;
ret["state"] = 0;
theApp.SendMsg2Platform("OPENTCS", 0xB2, ret); //下发失败
}
}
void CKcOperDlg::Build0x02Message(Json::Value param)
{
unsigned char acMsgContent[1024] = { 0 };
int nMsgLength = 0;
CKcProtocol protocol;
protocol.BuildRequestMessage(0x02, acMsgContent, nMsgLength, param);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize >= 28)
{
Json::Value ret = protocol.Analysis0x02Message(acRecv, recvSize);
theApp.SendMsg2Platform("OPENTCS", 0x02, ret);
//Json::Value ret;
//ret["state"] = 1;
//theApp.SendMsg2Platform("OPENTCS", 0x02, ret); //下发成功
}
else
{
Json::Value ret;
ret["state"] = 0;
theApp.SendMsg2Platform("OPENTCS", 0x02, ret); //下发失败
}
}
void CKcOperDlg::Build0x14Message(Json::Value param)
{
unsigned char acMsgContent[1024] = { 0 };
int nMsgLength = 0;
CKcProtocol protocol;
protocol.BuildRequestMessage(0x14, acMsgContent, nMsgLength, param);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize >= 28)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret;
ret["state"] = 1;
theApp.SendMsg2Platform("OPENTCS", 0x14, ret); //下发成功
}
else
{
Json::Value ret;
ret["state"] = 0;
theApp.SendMsg2Platform("OPENTCS", 0x14, ret); //下发失败
}
}
void CKcOperDlg::Build0x03Message(Json::Value param)
{
unsigned char acMsgContent[1024] = { 0 };
int nMsgLength = 0;
CKcProtocol protocol;
protocol.BuildRequestMessage(0x03, acMsgContent, nMsgLength, param);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize == 28)
{
//std::cout << "Received: " << acRecv << std::endl;
Json::Value ret;
ret["state"] = 1;
theApp.SendMsg2Platform("OPENTCS", 0x03, ret); //下发成功
}
else
{
Json::Value ret;
ret["state"] = 0;
theApp.SendMsg2Platform("OPENTCS", 0x03, ret); //下发失败
}
}
void CKcOperDlg::OnBnClickedBtn0xae()
{
//模拟数据报文
Json::Value param;
param["orderId"] = 1;
param["taskKey"] = 1;
param["pointSize"] = 2;
param["pathSize"] = 1;
Json::Value pointInfo;
Json::Value pointItem;
pointItem["pointSerialNumber"] = 0;
pointItem["pointId"] = 1;
pointItem["frontAngle"] = 0;
pointItem["isFrontAngle"] = 0;
pointInfo.append(pointItem);
pointItem["pointSerialNumber"] = 2;
pointItem["pointId"] = 2;
pointItem["frontAngle"] = 0;
pointItem["isFrontAngle"] = 0;
pointInfo.append(pointItem);
param["point"] = pointInfo;
Json::Value pathInfo;
Json::Value pathItem;
pathItem["pathSerialNumber"] = 1;
pathItem["pathId"] = 12;
pathItem["pathActionSize"] = 0;
pathItem["pathActionSize"] = 0;
pathItem["maximumSpeed"] = 1.0;
pathItem["maximumAngularVelocity"] = 1.0;
pathItem["isFixedAngle"] = 0;
pathItem["fixedAngle"] = 0;
pathItem["drivePosture"] = 0;
pathInfo.append(pathItem);
param["path"] = pathInfo;
Build0xAEMessage(param);
}
void CKcOperDlg::OnBnClickedBtn0x1f()
{
//构造请求报文
CKcProtocol protocol;
unsigned char acMsgContent[1024];
int nMsgLength;
protocol.BuildRequestMessage(0x1F, acMsgContent, nMsgLength);
if (!m_udpClent.Connect(theApp.m_strControllerIp.GetBuffer(), theApp.m_nControllerPort))
{
std::cout << "Connect error." << std::endl;
return;
}
int lRto = 3000;//重传时间,单位毫秒
int lRtoCnt = 3;//最大重传次数
unsigned char acRecv[1024] = { 0 };//接收数据缓冲区
int lRecvbufSize = sizeof(acRecv);//接收缓冲区大小
int recvSize = m_udpClent.SendAndRecv((const char *)acMsgContent, nMsgLength, (char *)acRecv, lRecvbufSize, lRto, lRtoCnt);
if (recvSize > 0)
{
//std::cout << "Received: " << acRecv << std::endl;
//Json::Value ret = protocol.Analysis0xAFMessage(acRecv, recvSize);
Json::Value ret;
ret["state"] = 1;
theApp.SendMsg2Platform("OPENTCS", 0x1F, ret);
}
else
{
//std::cout << "Received: failed." << recvSize << std::endl;
}
}