From 606356d6fd2e8e53a12ffee07607dfc6599abc31 Mon Sep 17 00:00:00 2001 From: Parker Liu Date: Sat, 11 Dec 2021 11:01:19 +0800 Subject: [PATCH] Fix issue of sometimes failed to read multiple points in the coil area * The functional tester "Read multiple points in the coil area" sometimes fail, because there is a mistake when writing bit to coil area register. I fix this mistake. --- simulator/modbus_tcp_server_sim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/simulator/modbus_tcp_server_sim.c b/simulator/modbus_tcp_server_sim.c index 76c63677..8a7a4bf5 100644 --- a/simulator/modbus_tcp_server_sim.c +++ b/simulator/modbus_tcp_server_sim.c @@ -216,7 +216,7 @@ int main() w_res->n_reg = w_req->n_reg; for (int i = 0; i < ntohs(w_req->n_reg); i++) { - uint8_t x = w_u8[ntohs(w_req->n_reg) / 8] << (7 - (i % 8)); + uint8_t x = (w_u8[ntohs(w_req->n_reg) / 8] >> (i % 8)) & 0x1; if (x > 0) { coil[ntohs(w_req->start_addr) + i] = 1; @@ -250,4 +250,4 @@ int main() neu_tcp_server_close(server); return 0; -} \ No newline at end of file +}