Yes, I've heard of EZGPIB, but I've never been able to get it to work satisfactorily with the AR488 - that's probably the only reasonable replacement I know of, but unfortunately there's no further development or customization to be expected there.
Suggestion: get comfortable with writing plain-language specs for LLMs to follow, rather than programs or scripts for ephemeral languages. What we used to call 'programming' is now a robot's job, especially when it comes to small standalone applications like this.
Disregard those who tell you this is bad advice; they're badly mistaken.
.
using System;
using NationalInstruments.NI4882; // Ensure you have NI4882 or a suitable GPIB library installed
class Program
{
static void Main(string[] args)
{
// Initialize the GPIB session
const int deviceAddress = 2; // Adjust to your device's GPIB address
const string gpibInterface = "GPIB0"; // Change if necessary
Device keithley199;
try
{
// Create a GPIB session
GpibSession session = new GpibSession(gpibInterface);
keithley199 = new Device(session, deviceAddress);
// Configure the Keithley 199
ConfigureKeithley(keithley199);
// Take a measurement
double measurement = TakeVoltageMeasurement(keithley199);
// Output the measurement
Console.WriteLine($"Voltage Measurement: {measurement} V");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
finally
{
// Cleanup
if (keithley199 != null)
{
keithley199.Close();
}
}
}
static void ConfigureKeithley(Device keithley)
{
// Set the Keithley to voltage measurement mode
keithley.Write("*RST"); // Reset the device
keithley.Write("FUNC 'VOLT'"); // Set function to voltage
keithley.Write("VOLT:RANG AUTO"); // Set voltage range to auto
keithley.Write("VOLT:DC:NPLCycles 10"); // Set filter setting (optional)
}
static double TakeVoltageMeasurement(Device keithley)
{
// Initiate measurement and read value
keithley.Write("INIT"); // Start the measurement
System.Threading.Thread.Sleep(1000); // Wait for measurement to complete (adjust as necessary)
// Read the measured voltage
string result = keithley.Read("FETCh?");
return double.Parse(result);
}
}
If your model doesn't know about multimeters from 1987, and can't look up what it needs to know on the web, then you're using the wrong model. Use a better model.
But yeah, AR488 and other weird homebrew GPIB adapters will be largely out of distribution. The right strategy is probably to have it write the code for an NI488.2 or perhaps Prologix interface, then revise it manually to use the AR488. Alternatively, ensure that the model has access to the AR488's documentation (which, again, it really should be able to find by default, assuming it can do web searches.)
I would just say to OP if you want to actually understand the code you are writing, don't use LLMs.(they will not be capable anyway)
Suggestion: get comfortable with writing plain-language specs for LLMs to follow, rather than programs or scripts for ephemeral languages. What we used to call 'programming' is now a robot's job, especially when it comes to small standalone applications like this.
Disregard those who tell you this is bad advice; they're badly mistaken.

I get that the point was to show the capabilities of LLM's but the DP832 doesn't have a GPIB interface to begin with.
Yes, there's an option to buy Rigols "backwards" USB/GPIB-converter that connects to the DP832 USB-host port and interfaces existing GPIB infrastruture (if you hade it) but then connecting THAT to an AR488 to go back to USB/serial makes no practical sense.
>Can you also add SCSI support?
-----------------------------------------
Do you mean SCPI or SCSI?
This app already uses SCPI commands over the transport layer. If you meant SCSI, that is a different interface/protocol entirely and would need a separate device access path.
True, if it were a little smarter, it would push back and tell me to just use a direct connection. I would expect that to take another generation or two, but it'll happen, I'm sure.
I am completely aware it's capable of general purpose coding, but even if you give it a manual it is not capable of getting all the neccesary contect(like seeing if the device actually has a GPIB port) I have naively tried this exact thing and only ended up in a world of errors and having to go back and learn it anyway. I'm also aware it will get better, but that isn't right now is it.

I get that the point was to show the capabilities of LLM's but the DP832 doesn't have a GPIB interface to begin with.
Yes, there's an option to buy Rigols "backwards" USB/GPIB-converter that connects to the DP832 USB-host port and interfaces existing GPIB infrastruture (if you hade it) but then connecting THAT to an AR488 to go back to USB/serial makes no practical sense.
What model does Copilot use these days? Is it tied to GPT 5.4? I've never tried it, not being an IDE guy. Looks like Codex CLI defaults to 5.4, but again not much experience with it compared to Opus 4.6 in Claude Code.
Proving my exact pointI am completely aware it's capable of general purpose coding, but even if you give it a manual it is not capable of getting all the neccesary contect(like seeing if the device actually has a GPIB port) I have naively tried this exact thing and only ended up in a world of errors and having to go back and learn it anyway. I'm also aware it will get better, but that isn't right now is it.
So there is still a lot of competition for best tooling.
Can you create a C# command line project that uses the .NET Framework 4.7.2? Please do it in this folder and call it HP8273BLLMTest
Please add the National Instruments 488.2 and VISA assemblies to this project
Great - Please add a HelloWorld output and tell me how to build and run the app from inside VS Code
Please copy the PDF located here "C:\Users\Tony\OneDrive\Documents\Manuals\8673B User.pdf" into the project
Please add Spectre.Console.Cli to the project. You can read about it here https://spectreconsole.net/cli
Ok. Please remvoe the "Hello World" output and create two command line options. The first is to set the frequency. The second is to set the power. The GPIB address of the 8673B is 19. Review the PDF file and use the National Instruments VISA library to talk to the 8673B.
I built the project but got this error:
* Executing task: cmd /c 'C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\MSBuild.exe' HP8273BLLMTest\HP8273BLLMTest.csproj /p:Configuration=Debug /p:Platform=AnyCPU
MSBuild version 18.4.0+6e61e96ac for .NET Framework
Build started 3/20/2026 12:54:18 PM.
Project "C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj" on node 1 (default targets).
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
CoreCompile:
C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702 /fullpaths /nostdlib+ /platform:anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG;TRACE /highentropyva+ /reference:"C:\Program Files (x86)\IVI Foundation\VIS
A\Microsoft.NET\Framework32\v4.0.30319\VISA.NET Shared Components 8.0.2\Ivi.Visa.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFra
mework\v4.7.2\mscorlib.dll" /reference:"C:\Program Files (x86)\National Instruments\MeasurementStudioVS2012\DotNET\Assemblies\Current\NationalInstruments.NI4882.dll" /reference:"C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v4.0.30319\NI VISA.NET 26.0\NationalInstr
uments.Visa.dll" /reference:C:\Users\Tony\.nuget\packages\spectre.console.cli\0.53.1\lib\netstandard2.0\Spectre.Console.Cli.dll /reference:C:\Users\Tony\.nuget\packages\spectre.console\0.53.1\lib\netstandard2.0\Spectre.Console.dll /reference:C:\Users\Tony\.nuget\packages\system.buffers\4
.6.1\lib\net462\System.Buffers.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Data.DataSetExtensions.dll" /refere
nce:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.dll" /reference:C:\Users\Tony\.nuget\packages\system.memory\4.6.3\lib\net462\
System.Memory.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Numerics.dll" /reference:C:\Users\Tony\.nuget\pa
ckages\system.numerics.vectors\4.6.1\lib\net462\System.Numerics.Vectors.dll /reference:C:\Users\Tony\.nuget\packages\system.runtime.compilerservices.unsafe\6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framew
ork\.NETFramework\v4.7.2\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Xml.Linq.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Facades\netstandard.dll" /debug+
/debug:full /filealign:512 /optimize- /out:obj\Debug\HP8273BLLMTest.exe /subsystemversion:6.00 /target:exe /utf8output /deterministic+ /langversion:7.3 Commands\FrequencyCommand.cs Commands\PowerCommand.cs Instruments\HP8673B.cs Program.cs Properties\AssemblyInfo.cs "obj\Debug\.NETFrame
work,Version=v4.7.2.AssemblyAttributes.cs"
Compilation request HP8273BLLMTest, PathToTool=C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe
CommandLine = ' /noconfig'
BuildResponseFile = '/nowarn:1701,1702 /fullpaths /nostdlib+ /platform:anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG;TRACE /highentropyva+ /reference:"C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v4.0.30319\VISA.NET Shared Components 8.0.2\Ivi.Vis
a.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\mscorlib.dll" /reference:"C:\Program Files (x86)\National Instrum
ents\MeasurementStudioVS2012\DotNET\Assemblies\Current\NationalInstruments.NI4882.dll" /reference:"C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v4.0.30319\NI VISA.NET 26.0\NationalInstruments.Visa.dll" /reference:C:\Users\Tony\.nuget\packages\spectre.console.cli\0
.53.1\lib\netstandard2.0\Spectre.Console.Cli.dll /reference:C:\Users\Tony\.nuget\packages\spectre.console\0.53.1\lib\netstandard2.0\Spectre.Console.dll /reference:C:\Users\Tony\.nuget\packages\system.buffers\4.6.1\lib\net462\System.Buffers.dll /reference:"C:\Program Files (x86)\Reference
Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramew
ork\v4.7.2\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.dll" /reference:C:\Users\Tony\.nuget\packages\system.memory\4.6.3\lib\net462\System.Memory.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Micro
soft\Framework\.NETFramework\v4.7.2\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Numerics.dll" /reference:C:\Users\Tony\.nuget\packages\system.numerics.vectors\4.6.1\lib\net462\System.Numerics.Vectors.dll /re
ference:C:\Users\Tony\.nuget\packages\system.runtime.compilerservices.unsafe\6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Xml.dll" /reference:"C:\Program Files (x86)\Ref
erence Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Xml.Linq.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Facades\netstandard.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\HP8273BLLMTest.exe /subsy
stemversion:6.00 /target:exe /utf8output /deterministic+ /langversion:7.3 Commands\FrequencyCommand.cs Commands\PowerCommand.cs Instruments\HP8673B.cs Program.cs Properties\AssemblyInfo.cs "obj\Debug\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"'
Attempting to create process 'C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\Roslyn\VBCSCompiler.exe' "-pipename:sKDdMrdzGu9E4kpXABqaTwSAdKXFM3pYmc3iY17skOo"
Successfully created process with process id 33236
Attempt to open named pipe 'sKDdMrdzGu9E4kpXABqaTwSAdKXFM3pYmc3iY17skOo'
Attempt to connect named pipe 'sKDdMrdzGu9E4kpXABqaTwSAdKXFM3pYmc3iY17skOo'
Named pipe 'sKDdMrdzGu9E4kpXABqaTwSAdKXFM3pYmc3iY17skOo' connected
Begin writing request for HP8273BLLMTest
End writing request for HP8273BLLMTest
Begin reading response for HP8273BLLMTest
End reading response for HP8273BLLMTest
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\FrequencyCommand.cs(22,29): error CS0115: 'FrequencyCommand.Execute(CommandContext, FrequencyCommand.Settings)': no suitable method found to override [C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\FrequencyCommand.cs(8,25): error CS0534: 'FrequencyCommand' does not implement inherited abstract member 'Command<FrequencyCommand.Settings>.Execute(CommandContext, FrequencyCommand.Settings, CancellationToken)' [C:\Users\Tony\source\Test\H
P8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\PowerCommand.cs(22,29): error CS0115: 'PowerCommand.Execute(CommandContext, PowerCommand.Settings)': no suitable method found to override [C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\PowerCommand.cs(8,25): error CS0534: 'PowerCommand' does not implement inherited abstract member 'Command<PowerCommand.Settings>.Execute(CommandContext, PowerCommand.Settings, CancellationToken)' [C:\Users\Tony\source\Test\HP8273BLLMTest\HP
8273BLLMTest.csproj]
CompilerServer: server - server processed compilation - HP8273BLLMTest
Done Building Project "C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj" (default targets) -- FAILED.
Build FAILED.
"C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj" (default target) (1) ->
(CoreCompile target) ->
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\FrequencyCommand.cs(22,29): error CS0115: 'FrequencyCommand.Execute(CommandContext, FrequencyCommand.Settings)': no suitable method found to override [C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\FrequencyCommand.cs(8,25): error CS0534: 'FrequencyCommand' does not implement inherited abstract member 'Command<FrequencyCommand.Settings>.Execute(CommandContext, FrequencyCommand.Settings, CancellationToken)' [C:\Users\Tony\source\Test
\HP8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\PowerCommand.cs(22,29): error CS0115: 'PowerCommand.Execute(CommandContext, PowerCommand.Settings)': no suitable method found to override [C:\Users\Tony\source\Test\HP8273BLLMTest\HP8273BLLMTest.csproj]
C:\Users\Tony\source\Test\HP8273BLLMTest\Commands\PowerCommand.cs(8,25): error CS0534: 'PowerCommand' does not implement inherited abstract member 'Command<PowerCommand.Settings>.Execute(CommandContext, PowerCommand.Settings, CancellationToken)' [C:\Users\Tony\source\Test\HP8273BLLMTest\
HP8273BLLMTest.csproj]
0 Warning(s)
4 Error(s)
Time Elapsed 00:00:00.92
* The terminal process "C:\Program Files\PowerShell\7\pwsh.exe -Command cmd /c 'C:\Program Files\Microsoft Visual Studio\18\Enterprise\MSBuild\Current\Bin\MSBuild.exe' HP8273BLLMTest\HP8273BLLMTest.csproj /p:Configuration=Debug /p:Platform=AnyCPU" terminated with exit code: 1
Can you push this to my GitHub account and create a public repository for the code?
Yes, make it public and just use the HP8273BLLMTest as the repo name
Bugger - I just installed the GitHub CLI stuff - Can you do it now?
Ok - I just authenticated - Can you do it now?
Thank you - Please create a README.md file that explains what a 8673B is and what commands this application provides. Additionally provide links and commentary on the NI VISA and 488.2 files so that people can find what they are.
But yeah, AR488 and other weird homebrew GPIB adapters will be largely out of distribution. The right strategy is probably to have it write the code for an NI488.2 or perhaps Prologix interface, then revise it manually to use the AR488. Alternatively, ensure that the model has access to the AR488's documentation (which, again, it really should be able to find by default, assuming it can do web searches.)
The use of AI in coding……if you think you can give it a brief outline and expect good results then you are in for a world of pain. However, if you keep on top of it, lots of direction, do’s and do not’s with each post then it’s well capable of giving you great code.
Trust me…..
Ian