1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include "ivchart_impl.h"
- namespace iv {
- ivchart_impl::ivchart_impl()
- {
- mmsg = QDBusMessage::createSignal("/catarc/adc", "adciv.interface", "ivchart");
- mmsg<<1;
- }
- ivchart_impl::~ivchart_impl()
- {
- requestInterruption();
- int i;
- for(i=0;i<100;i++)
- {
- if(isFinished())
- break;
- msleep(1);
- }
- }
- void ivchart_impl::chartvalue(std::string varname, const double fvalue, const double fvalue_RangeMin, const double fvalue_RangeMax)
- {
- iv::ivchart::ivchartunit xivchartunit;
- xivchartunit.set_strvarname(varname);
- xivchartunit.set_timex(QDateTime::currentMSecsSinceEpoch());
- xivchartunit.set_fvalue(fvalue);
- xivchartunit.set_fvalue_rangemin(fvalue_RangeMin);
- xivchartunit.set_fvalue_rangemax(fvalue_RangeMax);
- if(mvectorchart.xivchartunit_size() > 10000)
- {
- qDebug("ivchart_impl::chartvalue ivchartunit is big value is %d ",mvectorchart.xivchartunit_size());
- return;
- }
- mMutexVector.lock();
- iv::ivchart::ivchartunit * p = mvectorchart.add_xivchartunit();
- p->CopyFrom(xivchartunit);
- mMutexVector.unlock();
- }
- int ivchart_impl::writechart(iv::ivchart::ivchartarray *pxvectorchart)
- {
- char * str;
- int ndatasize = pxvectorchart->ByteSize();
- str = new char[ndatasize];
- std::shared_ptr<char> pstr;
- pstr.reset(str);
- if(!pxvectorchart->SerializeToArray(str,ndatasize))
- {
- qDebug("ivchart_impl::writechart SerializeToArray error.");
- return -1;
- }
- QByteArray ba;
- ba.append(str,ndatasize);
- QList<QVariant> x;
- x<<ba;
- mmsg.setArguments(x);
- QDBusConnection::sessionBus().send(mmsg);
- return 0;
- }
- void ivchart_impl::run()
- {
- iv::ivchart::ivchartarray xvectorchart;
- while(!QThread::isInterruptionRequested())
- {
- mWaitMutex.lock();
- mwc.wait(&mWaitMutex,50);
- mWaitMutex.unlock();
- mMutexVector.lock();
- xvectorchart.Clear();
- xvectorchart.CopyFrom(mvectorchart);
- mvectorchart.Clear();
- mMutexVector.unlock();
- if(xvectorchart.xivchartunit_size()>0)
- {
- writechart(&xvectorchart);
- }
- }
- }
- }
|