Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 型铸造操作_Arduino_Type Conversion_Modbus_Nodemcu - Fatal编程技术网

Arduino 型铸造操作

Arduino 型铸造操作,arduino,type-conversion,modbus,nodemcu,Arduino,Type Conversion,Modbus,Nodemcu,我正在使用NodeMCU和电能表。电能表是Modbus RTU设备,以32位显示参数。使用下面的代码,我可以从从属设备读取数据,但需要将cast from键入32位浮点和显示的方法 当我在ModScan软件中将值更改为无符号十进制时,值会正确显示。但我需要以32位浮点显示值 #包括 #包括 浮动数据[100]; ModbusMaster232节点(1); //定义一个用于读取的地址 #定义地址1 //定义要读取的位数 #定义比特数量70 无效设置() { Serial.begin(9600);

我正在使用NodeMCU和电能表。电能表是Modbus RTU设备,以32位显示参数。使用下面的代码,我可以从从属设备读取数据,但需要将cast from键入32位浮点和显示的方法

当我在ModScan软件中将值更改为无符号十进制时,值会正确显示。但我需要以32位浮点显示值

#包括
#包括
浮动数据[100];
ModbusMaster232节点(1);
//定义一个用于读取的地址
#定义地址1
//定义要读取的位数
#定义比特数量70
无效设置()
{
Serial.begin(9600);
//初始化Modbus通信波特率
node.begin(9600);
}
void循环()
{
int result=node.readHoldingRegisters(地址,位数量);
数据[0]=(浮点)节点。getResponseBuffer(0);
数据[1]=(浮点)节点。getResponseBuffer(1);
数据[2]=(浮点)节点。getResponseBuffer(2);
数据[3]=(浮点)节点。getResponseBuffer(3);
数据[4]=(浮点)节点。getResponseBuffer(4);
数据[5]=(浮点)节点。getResponseBuffer(5);
对于(int i=0;i<100;i++)
{
//数据[i]=node.getResponseBuffer(i);
Serial.println(数据[i]);
}
序列号。打印号(“…………”);
}
我想用类型转换显示Modbus中显示的读数

salve的实际Modbus设备输出:

从电能表读取数据时的Arduino输出:


您正在将一个16位字转换为浮点。查看从属文件,了解它们如何将32位浮点映射到两个Modbus寄存器中。基本上,您需要知道最不重要的字在哪里(第一个或第二个寄存器),将它们加载到内存中(必要时移位)并转换为浮点。

我正在寻找并尝试解决完全相同的问题(结果相同)。这可能有助于:

function read() {

client.readHoldingRegisters(0000, 12)
    .then(function(d) {
        var floatA = d.buffer.readFloatBE(0); 
    console.log("Total kWh: ", floatA); })
    .catch(function(e) {
        console.log(e.message); })
    .then(close);
}
这是NodeJS和javascript版本,可以工作,而Arduino不能。完整的例子可以在这里找到,它对覆盆子Pi工作