C++ (Qt)class B : public QObject{ Q_OBJECTpublic: void readFromNode(int nodeAddress, int startDataAddress, int quantityData); void writeToNode(int nodeAddress, int startDataAddress, int quantityData , QByteArray &data); void pollingNodes();}; class ThreadRead : public QThread{ Q_OBJECTpublic: ThreadRead( B *cb, int nodeAddress, int startDataAddress, int quantityData ) : m_cb( cb ), m_nodeAddress( nodeAddress ), m_startDataAddress( startDataAddress ), m_quantityData( quantityData ) { } protected: void run() { m_cb->readFromNode( nodeAddress, startDataAddress, quantityData ); } private: B *m_cb; int m_nodeAddress; int m_startDataAddress; int m_quantityData} void A::m_readData( int nodeAddress, int startDataAddress, int quantityData, ... ){ ThreadRead *th = new ThreadRead( cb, nodeAddress, startDataAddress, quantityData ); th->start();}
C++ (Qt)void func(){ Data data1; Data data2; m_A->readData( 1, 15, 47, data1 ); m_A->readData( 2, 12, 44, data2 ); if( data1 != data2 ) выводим сообщение}
A::m_A->readData(111,12,1, manual=true, &adata) { /* если флаг=true - то значит нужно принудительно прочитать данный узел (не знаю для чего - но может понадобится)запускаем поток и забываем про него - т.к. он сам обновит нам структуры данных от узлов*/if (manual) запускаем поток ThreadRead;/*просто читаем структуру данных*/ data = readReadyData (111,12,1);}