void CANUi::on_pushButton_getNodeState_clicked() { UNS8 id = ui->spinBox_NMTnodeID->value(); masterRequestNodeState(&master_Data, id); NMTThread *workerThread = new NMTThread;//new polling thread connect(workerThread, &NMTThread::resultReady, ui->nowNodeState, &QLineEdit::setText); connect(workerThread, &NMTThread::finished, workerThread, &QObject::deleteLater); workerThread->doPollingState(id, 1000);//start thread }
UNS8 GetChangeStateResults(UNS8 node_id, UNS8 expected_state, unsigned long timeout_ms) { unsigned long start_time = 0; // reset nodes state win32test_Data.NMTable[node_id] = Unknown_state; // request node state masterRequestNodeState(&win32test_Data, node_id); start_time = uptime_ms_proc(); while(uptime_ms_proc() - start_time < timeout_ms) { if (getNodeState(&win32test_Data, node_id) == expected_state) return 0; sleep_proc(1); } return 0xFF; }