How to add a SCPI Serial instrument

I want to add a SCPI Serial instrument, because the default ScpiInstrument can’t set the baudrate and so on, but when i wait to add this SCPI Serial instrument, i can’t access the Visa class, so i don’t how to do, could you pls help me?

Hello @jesse123!

I did something similar a while back. You need to create your own class and implement the IScpiIO2 interface. Then, you can pass your IScpiIO2 implementation to the the ScpiInstrument constructor.

A quick way to implement your IScpiIO2 interface, would be to copy the default ScpiIO implementation here:

You can see that there is an OpenTap.Visa class referenced by the default ScpiIO implementation. With that you can call any method/attribute get/set in VISA library. Create a custom Property that you expose through your instrument plugin (baudrate/flow control/etc…), and you should be able to accomplish what you want.

Hello @alan_copeland
Thanks for your asnwer, but the Visa access permission is internal, so the interface implement base on the IScpiIO2 is not allow as a plugins, it’s than right?

You can set the IScpiIO used in the constructor like this:

        public class MyScpiInstrument : ScpiInstrument
            public MyScpiInstrument() : base(new MyScpiIo())
                IO.SRQ += sender => Log.Debug("SRQ"); // unused.
            public MyScpiIO IO => ((IScpiInstrument)this).IO as MyScpiIO;