|  | @@ -393,6 +393,7 @@ class ModbusNG : public QObject
 | 
		
	
		
			
			| 393 | 393 |          QList<QString> channelLabels;
 | 
		
	
		
			
			| 394 | 394 |          QList<bool> hiddenStates;
 | 
		
	
		
			
			| 395 | 395 |          QList<QString> channelTypeList;
 | 
		
	
		
			
			|  | 396 | +        QVector<double> lastMeasurement;
 | 
		
	
		
			
			| 396 | 397 |  };
 | 
		
	
		
			
			| 397 | 398 |  
 | 
		
	
		
			
			| 398 | 399 |  @ One of the things that the old Modbus code got right was in allowing the
 | 
		
	
	
		
			
			|  | @@ -499,6 +500,7 @@ ModbusNG::ModbusNG(DeviceTreeModel *model, const QModelIndex &index) :
 | 
		
	
		
			
			| 499 | 500 |  	        channelTypeList.append("C");
 | 
		
	
		
			
			| 500 | 501 |          }
 | 
		
	
		
			
			| 501 | 502 |          scanList.append(scanItem);
 | 
		
	
		
			
			|  | 503 | +        lastMeasurement.append(0.0);
 | 
		
	
		
			
			| 502 | 504 |          channels.append(new Channel);
 | 
		
	
		
			
			| 503 | 505 |          channelNames.append(channelAttributes.value("column").toString());
 | 
		
	
		
			
			| 504 | 506 |          hiddenStates.append(
 | 
		
	
	
		
			
			|  | @@ -601,15 +603,28 @@ void ModbusNG::dataAvailable()
 | 
		
	
		
			
			| 601 | 603 |      if(scanPosition == 0)
 | 
		
	
		
			
			| 602 | 604 |      {
 | 
		
	
		
			
			| 603 | 605 |          QTime time = QTime::currentTime();
 | 
		
	
		
			
			|  | 606 | +        bool doOutput = false;
 | 
		
	
		
			
			| 604 | 607 |          for(int i = 0; i < scanList.size(); i++)
 | 
		
	
		
			
			| 605 | 608 |          {
 | 
		
	
		
			
			| 606 |  | -	        if(scanList.at(scanPosition).unit == Units::Unitless)
 | 
		
	
		
			
			|  | 609 | +	        if(scanList.at(i).lastValue != lastMeasurement.at(i))
 | 
		
	
		
			
			| 607 | 610 |  	        {
 | 
		
	
		
			
			| 608 |  | -		        channels.at(i)->input(Measurement(scanList.at(i).lastValue, time, Units::Unitless));
 | 
		
	
		
			
			|  | 611 | +		        doOutput = true;
 | 
		
	
		
			
			|  | 612 | +		        break;
 | 
		
	
		
			
			| 609 | 613 |  	        }
 | 
		
	
		
			
			| 610 |  | -	        else
 | 
		
	
		
			
			|  | 614 | +        }
 | 
		
	
		
			
			|  | 615 | +        if(doOutput)
 | 
		
	
		
			
			|  | 616 | +        {
 | 
		
	
		
			
			|  | 617 | +	        for(int i = 0; i < scanList.size(); i++)
 | 
		
	
		
			
			| 611 | 618 |  	        {
 | 
		
	
		
			
			| 612 |  | -	            channels.at(i)->input(Measurement(scanList.at(i).lastValue, time, Units::Fahrenheit));
 | 
		
	
		
			
			|  | 619 | +		        lastMeasurement[i] = scanList.at(i).lastValue;
 | 
		
	
		
			
			|  | 620 | +		        if(scanList.at(scanPosition).unit == Units::Unitless)
 | 
		
	
		
			
			|  | 621 | +		        {
 | 
		
	
		
			
			|  | 622 | +			        channels.at(i)->input(Measurement(scanList.at(i).lastValue, time, Units::Unitless));
 | 
		
	
		
			
			|  | 623 | +		        }
 | 
		
	
		
			
			|  | 624 | +		        else
 | 
		
	
		
			
			|  | 625 | +		        {
 | 
		
	
		
			
			|  | 626 | +		            channels.at(i)->input(Measurement(scanList.at(i).lastValue, time, Units::Fahrenheit));
 | 
		
	
		
			
			|  | 627 | +	            }
 | 
		
	
		
			
			| 613 | 628 |              }
 | 
		
	
		
			
			| 614 | 629 |          }
 | 
		
	
		
			
			| 615 | 630 |      }
 |