简洁页面心情网站,网络平台运营方案,广告制作公司简介怎么写,python版wordpress实现自动化控制#xff0c;本次为大家讲解综测仪MT8862A的控制逻辑。
新建底层控制逻辑 在文件basis_contorl.py中写入仪器控制底层代码#xff0c;代码如下#xff1a;
import tkinter.messagebox
import pyvisaclass InstrumentControl(object):inst Nonedef __init__(…实现自动化控制本次为大家讲解综测仪MT8862A的控制逻辑。
新建底层控制逻辑 在文件basis_contorl.py中写入仪器控制底层代码代码如下
import tkinter.messagebox
import pyvisaclass InstrumentControl(object):inst Nonedef __init__(self, equipment_name: str, equipment_visa: str, visa_dllc:/Windows/System32/visa32.dll):建立仪器初始对象param equipment_name: 仪器名param equipment_visa: 仪器visa地址param visa_dll: visa.all地址try:self.rm pyvisa.ResourceManager(visa_dll)print(打开visa32.dll文件成功)self.inst self.open_by_name(equipment_name, equipment_visa)except Exception as e:tkinter.messagebox.showerror(错误, 在{}中找不到visa32.dll请确认正确安装了NI-MAX和驱动)print(f打开visa32.dll文件失败 报错原因{e})passdef open_by_name(self, device_name, gpib_ip):仪表通讯param device_name:param gpib_ip:return: 仪器控制对象self.inst self.rm.open_resource(gpib_ip)print(self.inst)print(打开资源 gpib_ip)query_name_str self.command_query(*IDN?)print(查询名称为 query_name_str)if device_name in query_name_str:print(打开仪表成功打开的是 device_name)print(打开仪表成功打开的是 device_name)return self.instreturn self.instdef command_write(self, write_cmd):命令写入param write_cmd: 写入指令return: 执行结果print(执行了写入指令 write_cmd)ret_res self.inst.write(write_cmd)print(返回了 str(ret_res))return ret_resdef command_read(self, read_cmd):命令读取param read_cmd: 读取指令return: 读取信息print(执行了读取指令 read_cmd)ret_res self.inst.read(read_cmd)print(返回了 str(ret_res))return ret_resdef command_query(self, query_cmd):命令查询param query_cmd: 查询指令return: 查询信息print(执行了查询指令 query_cmd)ret_res self.inst.query(query_cmd).replace(\n, )print(返回了 str(ret_res))return ret_res
编写好底层控制代码在文件instrument_MT8862A.py写入综测仪MT8862A的控制指令代码如下
from instrument_control.basis_contorl import InstrumentControlclass MT8862A(InstrumentControl):def __init__(self, equipment_name: str, equipment_visa: str):super(MT8862A, self).__init__(equipment_name, equipment_visa)def reset_inst(self):初始化仪表self.command_write(*RST;*OPC?)self.command_write(*CLS;*OPC?)self.command_write(NWTYPE AP;*OPC?)self.command_write(MODE RXMODE;*OPC?)self.command_write(ILVL 12;*OPC?)self.command_write(OLVL -50;*OPC?)def query_equipment(self):查询设备的sn:return: 设备snresult self.command_query(*IDN?)return resultdef set_ppuu_type(self, ppuu_type: str, standard: str):设置带宽param ppuu_type: 20MHZparam standard: 测试制式self.command_write(fPPDUTYPE_{standard.upper()} {ppuu_type};*ESR?)def query_ppuu_type(self, standard: str):查询带宽return: 查询结果param standard: 测试制式result self.command_query(fPPDUTYPE_{standard.upper()}?;*ESR?)return resultdef set_mcs_index(self, mcs_index: str, standard: str):设置速率param mcs_index: 0,1。。。。。param standard: 测试制式self.command_write(fMCSINDEX_{standard.upper()} {mcs_index};*ESR?)def query_mcs_index(self, standard: str):查询速率return: 查询结果param standard: 测试制式result self.command_query(fMCSINDEX_{standard.upper()}?)return resultdef set_channel_band(self, channel_band: str, standard: str):设置2/5g信道或6g信道param channel_band: 6G2PT4G_5Gparam standard: 测试制式self.command_write(fCHANNELBAND_{standard.upper()} {channel_band};*ESR?)def query_channel_band(self, standard: str):查询信道模式return: 查询结果param standard: 测试制式result self.command_query(fCHANNELBAND_{standard.upper()}?)return resultdef set_wifi_ssid(self, wifi_ssid):设置WiFi的ssidparam wifi_ssid: WiFi名字self.command_write(fNWSSID {wifi_ssid})def query_wifi_ssid(self):查询WiFi的ssidreturn: 查询结果result self.command_query(fNWSSID?)return resultdef set_security_type(self, security_type: str):设置加密方式param security_type:WPA3self.command_write(fSECURITY_TYPE_AP {security_type};*ESR?)def query_security_type(self):查询加密方式return: 查询结果result self.command_query(SECURITY_TYPE_AP?)return resultdef set_psk_passphrase(self, psk_passphrase: str):设置密码param psk_passphrase: 12345678self.command_write(fSECURITY_PSKPASSPHRASE_WPA3_AP {psk_passphrase};*ESR?)def query_psk_passphrase(self):查询密码return: 查询结果result self.command_query(SECURITY_PSKPASSPHRASE_WPA3_AP?)return resultdef set_country_state(self, country_state: str):设置是否支持国家码param country_state: ENABLEself.command_write(fCOUNTRY_STATE {country_state};*ESR?)def query_country_state(self):查询是否支持国家码return:result self.command_query(COUNTRY_STATE?)return resultdef set_country_code_mode(self, country_code_mode: str):设置国家码模式param country_code_mode: STRself.command_write(fCOUNTRY_REGION_MODE {country_code_mode};*ESR?)def query_country_code_mode(self):查询国家码模式result self.command_query(fCOUNTRY_REGION_MODE?)return resultdef set_country_code_one(self, country_code: str):设置国家码param country_code: CNself.command_write(fCOUNTRY_REGION {country_code};*ESR?)def query_country_code_one(self):查询国家码result self.command_query(fCOUNTRY_REGION?)return resultdef set_loss_state(self, state: str):设置线损开关状态param state: 开ON 关OFFself.command_write(fEXTLOSSW {state})def set_rate_11g(self, rate: int):设置802.11g速率param rate: 速率self.command_write(fDATARATE_G {rate})def set_rate_11b(self, rate):设置802.11b速率param rate: 速率self.command_write(fDATARATE_B {rate})def set_rate_11a(self, rate):设置802.11a速率param rate: 速率self.command_write(fDATARATE_A {rate})def set_wifi_system(self, tech: str): # 11a-5G 11b-2g设置制式param tech: 802.11a:A, 802.11b:B, 802.11g:G, 802.11n:N, 802.11ac:AC, 802.11ax:AXcmd WLANSTD {}.format(str(tech).upper())self.command_write(cmd)def query_wifi_system(self):查询设置制式return: 返回制式result self.command_query(WLANSTD?)return resultdef set_rx_or_tx_mode(self, mode: str):更改RX mode或TX modeparam mode: tx:TXMODE rx:RXMODEself.command_write(MODE {}.format(mode))def set_data(self):更新目标参数cmd NWUPDATE;*ESR?self.command_write(cmd)def set_channel(self, ch: int):频段设置param ch: 测试频段cmd CHANNELNUM {}.format(str(ch))self.command_write(cmd)def set_start_and_end_level(self, start_level: str, end_level: str):设置start_level 和 end_levelparam start_level: 起始电平值param end_level: 结束电平值self.command_write(fRXSEARCH_LVL {start_level},{end_level})def set_output_level_one(self, level: str):设置输出电平param level: 电平值self.command_write(fOLVL {level};*ESR?)def query_output_level_one(self):查询电平值return:result self.command_query(OLVL?;*ESR?)return resultdef set_input_level_one(self, level: str):设置输入电平param level: 电平值self.command_write(fILVL {level};*ESR?)def query_input_level_one(self):查询电平值return:result self.command_query(ILVL?;*ESR?)return resultdef set_primary_channel(self, primary_channel: str):设置测试信道param primary_channel: 0,1.。。。self.command_write(fCHANNELNUM {primary_channel};*ESR?)def query_primary_channel(self):查询测试信道return: 查询结果result self.command_query(CHANNELNUM?;*ESR?)return resultdef set_assign_ip_address(self, assign_ip_address: str):设置assign_ip_addressparam assign_ip_address: MANUALself.command_write(fIPPROP {assign_ip_address};*ESR?)def query_assign_ip_address(self):查询assign_ip_addressreturn: 查询结果result self.command_query(IPPROP?)return resultdef set_dut_ip_address(self, dut_ip_address: str):self.command_write()def set_anti_seize(self):卡住重连self.command_write(ABORT;*ESR?)self.command_write(DISCONNECT;*ESR?)def get_ack(self):查询PER丢包率测量值return: 丢包率ret self.command_query(MEAS_PER?).split(,)[1]return retdef check_connect(self):查询wifi连接状态return: Idle0 Scanning2 Connecting6 Connected7 Disable9try:ret self.command_query(NWSTAT?).replace(\r, )except:ret Nonereturn retdef set_pkt(self, pkt: int):设置执行PER测试时MT8862A传输的数据包数param pkt: 数据包数self.command_write(PERPKTS {}.format(pkt))def single_on(self):发射WIFI信号 (前提需要先连接上仪表WIFI 带8862A字样)self.command_write(SNGLS)def query_pkt_statue(self):查询测试状态return: 测试状态pkt_statue self.command_query(MPSTAT?)return pkt_statuedef query_test_statue(self):查询测试状态return: 测试状态test_statue self.command_query(MSTAT?)return test_statuedef set_test_step(self, step: str):设置测试步进param step: 测试步进self.command_write(RXSEARCH_STEP {}.format(step))def query_test_step(self):查询测试步进return: 测试步进result self.command_query(RXSEARCH_STEP?)return resultdef query_line_loss(self):查询输出电损return: 输出电损result self.command_query(LOSSTBLVAL_LIST?)return resultdef set_loss(self, loss_value: float, cent_freq: int, port: str):设置对应频段线损:param loss_value: 线损值:param cent_freq: 测试频段:param port: 输出端口Main1或Main2if MAIN1 in port:self.command_write(fLOSSTBLVAL_LIST {cent_freq}MHZ,{loss_value},{loss_value},0.00,0.00,0.00;*ESR?)else:self.command_write(fLOSSTBLVAL_LIST {cent_freq}MHZ,0.00,0.00,0.00,{loss_value},{loss_value};*ESR?)def set_lvl_status(self, status: str):设置lvl状态param status: ON为开OFF为关self.command_write(fLVL {status};*ESR?)def disconnect_wifi(self):断开WiFiself.command_write(DISCONNECT;*ESR?)def set_wifi_sign(self):self.command_write(TRGSRC COM;*ESR?)self.command_write(COMTRGMODE MODE3;*ESR?)self.command_write(TXDATARATE_CTRL MODEB;*ESR?)def set_output_port(self, port: str):设置输出端口param port:self.command_write(fPORT MAIN{port};*ESR?)def query_output_port(self):查询输出端口return: 返回端口结果result self.command_query(fPORT?)return result
控制仪器时先设置控制对象具体例子如下 set_equipment_name MT8862Aset_equipment_visa 仪器的GPIB地址d66319_object MT8862A(equipment_nameset_equipment_name, equipment_visaset_equipment_visa)关于综测仪MT8862A的控制方法就到这里了博主后续还会更新不同仪器的控制方法各位敬请期待吧有疑问欢迎找博主解答我是活动的笑脸。