Files
newspark110/device/SerialPort/PanasonicHeightFind.cpp
Chenwenxuan edac2715f0 init
2024-03-06 14:54:30 +08:00

63 lines
1.6 KiB
C++

#include "PanasonicHeightFind.h"
PanasonicHeightFind* PanasonicHeightFind::uniqueInstance = nullptr;
PanasonicHeightFind* PanasonicHeightFind::instance()
{
if (!uniqueInstance) {
uniqueInstance = new PanasonicHeightFind();
}
return uniqueInstance;
}
PanasonicHeightFind::PanasonicHeightFind()
{
}
PanasonicHeightFind::~PanasonicHeightFind()
{
}
int PanasonicHeightFind::SetLaser(int deviceID,int value)
{
int ret;
int CR = 0xd;
char cmd[50];//%03#WLR+00000**D %03$WLR**D %03!XX**D
sprintf_s(cmd,50,"%%%02dWLR+%05d**%X",deviceID,value,CR);
ret = SendCmd(cmd, static_cast<unsigned short>(strlen(cmd)) ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
if (ret== 0)
{
if (revData[3] == '$')
ret = 0;
else
ret = -1;
}
return ret;
}
int PanasonicHeightFind::GetHeightValue(int deviceID,double *value)
{
//% 0 3 # R M D * * CR % 0 3 $ R M D - 0 1 2 3 4 5 6 * * CR
int ret;
int CR = 0xd;
char cmd[50];
sprintf_s(cmd,50,"%%%02dRMD**%X",deviceID,CR);
ret = SendCmd(cmd, static_cast<unsigned short>(strlen(cmd)) ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
if (ret== 0)
{
if (revData[3] == '$')
{
memset(cmd,0,50);
memcpy_s(cmd,50,&revData[7],8);
*value = atof(cmd);
*value = *value / 10000;
ret = 0;
}
else
ret = -1;
}
return ret;
}
// int SendCmd(char *data, unsigned short data_len ,unsigned char * revData, int * revData_len);