From b52e394fa11ff5d6bc8a541901196dcb314fb154 Mon Sep 17 00:00:00 2001 From: gc87 Date: Thu, 6 Apr 2023 18:39:34 +0800 Subject: [PATCH] fix: determined f32 type data is treated as d64 --- src/adapter/driver/driver.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/adapter/driver/driver.c b/src/adapter/driver/driver.c index c5a3224c..201a5813 100644 --- a/src/adapter/driver/driver.c +++ b/src/adapter/driver/driver.c @@ -299,6 +299,8 @@ void neu_adapter_driver_write_tag(neu_adapter_driver_t *driver, (double) (cmd->value.value.d64 / tag->decimal); } else if (cmd->value.type == NEU_TYPE_DOUBLE) { cmd->value.value.d64 = cmd->value.value.d64 / tag->decimal; + } else if (cmd->value.type == NEU_TYPE_FLOAT) { + cmd->value.value.f32 = cmd->value.value.f32 / tag->decimal; } break; default: @@ -357,8 +359,11 @@ void neu_adapter_driver_write_tag(neu_adapter_driver_t *driver, } break; case NEU_TYPE_FLOAT: - cmd->value.type = NEU_TYPE_FLOAT; - cmd->value.value.f32 = (float) cmd->value.value.d64; + if (NEU_TYPE_FLOAT != cmd->value.type) { + cmd->value.value.f32 = (float) cmd->value.value.d64; + cmd->value.type = NEU_TYPE_FLOAT; + } + switch (tag->option.value32.endian) { case NEU_DATATAG_ENDIAN_LB32: neu_ntohs_p((uint16_t *) cmd->value.value.bytes);