BLOCK_STATUS *ModBusTCP::ReportSlaveID(quint8 slave) { uint8_t dest[10]; int rc; BLOCK_STATUS *st = new BLOCK_STATUS; modbus_set_slave(ctx, slave); rc = modbus_report_slave_id(ctx, dest); qDebug() << "RC: " << rc; if (rc != -1) { st -> rstatus = true; if (dest[0]) st -> status = true; else st -> status = false; st -> SoftVersion = dest[1]; st -> HardVersion = dest[2]; } else { st -> rstatus = false; } return st; }
static int ctx_report_slave_id(lua_State *L) { ctx_t *ctx = ctx_check(L, 1); uint8_t *buf = malloc(ctx->max_len); assert(buf); #if LIBMODBUS_VERSION_CHECK(3,1,0) int rc = modbus_report_slave_id(ctx->modbus, ctx->max_len, buf); #else int rc = modbus_report_slave_id(ctx->modbus, buf); #endif if (rc < 0) { return libmodbus_rc_to_nil_error(L, rc, 0); } lua_pushlstring(L, (char *)buf, rc); return 1; }
int report_slave_ID(){ uint8_t slaveresponse_bytes[MODBUS_MAX_PDU_LENGTH]; int rc; rc = modbus_report_slave_id(ctx, MODBUS_MAX_PDU_LENGTH, slaveresponse_bytes); if (rc > 1) { printf("Run Status Indicator: %s\n", slaveresponse_bytes[1] ? "ON" : "OFF"); } return 1; }