Browse Source

Add message delay

Neal Wilson 7 years ago
parent
commit
375b77a00d
2 changed files with 7 additions and 3 deletions
  1. 5
    2
      src/modbus.w
  2. 2
    1
      src/typica.w

+ 5
- 2
src/modbus.w View File

378
         QTimer *messageDelayTimer;
378
         QTimer *messageDelayTimer;
379
         QTimer *commTimeout;
379
         QTimer *commTimeout;
380
         int scanPosition;
380
         int scanPosition;
381
+        bool waiting;
381
         QByteArray responseBuffer;
382
         QByteArray responseBuffer;
382
         QList<Channel*> channels;
383
         QList<Channel*> channels;
383
         QList<ModbusScanItem> scanList;
384
         QList<ModbusScanItem> scanList;
393
 @<ModbusNG implementation@>=
394
 @<ModbusNG implementation@>=
394
 ModbusNG::ModbusNG(DeviceTreeModel *model, const QModelIndex &index) :
395
 ModbusNG::ModbusNG(DeviceTreeModel *model, const QModelIndex &index) :
395
     QObject(NULL), messageDelayTimer(new QTimer), commTimeout(new QTimer),
396
     QObject(NULL), messageDelayTimer(new QTimer), commTimeout(new QTimer),
396
-    scanPosition(0)
397
+    scanPosition(0), waiting(false)
397
 {
398
 {
398
     QDomElement portReferenceElement =
399
     QDomElement portReferenceElement =
399
         model->referenceElement(model->data(index, Qt::UserRole).toString());
400
         model->referenceElement(model->data(index, Qt::UserRole).toString());
495
 
496
 
496
 void ModbusNG::sendNextMessage()
497
 void ModbusNG::sendNextMessage()
497
 {
498
 {
498
-    if(scanList.length() > 0)
499
+    if(scanList.length() > 0 && !waiting)
499
     {
500
     {
500
         port->write(scanList.at(scanPosition).request);
501
         port->write(scanList.at(scanPosition).request);
501
         commTimeout->start(2000);
502
         commTimeout->start(2000);
502
         messageDelayTimer->start(delayTime);
503
         messageDelayTimer->start(delayTime);
504
+        waiting = true;
503
     }
505
     }
504
 }
506
 }
505
 
507
 
579
         }
581
         }
580
     }
582
     }
581
     responseBuffer.clear();
583
     responseBuffer.clear();
584
+    waiting = false;
582
     messageDelayTimer->start(delayTime);
585
     messageDelayTimer->start(delayTime);
583
 }
586
 }
584
 
587
 

+ 2
- 1
src/typica.w View File

18283
     Channel *pv = new Channel;
18283
     Channel *pv = new Channel;
18284
     channels.append(pv);
18284
     channels.append(pv);
18285
     pvStub.append(station);
18285
     pvStub.append(station);
18286
-    pvStub.append((char)0x04);
18286
+    pvStub.append((char)0x03);
18287
     pvaddress = (quint16)attributes.value("pVAddress").toInt();
18287
     pvaddress = (quint16)attributes.value("pVAddress").toInt();
18288
     char *pvac = (char*)&pvaddress;
18288
     char *pvac = (char*)&pvaddress;
18289
     pvStub.append(pvac[1]);
18289
     pvStub.append(pvac[1]);
18661
         char *check = (char*)&crc;
18661
         char *check = (char*)&crc;
18662
         message.append(check[0]);
18662
         message.append(check[0]);
18663
         message.append(check[1]);
18663
         message.append(check[1]);
18664
+        qDebug() << "Writing" << message.toHex();
18664
         port->write(message);
18665
         port->write(message);
18665
         commTimeout->start(2000);
18666
         commTimeout->start(2000);
18666
         messageDelayTimer->start(delayTime);
18667
         messageDelayTimer->start(delayTime);

Loading…
Cancel
Save