init
This commit is contained in:
246
device/SerialPort/lightsource.cpp
Normal file
246
device/SerialPort/lightsource.cpp
Normal file
@@ -0,0 +1,246 @@
|
||||
#include "lightsource.h"
|
||||
#include "rs_settings.h"
|
||||
|
||||
LightSource* LightSource::UniqueInstance = nullptr;
|
||||
|
||||
LightSource* LightSource::Instance()
|
||||
{
|
||||
if (!UniqueInstance) {
|
||||
UniqueInstance = new LightSource();
|
||||
}
|
||||
return UniqueInstance;
|
||||
}
|
||||
LightSource::~LightSource()
|
||||
{
|
||||
|
||||
}
|
||||
LightSource::LightSource()
|
||||
{
|
||||
|
||||
}
|
||||
int LightSource::getCheck(char * buf, int len,char * strAscii)
|
||||
{
|
||||
unsigned char data = 0;
|
||||
data = static_cast<unsigned char>(buf[0]);
|
||||
for (int i = 1;i < len; i++)
|
||||
{
|
||||
data = static_cast<unsigned char>(data ^ buf[i]);
|
||||
}
|
||||
getValueAscii(data, strAscii);
|
||||
return 0;
|
||||
}
|
||||
int LightSource::getValueAscii(unsigned char value,char * strAscii)
|
||||
{
|
||||
char ascii_buf[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
|
||||
int high,low;
|
||||
high = (value & 0xf0) >> 4;
|
||||
low = value & 0x0f;
|
||||
strAscii[0] = ascii_buf[high];
|
||||
strAscii[1] = ascii_buf[low];
|
||||
return 0;
|
||||
}
|
||||
int LightSource::SetBrightness(int chn)
|
||||
{
|
||||
int ret;
|
||||
unsigned char data;
|
||||
char cmd[50] = {0};
|
||||
char ascii_buf[2];
|
||||
|
||||
if (m_hComm == nullptr)
|
||||
{
|
||||
bool ret = OpenComm();
|
||||
if (!ret)
|
||||
{
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int brightness;
|
||||
RS_SETTINGS->beginGroup("device/LightSource");
|
||||
brightness = RS_SETTINGS->readNumEntry("/brightnessFind");
|
||||
RS_SETTINGS->endGroup();
|
||||
|
||||
data = static_cast<unsigned char>(brightness);
|
||||
getValueAscii(data,ascii_buf);
|
||||
|
||||
cmd[0] = '#';
|
||||
cmd[1] = '3';
|
||||
cmd[2] = static_cast<char>(0x30 + chn);
|
||||
cmd[3] = 0x30;
|
||||
cmd[4] = ascii_buf[0];
|
||||
cmd[5] = ascii_buf[1];
|
||||
getCheck(cmd, 6, ascii_buf);
|
||||
cmd[6] = ascii_buf[0];
|
||||
cmd[7] = ascii_buf[1];
|
||||
|
||||
|
||||
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 8 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
if (ret == 0)
|
||||
{
|
||||
if (revData[0] != '#')
|
||||
return -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
int LightSource::LightOn(int chn)
|
||||
{
|
||||
int ret;
|
||||
char cmd[50] = {0};
|
||||
char ascii_buf[10];
|
||||
char chn_char;
|
||||
int chnNumber;
|
||||
|
||||
if (m_hComm == nullptr)
|
||||
{
|
||||
bool ret = OpenComm();
|
||||
if (!ret)
|
||||
{
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int brightness;
|
||||
if (chn == 1)
|
||||
{
|
||||
RS_SETTINGS->beginGroup("device/LightSource");
|
||||
brightness = RS_SETTINGS->readNumEntry("/brightnessFind");
|
||||
RS_SETTINGS->endGroup();
|
||||
chnNumber = chnFind;
|
||||
}
|
||||
else
|
||||
{
|
||||
RS_SETTINGS->beginGroup("device/LightSource");
|
||||
brightness = RS_SETTINGS->readNumEntry("/brightnessGlobal");
|
||||
RS_SETTINGS->endGroup();
|
||||
chnNumber = chnGlobal;
|
||||
}
|
||||
|
||||
sprintf_s(ascii_buf,10,"%04d",brightness);
|
||||
if (chnNumber == 1)
|
||||
{
|
||||
chn_char = 'A';
|
||||
}
|
||||
else if (chnNumber == 2)
|
||||
{
|
||||
chn_char = 'B';
|
||||
}
|
||||
else if (chnNumber == 3)
|
||||
{
|
||||
chn_char = 'C';
|
||||
}
|
||||
else
|
||||
{
|
||||
chn_char = 'D';
|
||||
}
|
||||
|
||||
cmd[0] = 'S';
|
||||
cmd[1] = chn_char;
|
||||
memcpy_s(&cmd[2],4,ascii_buf,4);
|
||||
cmd[6] = '#';
|
||||
|
||||
|
||||
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 7 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
if (ret == 0)
|
||||
{
|
||||
if (revData[0] != chn_char)
|
||||
{
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 8 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
if (revData[0] != chn_char)
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 7 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
int LightSource::LightOff(int chn)
|
||||
{
|
||||
int ret;
|
||||
char cmd[50] = {0};
|
||||
char ascii_buf[10];
|
||||
char chn_char;
|
||||
int chnNumber;
|
||||
|
||||
if (m_hComm == nullptr)
|
||||
{
|
||||
bool ret = OpenComm();
|
||||
if (!ret)
|
||||
{
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int brightness = 0;
|
||||
if (chn == 1)
|
||||
{
|
||||
chnNumber = chnFind;
|
||||
}
|
||||
else
|
||||
{
|
||||
chnNumber = chnGlobal;
|
||||
}
|
||||
|
||||
sprintf_s(ascii_buf,10,"%04d",brightness);
|
||||
if (chnNumber == 1)
|
||||
{
|
||||
chn_char = 'A';
|
||||
}
|
||||
else if (chnNumber == 2)
|
||||
{
|
||||
chn_char = 'B';
|
||||
}
|
||||
else if (chnNumber == 3)
|
||||
{
|
||||
chn_char = 'C';
|
||||
}
|
||||
else
|
||||
{
|
||||
chn_char = 'D';
|
||||
}
|
||||
|
||||
cmd[0] = 'S';
|
||||
cmd[1] = chn_char;
|
||||
memcpy_s(&cmd[2],4,ascii_buf,4);
|
||||
cmd[6] = '#';
|
||||
|
||||
|
||||
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 7 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
if (ret == 0)
|
||||
{
|
||||
if (revData[0] != chn_char)
|
||||
{
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 8 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
if (revData[0] != chn_char)
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = SendCmd(reinterpret_cast<char*>(cmd), 7 ,reinterpret_cast<unsigned char*>(revData), &revDataLen);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int LightSource::getChnId(QString DevName)
|
||||
{
|
||||
QSettings *settings;//申明一个QSetting类函数
|
||||
settings = new QSettings ("SerialDevSet.ini", QSettings::IniFormat);//构建函数
|
||||
|
||||
QString strKey;
|
||||
strKey = "/"+DevName+"/chnFind";
|
||||
chnFind = settings->value(strKey).toInt();
|
||||
strKey = "/"+DevName+"/chnGlobal";
|
||||
chnGlobal = settings->value(strKey).toInt();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user