
import socket
import time
import re
def value_unit(value_unit):
len = value_unit.find("> -")
# print("len:",len)
pattern = r"\d+\.\d+" # 匹配小数的正则表达式
value = re.findall(pattern, value_unit)
# print("value:",value)
value = float(value[0])
if len > 0:
value = 0 - value
unit = value_unit[-3:]
# print("value:", value)
# print("value:",unit)
unit_list = ['kV', 'V' ,'V','mV', 'uV', 'nV' ]
unit_list_value = ['E+3', '', 'E+00', 'E-3', 'E-6', 'E-9']
old_unit = unit
unit = 'V'
for i in range(6):
# print(unit_list_value[i])
if old_unit == unit_list_value[i]:
unit = unit_list[i]
break
return value, unit
class DMM7510():
def __init__(self, host = "169.254.5.61", port = 5025, timeout_ms=3000):
name = "DMM7510"
print("AGSOCKET init: timeout_ms=", timeout_ms)
self.c = socket.socket()
self.c.settimeout(timeout_ms/1000.0)
self.c.connect((host, port))
print("AGSOCKET init: done.")
def send(self, data):
self.c.sendall(data.encode())
def read(self, size=1024):
return self.c.recv(size).decode()
def close(self):
self.c.close()
def write(self, cmd):
# logger.info("< {} Cmd >: [{}]".format(self.name, cmd))
self.send(cmd+"\r\n")
def query(self, cmd, delay=1000):
self.write(cmd)
time.sleep(delay/10000.0)
return self.read()
def close(self):
self.c.close()
def delay(self, delay_ms):
time.sleep(delay_ms/1000.0)
def create_cmd_list(self, *cmds):
return ";".join(cmds)
def IDN(self):
return self.query("*IDN?")
def dmm7510_close(self):
self.close()
# 设置测量类型
def dmm7510_set_func(self, func = "VOLT:DC"):
# func:{VOLT:DC|...}
cmd = ":SENS:FUNC \"" + str(func) + "\""
self.write(cmd)
# 设置电压挡位范围
def dmm7510_set_range(self, range = 1):
# range:{0.1|1|10|100|1000} unit:V
cmd = ":SENS:VOLT:RANG " + str(range)
self.write(cmd)
# 读值
def dmm7510_read(self):
cmd = ":READ?"
self.write(cmd)
ret = self.read()
return ret
def dmm7510_read_vol_dc(self, range):
self.dmm7510_set_func("VOLT:DC")
self.dmm7510_set_range(range)
ret = self.dmm7510_read()
# print("ret:", ret)
voltage = float(ret)
vol, unit = value_unit(ret)
print("vol:{}, unit:{}".format(voltage, unit))
return voltage, unit
if __name__ == '__main__':
ip = "192.168.xxx.xxx"
dmm = DMM7510(ip, 5025)
print(dmm.IDN())
print(dmm.dmm7510_read_vol_dc(10))
dmm.dmm7175_close()