BioImager  4.9.0
A .NET microscopy imaging application based on Bio library. Supports various microscopes by using imported libraries & GUI automation. Supports XInput game controllers to move stage, take images, run ImageJ macros on images or Bio C# scripts.
Loading...
Searching...
No Matches
microscope.testsuite.mock_devices.SerialMock Class Reference
Inheritance diagram for microscope.testsuite.mock_devices.SerialMock:
microscope.testsuite.mock_devices.CoboltLaserMock microscope.testsuite.mock_devices.CoherentSapphireLaserMock microscope.testsuite.mock_devices.OmicronDeepstarLaserMock

Public Member Functions

 __init__ (self, *args, **kwargs)
 
 open (self)
 
 close (self)
 
 handle (self, command)
 
 write (self, data)
 
 read (self, size=1)
 
 readline (self, size=-1)
 
 reset_input_buffer (self)
 
 reset_output_buffer (self)
 

Public Attributes

 in_buffer = io.BytesIO()
 
 out_buffer = io.BytesIO()
 
int out_pending_bytes = 0
 
int out_parsed_bytes = 0
 
int in_read_bytes = 0
 
 eol = self.out_buffer.read(self.out_pending_bytes)
 

Protected Member Functions

 _readx_wrapper (self, reader, *args, **kwargs)
 

Detailed Description

Base class to mock devices controlled via serial.

It has two :class:`io.BytesIO` buffers.  One :func:`write`s the
output buffer and the other :func:`read`s the input buffer.  After
a write, the output buffer is analysed for a command.  If there is
a command, stuff gets done.  This usually means adding to the
input buffer and changing state of the device.

Definition at line 38 of file mock_devices.py.

Constructor & Destructor Documentation

◆ __init__()

microscope.testsuite.mock_devices.SerialMock.__init__ ( self,
* args,
** kwargs )

Definition at line 49 of file mock_devices.py.

49 def __init__(self, *args, **kwargs):
50 super().__init__(*args, **kwargs)
51 self.in_buffer = io.BytesIO()
52 self.out_buffer = io.BytesIO()
53
54 # Number of bytes in out buffer pending 'interpretation'. A
55 # command is only interpreted and handled when EOL is seen.
56 self.out_pending_bytes = 0
57 self.out_parsed_bytes = 0
58
59 # Number of bytes in the input buffer that have been read
60 self.in_read_bytes = 0
61

Member Function Documentation

◆ _readx_wrapper()

microscope.testsuite.mock_devices.SerialMock._readx_wrapper ( self,
reader,
* args,
** kwargs )
protected
Place pointer of input buffer before and after read methods

Definition at line 86 of file mock_devices.py.

86 def _readx_wrapper(self, reader, *args, **kwargs):
87 """Place pointer of input buffer before and after read methods"""
88 self.in_buffer.seek(self.in_read_bytes)
89 msg = reader(*args, **kwargs)
90 self.in_read_bytes += len(msg)
91 return msg
92

◆ close()

microscope.testsuite.mock_devices.SerialMock.close ( self)

Definition at line 65 of file mock_devices.py.

65 def close(self):
66 self.in_buffer.close()
67 self.out_buffer.close()
68

◆ handle()

microscope.testsuite.mock_devices.SerialMock.handle ( self,
command )

Definition at line 69 of file mock_devices.py.

69 def handle(self, command):
70 raise NotImplementedError("sub classes need to implement handle()")
71

◆ open()

microscope.testsuite.mock_devices.SerialMock.open ( self)

Definition at line 62 of file mock_devices.py.

62 def open(self):
63 pass
64

◆ read()

microscope.testsuite.mock_devices.SerialMock.read ( self,
size = 1 )

Definition at line 93 of file mock_devices.py.

93 def read(self, size=1):
94 return self._readx_wrapper(self.in_buffer.read, size)
95

◆ readline()

microscope.testsuite.mock_devices.SerialMock.readline ( self,
size = -1 )

Definition at line 96 of file mock_devices.py.

96 def readline(self, size=-1):
97 return self._readx_wrapper(self.in_buffer.readline, size)
98

◆ reset_input_buffer()

microscope.testsuite.mock_devices.SerialMock.reset_input_buffer ( self)

Definition at line 99 of file mock_devices.py.

99 def reset_input_buffer(self):
100 self.in_read_bytes = self.in_buffer.getbuffer().nbytes
101 self.in_buffer.seek(0, 2)
102

◆ reset_output_buffer()

microscope.testsuite.mock_devices.SerialMock.reset_output_buffer ( self)

Definition at line 103 of file mock_devices.py.

103 def reset_output_buffer(self):
104 pass
105
106

◆ write()

microscope.testsuite.mock_devices.SerialMock.write ( self,
data )

Definition at line 72 of file mock_devices.py.

72 def write(self, data):
73 self.out_buffer.write(data)
74 self.out_pending_bytes += len(data)
75
76 if self.out_pending_bytes > len(data):
77 # we need to retrieve data from a previous write
78 self.out_buffer.seek(-self.out_pending_bytes, 2)
79 data = self.out_buffer.read(self.out_pending_bytes)
80
81 for msg in data.split(self.eol)[:-1]:
82 self.handle(msg)
83 self.out_pending_bytes -= len(msg) + len(self.eol)
84 return len(data)
85

Member Data Documentation

◆ eol

microscope.testsuite.mock_devices.SerialMock.eol = self.out_buffer.read(self.out_pending_bytes)

Definition at line 81 of file mock_devices.py.

◆ in_buffer

microscope.testsuite.mock_devices.SerialMock.in_buffer = io.BytesIO()

Definition at line 51 of file mock_devices.py.

◆ in_read_bytes

microscope.testsuite.mock_devices.SerialMock.in_read_bytes = 0

Definition at line 60 of file mock_devices.py.

◆ out_buffer

microscope.testsuite.mock_devices.SerialMock.out_buffer = io.BytesIO()

Definition at line 52 of file mock_devices.py.

◆ out_parsed_bytes

int microscope.testsuite.mock_devices.SerialMock.out_parsed_bytes = 0

Definition at line 57 of file mock_devices.py.

◆ out_pending_bytes

microscope.testsuite.mock_devices.SerialMock.out_pending_bytes = 0

Definition at line 56 of file mock_devices.py.


The documentation for this class was generated from the following file: