General > General Technical Chat
My First ChatGPT Experience
(1/1)
DrNefario:
Up until a few days ago, I was unaware of the ChatGPT existence. I was having dinner with my son who told me about it. He said I should try it to see what it can do. This sounded intriguing, so I thought I would stump it with something hard. I asked it to write a program in Python that would read an HP3478A voltmeter via the GPIB bus. A few seconds later this is what it had:
--- Code: ---import visa
import time
import csv
# Establish a connection to the voltmeter
rm = visa.ResourceManager()
voltmeter = rm.open_resource('GPIB0::7::INSTR')
# Configure the voltmeter to measure voltage
voltmeter.write("CONF:VOLT:DC")
# Set the measurement interval and the duration of the data collection
interval = 1 # seconds
duration = 300 # seconds
# Open a file to save the data
with open('voltage_data.csv', 'w', newline='') as csvfile:
# Create a CSV writer
csvwriter = csv.writer(csvfile)
# Write the header row to the CSV file
csvwriter.writerow(["Time", "Voltage"])
# Start collecting data
start_time = time.time()
while time.time() - start_time < duration:
# Read the voltage value
voltage = float(voltmeter.query("MEAS:VOLT:DC?"))
# Get the current time
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
# Write the data to the CSV file
csvwriter.writerow([current_time, voltage])
# Wait for the specified interval before taking the next measurement
time.sleep(interval)
print("Data collection complete.")
# Close the connection to the voltmeter
voltmeter.close()
--- End code ---
The few things I had to do to run this was to:
1. change visa to Pyvisa
2. correct my GPIB address
3. change the write and query statements to use proper HP3478 codes:
a. voltmeter.write ("CONF:VOLT:DC") voltmeter.write ("F1T4R0Z1N3")
b. float(voltmeter.query("MEAS:VOLT:DC?")) float(voltmeter.query("T3"))
The older HP instruments like this were designed prior to SCPI language but the ChatGPT used SCPI commands which didn’t work. In fact, the meter thought that it was trying to write calibration values but announced that the CAL ENABLE switch was off. Good thing it was.
All-in-all I was quite impressed. I next asked it to include a GUI with start and stop buttons which it promptly did using the “tkinter” modules. This one wasn’t 100% as the stop button was never read, but most of the code was there. Still, pretty impressive.
Navigation
[0] Message Index
Go to full version