From c81d96bca842e69bcc329fa9a9a2565c953b79bd Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Fri, 4 Oct 2019 13:18:21 +0200 Subject: [PATCH] other way to read tare values --- mini-beieli-node.ino | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/mini-beieli-node.ino b/mini-beieli-node.ino index 4d7be42..fcb1b4c 100644 --- a/mini-beieli-node.ino +++ b/mini-beieli-node.ino @@ -889,14 +889,8 @@ static void warmupDoneCb(osjob_t* pJob) static void receiveMessage(void *pContext, uint8_t port, const uint8_t *pMessage, size_t nMessage) { - union { - byte buf[9]; - struct { - byte dummy; - uint32_t gram_A; - uint32_t gram_B; - } value; - } bytearray; + uint32_t gram_A; + uint32_t gram_B; if (config_data.debug_level > 0) { gCatena.SafePrintf("receiveMessage was called!!!\n"); @@ -957,13 +951,24 @@ static void receiveMessage(void *pContext, uint8_t port, const uint8_t *pMessage if (port == 1 && nMessage == 9) { if (pMessage[0] == 1) { - memcpy(bytearray.buf, pMessage, 9); + gram_A = 0; + gram_A += (long)pMessage[1] << 24; + gram_A += (long)pMessage[2] << 16; + gram_A += (long)pMessage[3] << 8; + gram_A += (long)pMessage[4]; + + gram_B = 0; + gram_B += (long)pMessage[5] << 24; + gram_B += (long)pMessage[6] << 16; + gram_B += (long)pMessage[7] << 8; + gram_B += (long)pMessage[8]; + if (config_data.debug_level > 0) { - gCatena.SafePrintf("tare scales, A: %d, B: %d\n", bytearray.value.gram_A, bytearray.value.gram_B); + gCatena.SafePrintf("tare scales, A: %d, B: %d\n", gram_A, gram_B); } ReadSensors(false, true); - config_data.cal_w1_factor = (((float)last_sensor_reading.weight1 - config_data.cal_w1_0) / bytearray.value.gram_A); - config_data.cal_w2_factor = (((float)last_sensor_reading.weight2 - config_data.cal_w2_0) / bytearray.value.gram_B); + config_data.cal_w1_factor = (((float)last_sensor_reading.weight1 - config_data.cal_w1_0) / gram_A); + config_data.cal_w2_factor = (((float)last_sensor_reading.weight2 - config_data.cal_w2_0) / gram_B); gCatena.getFram()->saveField(cFramStorage::kBme680Cal, (const uint8_t *)&config_data, sizeof(config_data)); } }