Add initial support for the UNI-T UT60G.

This commit is contained in:
Uwe Hermann 2014-01-03 22:32:16 +01:00
parent 1267f128ac
commit 4104ef810e
8 changed files with 40 additions and 1 deletions

View File

@ -295,6 +295,7 @@ a short list for convenience:
- PCE PCE-DM32: Briefly press the "RS232" button. - PCE PCE-DM32: Briefly press the "RS232" button.
- RadioShack 22-812: Press and hold "SELECT" and "RANGE" together. - RadioShack 22-812: Press and hold "SELECT" and "RANGE" together.
- TekPower TP4000ZC: Briefly press the "RS232" button. - TekPower TP4000ZC: Briefly press the "RS232" button.
- UNI-T UT60G: Briefly press the "RS232C" button.
- UNI-T UT61B/C/D: Press the "REL/RS232/USB" button for roughly 1 second. - UNI-T UT61B/C/D: Press the "REL/RS232/USB" button for roughly 1 second.
- UNI-T UT325: Briefly press the "SEND" button (as per manual). However, it - UNI-T UT325: Briefly press the "SEND" button (as per manual). However, it
appears that in practice you don't have to press the button (at least on appears that in practice you don't have to press the button (at least on

View File

@ -64,6 +64,7 @@ SR_PRIV struct sr_dev_driver voltcraft_vc830_ser_driver_info;
SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info; SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60g_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61b_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61b_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61c_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61c_ser_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info;
@ -243,6 +244,14 @@ SR_PRIV struct dmm_info dmms[] = {
&uni_t_ut60e_ser_driver_info, &uni_t_ut60e_ser_driver_info,
receive_data_UNI_T_UT60E_SER, receive_data_UNI_T_UT60E_SER,
}, },
{
/* Note: ES51986 baudrate is actually 19230! */
"UNI-T", "UT60G (UT-D02 cable)", "19200/7o1/rts=0/dtr=1",
19200, ES519XX_11B_PACKET_SIZE, NULL,
sr_es519xx_19200_11b_packet_valid, sr_es519xx_19200_11b_parse,
NULL,
&uni_t_ut60g_ser_driver_info, receive_data_UNI_T_UT60G_SER,
},
{ {
"UNI-T", "UT61B (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", "UNI-T", "UT61B (UT-D02 cable)", "2400/8n1/rts=0/dtr=1",
2400, FS9922_PACKET_SIZE, NULL, 2400, FS9922_PACKET_SIZE, NULL,
@ -576,6 +585,7 @@ DRV(voltcraft_vc830_ser, VOLTCRAFT_VC830_SER, "voltcraft-vc830-ser", "Voltcraft
DRV(voltcraft_vc840_ser, VOLTCRAFT_VC840_SER, "voltcraft-vc840-ser", "Voltcraft VC-840 (UT-D02 cable)") DRV(voltcraft_vc840_ser, VOLTCRAFT_VC840_SER, "voltcraft-vc840-ser", "Voltcraft VC-840 (UT-D02 cable)")
DRV(uni_t_ut60a_ser, UNI_T_UT60A_SER, "uni-t-ut60a-ser", "UNI-T UT60A (UT-D02 cable)") DRV(uni_t_ut60a_ser, UNI_T_UT60A_SER, "uni-t-ut60a-ser", "UNI-T UT60A (UT-D02 cable)")
DRV(uni_t_ut60e_ser, UNI_T_UT60E_SER, "uni-t-ut60e-ser", "UNI-T UT60E (UT-D02 cable)") DRV(uni_t_ut60e_ser, UNI_T_UT60E_SER, "uni-t-ut60e-ser", "UNI-T UT60E (UT-D02 cable)")
DRV(uni_t_ut60g_ser, UNI_T_UT60G_SER, "uni-t-ut60g-ser", "UNI-T UT60G (UT-D02 cable)")
DRV(uni_t_ut61b_ser, UNI_T_UT61B_SER, "uni-t-ut61b-ser", "UNI-T UT61B (UT-D02 cable)") DRV(uni_t_ut61b_ser, UNI_T_UT61B_SER, "uni-t-ut61b-ser", "UNI-T UT61B (UT-D02 cable)")
DRV(uni_t_ut61c_ser, UNI_T_UT61C_SER, "uni-t-ut61c-ser", "UNI-T UT61C (UT-D02 cable)") DRV(uni_t_ut61c_ser, UNI_T_UT61C_SER, "uni-t-ut61c-ser", "UNI-T UT61C (UT-D02 cable)")
DRV(uni_t_ut61d_ser, UNI_T_UT61D_SER, "uni-t-ut61d-ser", "UNI-T UT61D (UT-D02 cable)") DRV(uni_t_ut61d_ser, UNI_T_UT61D_SER, "uni-t-ut61d-ser", "UNI-T UT61D (UT-D02 cable)")

View File

@ -183,6 +183,7 @@ RECEIVE_DATA(VOLTCRAFT_VC830_SER, fs9922)
RECEIVE_DATA(VOLTCRAFT_VC840_SER, fs9721) RECEIVE_DATA(VOLTCRAFT_VC840_SER, fs9721)
RECEIVE_DATA(UNI_T_UT60A_SER, fs9721) RECEIVE_DATA(UNI_T_UT60A_SER, fs9721)
RECEIVE_DATA(UNI_T_UT60E_SER, fs9721) RECEIVE_DATA(UNI_T_UT60E_SER, fs9721)
RECEIVE_DATA(UNI_T_UT60G_SER, es519xx)
RECEIVE_DATA(UNI_T_UT61B_SER, fs9922) RECEIVE_DATA(UNI_T_UT61B_SER, fs9922)
RECEIVE_DATA(UNI_T_UT61C_SER, fs9922) RECEIVE_DATA(UNI_T_UT61C_SER, fs9922)
RECEIVE_DATA(UNI_T_UT61D_SER, fs9922) RECEIVE_DATA(UNI_T_UT61D_SER, fs9922)

View File

@ -47,6 +47,7 @@ enum {
VOLTCRAFT_VC840_SER, VOLTCRAFT_VC840_SER,
UNI_T_UT60A_SER, UNI_T_UT60A_SER,
UNI_T_UT60E_SER, UNI_T_UT60E_SER,
UNI_T_UT60G_SER,
UNI_T_UT61B_SER, UNI_T_UT61B_SER,
UNI_T_UT61C_SER, UNI_T_UT61C_SER,
UNI_T_UT61D_SER, UNI_T_UT61D_SER,
@ -54,7 +55,7 @@ enum {
ISO_TECH_IDM103N, ISO_TECH_IDM103N,
}; };
#define DMM_COUNT 28 #define DMM_COUNT 29
struct dmm_info { struct dmm_info {
/** Manufacturer/brand. */ /** Manufacturer/brand. */
@ -130,6 +131,7 @@ SR_PRIV int receive_data_VOLTCRAFT_VC830_SER(int fd, int revents, void *cb_data)
SR_PRIV int receive_data_VOLTCRAFT_VC840_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_VOLTCRAFT_VC840_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60A_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT60A_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60E_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT60E_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60G_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61B_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61B_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61C_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61C_SER(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61D_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61D_SER(int fd, int revents, void *cb_data);

View File

@ -40,6 +40,7 @@ static const int32_t hwcaps[] = {
SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info; SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut60g_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61b_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61b_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61c_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61c_driver_info;
SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info;
@ -71,6 +72,22 @@ SR_PRIV struct dmm_info udmms[] = {
sr_fs9721_00_temp_c, sr_fs9721_00_temp_c,
&uni_t_ut60e_driver_info, receive_data_UNI_T_UT60E, &uni_t_ut60e_driver_info, receive_data_UNI_T_UT60E,
}, },
{
/*
* Important: The actual baudrate of the Cyrustek ES51986 chip
* used in this DMM is 19230. However, the WCH CH9325 chip
* (UART to USB/HID) used in (some versions of) the UNI-T
* UT-D04 cable doesn't support 19230 baud. It only supports
* 19200, and setting an unsupported baudrate will result in
* the default of 2400 being used (which will not work with
* this DMM, of course).
*/
"UNI-T", "UT60G", 19200,
ES519XX_11B_PACKET_SIZE,
sr_es519xx_19200_11b_packet_valid, sr_es519xx_19200_11b_parse,
NULL,
&uni_t_ut60g_driver_info, receive_data_UNI_T_UT60G,
},
{ {
"UNI-T", "UT61B", 2400, "UNI-T", "UT61B", 2400,
FS9922_PACKET_SIZE, FS9922_PACKET_SIZE,
@ -399,6 +416,7 @@ SR_PRIV struct sr_dev_driver ID##_driver_info = { \
DRV(tecpel_dmm_8061, TECPEL_DMM_8061, "tecpel-dmm-8061", "Tecpel DMM-8061") DRV(tecpel_dmm_8061, TECPEL_DMM_8061, "tecpel-dmm-8061", "Tecpel DMM-8061")
DRV(uni_t_ut60a, UNI_T_UT60A, "uni-t-ut60a", "UNI-T UT60A") DRV(uni_t_ut60a, UNI_T_UT60A, "uni-t-ut60a", "UNI-T UT60A")
DRV(uni_t_ut60e, UNI_T_UT60E, "uni-t-ut60e", "UNI-T UT60E") DRV(uni_t_ut60e, UNI_T_UT60E, "uni-t-ut60e", "UNI-T UT60E")
DRV(uni_t_ut60g, UNI_T_UT60G, "uni-t-ut60g", "UNI-T UT60G")
DRV(uni_t_ut61b, UNI_T_UT61B, "uni-t-ut61b", "UNI-T UT61B") DRV(uni_t_ut61b, UNI_T_UT61B, "uni-t-ut61b", "UNI-T UT61B")
DRV(uni_t_ut61c, UNI_T_UT61C, "uni-t-ut61c", "UNI-T UT61C") DRV(uni_t_ut61c, UNI_T_UT61C, "uni-t-ut61c", "UNI-T UT61C")
DRV(uni_t_ut61d, UNI_T_UT61D, "uni-t-ut61d", "UNI-T UT61D") DRV(uni_t_ut61d, UNI_T_UT61D, "uni-t-ut61d", "UNI-T UT61D")

View File

@ -303,6 +303,7 @@ SR_PRIV int receive_data_##ID_UPPER(int fd, int revents, void *cb_data) { \
RECEIVE_DATA(TECPEL_DMM_8061, fs9721) RECEIVE_DATA(TECPEL_DMM_8061, fs9721)
RECEIVE_DATA(UNI_T_UT60A, fs9721) RECEIVE_DATA(UNI_T_UT60A, fs9721)
RECEIVE_DATA(UNI_T_UT60E, fs9721) RECEIVE_DATA(UNI_T_UT60E, fs9721)
RECEIVE_DATA(UNI_T_UT60G, es519xx)
RECEIVE_DATA(UNI_T_UT61B, fs9922) RECEIVE_DATA(UNI_T_UT61B, fs9922)
RECEIVE_DATA(UNI_T_UT61C, fs9922) RECEIVE_DATA(UNI_T_UT61C, fs9922)
RECEIVE_DATA(UNI_T_UT61D, fs9922) RECEIVE_DATA(UNI_T_UT61D, fs9922)

View File

@ -33,6 +33,7 @@ enum {
TECPEL_DMM_8061, TECPEL_DMM_8061,
UNI_T_UT60A, UNI_T_UT60A,
UNI_T_UT60E, UNI_T_UT60E,
UNI_T_UT60G,
UNI_T_UT61B, UNI_T_UT61B,
UNI_T_UT61C, UNI_T_UT61C,
UNI_T_UT61D, UNI_T_UT61D,
@ -86,6 +87,7 @@ struct dev_context {
SR_PRIV int receive_data_TECPEL_DMM_8061(int fd, int revents, void *cb_data); SR_PRIV int receive_data_TECPEL_DMM_8061(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60A(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT60A(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60E(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT60E(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT60G(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61B(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61B(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61C(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61C(int fd, int revents, void *cb_data);
SR_PRIV int receive_data_UNI_T_UT61D(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61D(int fd, int revents, void *cb_data);

View File

@ -220,6 +220,7 @@ extern SR_PRIV struct sr_dev_driver voltcraft_vc830_ser_driver_info;
extern SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info; extern SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60g_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61b_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61b_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61c_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61c_ser_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info;
@ -230,6 +231,7 @@ extern SR_PRIV struct sr_dev_driver iso_tech_idm103n_driver_info;
extern SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info; extern SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut60g_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61b_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61b_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61c_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61c_driver_info;
extern SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info;
@ -358,6 +360,7 @@ static struct sr_dev_driver *drivers_list[] = {
&voltcraft_vc840_ser_driver_info, &voltcraft_vc840_ser_driver_info,
&uni_t_ut60a_ser_driver_info, &uni_t_ut60a_ser_driver_info,
&uni_t_ut60e_ser_driver_info, &uni_t_ut60e_ser_driver_info,
&uni_t_ut60g_ser_driver_info,
&uni_t_ut61b_ser_driver_info, &uni_t_ut61b_ser_driver_info,
&uni_t_ut61c_ser_driver_info, &uni_t_ut61c_ser_driver_info,
&uni_t_ut61d_ser_driver_info, &uni_t_ut61d_ser_driver_info,
@ -368,6 +371,7 @@ static struct sr_dev_driver *drivers_list[] = {
&tecpel_dmm_8061_driver_info, &tecpel_dmm_8061_driver_info,
&uni_t_ut60a_driver_info, &uni_t_ut60a_driver_info,
&uni_t_ut60e_driver_info, &uni_t_ut60e_driver_info,
&uni_t_ut60g_driver_info,
&uni_t_ut61b_driver_info, &uni_t_ut61b_driver_info,
&uni_t_ut61c_driver_info, &uni_t_ut61c_driver_info,
&uni_t_ut61d_driver_info, &uni_t_ut61d_driver_info,