diff --git a/README.devices b/README.devices index 3591fe9c..136db62c 100644 --- a/README.devices +++ b/README.devices @@ -10,7 +10,7 @@ Firmware -------- Some devices supported by libsigrok need a firmware to be uploaded every time -the device is connected to the PC (usually via USB), before it can be used. +the device is connected to the PC (usually via USB), before it can be used. The default location where libsigrok expects the firmware files is: @@ -288,10 +288,16 @@ a short list for convenience: interface panel on top. - Digitek DT4000ZC: Briefly press the "RS232" button. - Gossen Metrawatt Metrahit 1x/2x devices, driver gmc-mh-1x-2x-rs232: - Power on the device with the "DATA" button pressed. Additionally Metrahit - 2x devices must be configured for the respective interface type. + - Power on the device with the "DATA" button pressed. + - Metrahit 2x devices must be configured for the respective interface type. - Gossen Metrawatt Metrahit 2x devices, driver gmc-mh-2x-bd232: - The device must be configured for the respective interface type. + - 'BD232' interface: + The multimeter must be configured for the respective interface type. + - 'SI232-II' interface ("PC Mode"): + The multimeter must be configured for interface type 'BD232' (all), + 'SI232 online' (28-29S) or 'SI232 store' (22-26x). The interface must + be configured to the same baud rate as the host (default 9600). + Multimeter and interface must be configured to the same address. - Norma DM950: If the interface doesn't work (e.g. USB-RS232 converter), power on the device with "FUNC" pressed (to power the interface from the DMM). - PCE PCE-DM32: Briefly press the "RS232" button. diff --git a/hardware/gmc-mh-1x-2x/api.c b/hardware/gmc-mh-1x-2x/api.c index 4084bf65..8c413e60 100644 --- a/hardware/gmc-mh-1x-2x/api.c +++ b/hardware/gmc-mh-1x-2x/api.c @@ -436,13 +436,13 @@ static int config_get(int key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_probe_group *probe_group) { int ret; + struct dev_context *devc; (void)sdi; (void)data; (void)probe_group; ret = SR_OK; - struct dev_context *devc; (void)probe_group; @@ -621,7 +621,7 @@ SR_PRIV struct sr_dev_driver gmc_mh_1x_2x_rs232_driver_info = { SR_PRIV struct sr_dev_driver gmc_mh_2x_bd232_driver_info = { .name = "gmc-mh-2x-bd232", - .longname = "Gossen Metrawatt Metrahit 2x, 'BD232' interface", + .longname = "Gossen Metrawatt Metrahit 2x, 'BD232'/'SI232-II' interface", .api_version = 1, .init = init_2x_bd232, .cleanup = cleanup_2x_bd232, diff --git a/hardware/gmc-mh-1x-2x/protocol.c b/hardware/gmc-mh-1x-2x/protocol.c index b0163dbd..ceb138e9 100644 --- a/hardware/gmc-mh-1x-2x/protocol.c +++ b/hardware/gmc-mh-1x-2x/protocol.c @@ -1320,11 +1320,15 @@ int req_stat14(const struct sr_dev_inst *sdi, gboolean power_on) if (power_on) { sr_info("Write some data and wait 3s to turn on powered off device..."); - if ((serial_write(serial, msg, sizeof(msg)) == -1) || - (serial_write(serial, msg, sizeof(msg)) == -1) || - (serial_write(serial, msg, sizeof(msg)) == -1)) + if (serial_write(serial, msg, sizeof(msg)) < 0) return SR_ERR; - g_usleep(3*1000*1000); + g_usleep(1*1000*1000); + if (serial_write(serial, msg, sizeof(msg)) < 0) + return SR_ERR; + g_usleep(1*1000*1000); + if (serial_write(serial, msg, sizeof(msg)) < 0) + return SR_ERR; + g_usleep(1*1000*1000); serial_flush(serial); }