DMM7510 通过网线测试电压

本文介绍了如何通过Python编程与DMM7510仪表进行通信,包括设置测量功能、电压范围以及读取并处理电压值,使用正则表达式解析测量结果并转换单位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值