¿ªÔÆÌåÓý

Re: GPIB software: Prologix and Python


 

¿ªÔÆÌåÓý

Given the code example friendly issued by Chuck I could not resist and spend a couple of hours to test it with my HP437B power meter. The result is not A-level programming but just a script that works. I have not used my Prologix GPIB adapter for many years. The advantage over the HP82357 is that you have more control over the GPIB lines, if you want. The HP adapter seems (much) faster to me.

Use it as you wish.

Cheers,

Harke

# try out some gpib data collection using the Prologix gpib-usb controller # Chuck Harris # Harke Smits # Test for HP437B power meter @ GPIB address 3 # serial data format: bytes....----> str.encode("..") # Sept 2024 import serial import time def gpib_init(): ser.write(str.encode("++mode 1\r")) # Controller mode time.sleep(0.1) ser.write(str.encode("++ifc\r")) # assert IFC line time.sleep(0.1) ser.write(str.encode("++auto 0\r")) # time.sleep(0.1) ser.write(str.encode("++eoi 0\r")) # disable EOI assertion time.sleep(0.1) def gpib_read(addr): ser.write(str.encode("++addr " + str(addr) + "\r")) time.sleep(0.1) ser.write(str.encode("++read eoi\r")) return ser.readline().strip() def gpib_write(addr,gpibstr): ser.write(str.encode("++addr " + str(addr) + "\r")) time.sleep(0.1) ser.write(str.encode(gpibstr + "\r")) def check_srq(): srq = False ser.write(str.encode("++srq\r")) srq = (int(ser.readline()) == 1) return srq # # test program... # ser = serial.Serial('COM4',rtscts=0,timeout=1) # verify COM number gpib_address = 3 # HP437B power meter default GPIB address ser.write(str.encode("++ver\r")) # Prologix version print(f"Prologix controller version: {ser.readline().strip()}") gpib_init() gpib_write(gpib_address,"*RST\r") time.sleep(0.5) gpib_write(gpib_address,"IDN?\r") print("ID = " + str(gpib_read(gpib_address)) + "\r") gpib_write(gpib_address,"PR\r") # Preset cmd time.sleep(0.1) gpib_write(gpib_address,"CSZE\r") # Zero command time.sleep(0.1) print(f"Zeroing power meter") while not check_srq(): print(".", end=" ", flush=True) time.sleep(0.2) gpib_write(gpib_address,"CSCL100%\r") # Calibrate command, adjust cal fac if necessary time.sleep(0.1) print(f"\r\nCalibrating power meter") while not check_srq(): print(".", end=" ", flush=True) time.sleep(0.2) time.sleep(5) # PWM needs time to autorange gpib_write(gpib_address,"ERR?\r") # check the error code: zero is all ok print(f"\r\nError code line 71: {int(gpib_read(gpib_address))}") value = str(gpib_read(gpib_address).strip()) print(f"RF power: {value} dBm.\r") print(f"end")

Join [email protected] to automatically receive all group messages.