124 lines
3.6 KiB
C++
124 lines
3.6 KiB
C++
#include "Ispindel.h"
|
|
#include <QDataStream>
|
|
#include "IspindelInterface.h"
|
|
|
|
CIspindel::CIspindel(CIspindelGUI *IspindelGui)
|
|
{
|
|
mIspindelGui = IspindelGui;
|
|
IspindelGui->mProgramHandle = this;
|
|
mNetworkInterface = new CIspindelInterface(this);
|
|
|
|
}
|
|
|
|
CIspindel::~CIspindel()
|
|
{
|
|
delete mNetworkInterface;
|
|
}
|
|
|
|
void CIspindel::Start()
|
|
{
|
|
mNetworkInterface->ConnectToMasterCtrl();
|
|
}
|
|
|
|
void CIspindel::IspindelFullBufferReceived(QByteArray *Data)
|
|
{
|
|
int NbItems;
|
|
QDataStream Strm(Data,QIODevice::ReadOnly | QIODevice::Unbuffered);
|
|
|
|
Strm >> NbItems;
|
|
|
|
if(NbItems == 0)
|
|
{
|
|
qDebug("Received empty Ispindel buffer...");
|
|
return;
|
|
}
|
|
|
|
ClearIspindleDataList();
|
|
|
|
for(int i = 0; i < NbItems; i++)
|
|
{
|
|
CIspindelData *NewFrame = new CIspindelData;
|
|
Strm >> *NewFrame;
|
|
|
|
mIspindelDataList.append(NewFrame);
|
|
}
|
|
|
|
SetLasFrameTextInGUI(*mIspindelDataList.last());
|
|
mIspindelGui->UpdateIspindelPlot(&mIspindelDataList);
|
|
|
|
}
|
|
|
|
void CIspindel::IspindelLastFrameReceived(QByteArray Data)
|
|
{
|
|
int DataSize;
|
|
QDataStream Strm(&Data,QIODevice::ReadOnly | QIODevice::Unbuffered);
|
|
|
|
if(Data.size() == 0)
|
|
return;
|
|
|
|
CIspindelData *NewData = new CIspindelData();
|
|
Strm >> *NewData;
|
|
|
|
mIspindelDataList.append(NewData);
|
|
SetLasFrameTextInGUI(*NewData);
|
|
mIspindelGui->NewIspindelFrameReceived(NewData);
|
|
|
|
// qDebug("Latest Ispindel data received");
|
|
|
|
}
|
|
|
|
void CIspindel::ClearIspindleDataList()
|
|
{
|
|
for(int i = 0; i < mIspindelDataList.size(); i++)
|
|
{
|
|
delete mIspindelDataList[i];
|
|
}
|
|
|
|
mIspindelDataList.clear();
|
|
}
|
|
|
|
void CIspindel::ConnectedToMaster(bool connected)
|
|
{
|
|
if(connected)
|
|
{
|
|
mNetworkInterface->SendMasterCtrlCommand(ISPINDEL_GET_FULL_DATA_BUFFER_REQUEST,QByteArray());
|
|
}
|
|
}
|
|
|
|
void CIspindel::SetLasFrameTextInGUI(CIspindelData Frame)
|
|
{
|
|
QString FrameText;
|
|
|
|
FrameText = QString("\nLast Frame:\n------------------------------\nAngle: %1\nBattery Voltage: %2\nGravity: %3\nSample Interval: %4\nIspindel ID: %5\nIspindel Name: %6\nRSSI: %7\nTemperature: %8%9\nSample date time: %10\n------------------------------")\
|
|
.arg(Frame.mAngle)\
|
|
.arg(Frame.mBattery)\
|
|
.arg(Frame.mGravity)\
|
|
.arg(Frame.mInterval)\
|
|
.arg(Frame.mIspindelID)\
|
|
.arg(Frame.mIspindelName)\
|
|
.arg(Frame.mRSSI)\
|
|
.arg(Frame.mTemperature).arg(Frame.mTemperatureUnits)\
|
|
.arg(Frame.mSampleDateTime.toString("yyyy-MM-dd - hh:mm:ss"));
|
|
// FrameText = QString("\nLast Frame\n\
|
|
// Angle: %1\n\
|
|
// Battery Voltage: %2\n\
|
|
// Gravity: %3\n\
|
|
// Sample Interval: %4\n\
|
|
// Ispindel ID: %5\n\
|
|
// Ispindel Name: %6\n\
|
|
// RSSI: %7\n\
|
|
// Temperature: %8%9\n\
|
|
// Sample date time: %10")\
|
|
// .arg(Frame.mAngle)\
|
|
// .arg(Frame.mBattery)\
|
|
// .arg(Frame.mGravity)\
|
|
// .arg(Frame.mInterval)\
|
|
// .arg(Frame.mIspindelID)\
|
|
// .arg(Frame.mIspindelName)\
|
|
// .arg(Frame.mRSSI)\
|
|
// .arg(Frame.mTemperature).arg(Frame.mTemperatureUnits)\
|
|
// .arg(Frame.mSampleDateTime.toString("yyyy-MM-dd - hh:mm:ss"));
|
|
|
|
mIspindelGui->SetLastIspindelFrameData(FrameText);
|
|
}
|