From 79cbde6b4a00bdc3966977c26dbc3c529ad0dfd6 Mon Sep 17 00:00:00 2001 From: Eric Neuber Date: Mon, 16 Feb 2026 22:55:52 +0100 Subject: [PATCH] =?UTF-8?q?Nachkommastellen=20einschr=C3=A4nken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modbus.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modbus.rs b/src/modbus.rs index 15fb8df..c008410 100644 --- a/src/modbus.rs +++ b/src/modbus.rs @@ -46,14 +46,14 @@ pub fn start_modbus_polling_thread( match typ { "INT16" => client.read_input_registers(addr, 1).await.ok().map(|v| { let raw = v[0] as i16; - if raw == -32768 || raw == 32767 { None } else { Some(raw as f64 * factor) } + if raw == -32768 || raw == 32767 { None } else { Some(((raw as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), "UINT16" => client.read_input_registers(addr, 1).await.ok().map(|v| { - if v[0] == 0xFFFF { None } else { Some(v[0] as f64 * factor) } + if v[0] == 0xFFFF { None } else { Some(((v[0] as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), "UINT32" => client.read_input_registers(addr, 2).await.ok().map(|v| { let raw = (v[0] as u32) << 16 | (v[1] as u32); - if raw == 0xFFFFFFFF { None } else { Some(raw as f64 * factor) } + if raw == 0xFFFFFFFF { None } else { Some(((raw as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), _ => Some(0.0), } @@ -75,14 +75,14 @@ pub fn start_modbus_polling_thread( match typ { "INT16" => client.read_holding_registers(addr, 1).await.ok().map(|v| { let raw = v[0] as i16; - if raw == -32768 || raw == 32767 { None } else { Some(raw as f64 * factor) } + if raw == -32768 || raw == 32767 { None } else { Some(((raw as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), "UINT16" => client.read_holding_registers(addr, 1).await.ok().map(|v| { - if v[0] == 0xFFFF { None } else { Some(v[0] as f64 * factor) } + if v[0] == 0xFFFF { None } else { Some(((v[0] as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), "UINT32" => client.read_holding_registers(addr, 2).await.ok().map(|v| { let raw = (v[0] as u32) << 16 | (v[1] as u32); - if raw == 0xFFFFFFFF { None } else { Some(raw as f64 * factor) } + if raw == 0xFFFFFFFF { None } else { Some(((raw as f64 * factor) * 10.0).round() / 10.0) } }).flatten(), _ => Some(0.0), }