Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
Diff: src/ModbusMaster/ModbusMaster.cpp
- Revision:
- 162:5e8948b8044d
- Parent:
- 151:9d47fe5ba805
- Child:
- 169:c503848823aa
- Child:
- 173:acfb464a4aec
--- a/src/ModbusMaster/ModbusMaster.cpp Fri Sep 30 14:32:26 2016 +0000
+++ b/src/ModbusMaster/ModbusMaster.cpp Fri Sep 30 20:10:50 2016 +0000
@@ -53,7 +53,7 @@
}
parse( json_value, ModbusMasterScratchBuf );
-
+
std::string id = json_value["id"].get<std::string>().c_str();
VirtualCommandMap[id].constant = atof(json_value["constant"].get<std::string>().c_str());
VirtualCommandMap[id].opl = json_value["opl"].get<std::string>().c_str();
@@ -107,7 +107,7 @@
}
}
}
-
+
osSignalSet(mainThreadId, sig_output_continue);
// read modbus registers that have been configured.
@@ -211,7 +211,30 @@
);
break;
case '*':
+ ModbusRegisterMap[iter->first].float_value =
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value *
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value;
+ logInfo("Setting tag=%s, equal to (%2.2f*%2.2f) = %2.2f", iter->first.c_str(),
+ VirtualCommandMap[iter->second.vcmd].opl.c_str(),
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value,
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value,
+ ModbusRegisterMap[iter->first].float_value
+ );
case '/':
+ if( ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value != 0 ) {
+ ModbusRegisterMap[iter->first].float_value =
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value /
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value;
+ logInfo("Setting tag=%s, equal to (%2.2f/%2.2f) = %2.2f", iter->first.c_str(),
+ VirtualCommandMap[iter->second.vcmd].opl.c_str(),
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value,
+ ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value,
+ ModbusRegisterMap[iter->first].float_value
+ );
+ } else {
+ logInfo("NOT DOING DIVIDE BY ZERO");
+ }
+ break;
case '+':
case '-':
default:
