Search code examples
pythonvisagpib

Equivalent function ibwrtfW and ibwrtfA in python visa/gpib module


I'm in the process of automating lab instruments. I have a requirement like function will send file/binary data via VISA GPIB from Host PC to instrument.

In Ni4882.h there is the following functions to transfer file/binary data in Visual studio 2010, and it is working. I have well versed in the sending command as GPIB string.

But I never came across sending the file through GPIB command.

These are functions I tried in c++. I used ni4882.obj file (have the definition of these functions) and created an application, So I was able to transfer a file PC to instruments. But I am not able to find equivalent functions in python

unsigned long NI488CC ibwrtfA  (int ud, const char * filename);
unsigned long NI488CC ibwrtfW  (int ud, const wchar_t * filename);

Could anyone please let me know the equivalent function in pyvisa or visa python package? --or-- any equivalent module to an alternative for this.

I browse through all the functions of pyvisa and visa, but I failed to find the equivalent functions.

Thanks in advance!!


Solution

  • You can try the method write_raw. Try out this code:

    import visa
    rm = visa.ResourceManager()
    
    rm.list_resources() # ('ASRL1::INSTR', 'ASRL2::INSTR', 'GPIB0::12::INSTR')
    ud = rm.open_resource('GPIB0::12::INSTR') #You need to specify your device here.
    
    #Read the file into data
    f = open('file.dat', 'rb')
    data = list(f.read())
    
    #Write file into device
    ud.write_raw(data)
    

    As alternative to write_raw you can try write_binary_values or write_ascii_values. Both provide more settings if you need.