pyvisa / pyvisa-sim

A PyVISA backend that simulates a large part of the "Virtual Instrument Software Architecture" (VISA_)
https://pyvisa-sim.readthedocs.io/en/latest/
MIT License
69 stars 39 forks source link

bytes_in_buffers does not work in simulation #93

Open LongnoseRob opened 8 months ago

LongnoseRob commented 8 months ago

I am woking on a testbench with pyvisa-sim, and I found with the sim backend, instr.bytes_in_buffer for a simulate serial conenction does not work:

$python builds/locl/sim/sim_test.py 
LSG Serial #1234
Traceback (most recent call last):
  File "/home/robby/builds/locl/sim/sim_test.py", line 17, in <module>
    print(instr.bytes_in_buffer)
          ^^^^^^^^^^^^^^^^^^^^^
  File "/home/robby/builds/pyvisa/pyvisa/attributes.py", line 175, in __get__
    return self.post_get(instance.get_visa_attribute(self.attribute_id))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/robby/builds/pyvisa/pyvisa/attributes.py", line 286, in post_get
    return int(value)
           ^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'object'

minimalist setup to reproduce: sim_test.py.txt

Is there an easy way to have this functional in pyvisa-sim?

MatthieuDartiailh commented 8 months ago

@LongnoseRob I looked into the issue and it appears that pyvisa-sim handling of attributes is quite limited ATM. So the first things to do will be to expand it to support more complex cases (custom getters and setters).

I will add it to my todo list but feel free to beat me to it if you have the bandwidth.

LongnoseRob commented 8 months ago

@MatthieuDartiailh I was thinking about "inregtrating" the serial resource from pyvisa-py (which supports pyserials loop://) into the serial resource part of -sim, but have not yet had a deep look into where and how to do it. A mixin comes to mind, but I am not sure if this would be the correct way.

HNY BTW