def test_as_db_get(self): _buffer = buffer_type() size = ctypes.c_int(buffer_size) self.client.as_db_get(db_number, _buffer, size) self.client.wait_as_completion(500) result = bytearray(_buffer)[:size.value] self.assertEqual(100, len(result))
def db_get(self, db_number): """Uploads a DB from AG. """ logging.debug("db_get db_number: %s" % db_number) buffer_ = buffer_type() result = clib.Cli_DBGet(self.pointer, db_number, byref(buffer_), byref(c_int(buffer_size))) check_error(result, client=True) return bytearray(buffer_)
def db_get(self, db_number) -> bytearray: """Uploads a DB from AG. """ logger.debug(f"db_get db_number: {db_number}") _buffer = buffer_type() result = self._library.Cli_DBGet(self._pointer, db_number, byref(_buffer), byref(c_int(buffer_size))) check_error(result, context="client") return bytearray(_buffer)
def as_full_upload(self, _type: str, block_num: int) -> int: # Cli_AsFullUpload _buffer = buffer_type() size = c_int(sizeof(_buffer)) block_type = snap7.types.block_types[_type] result = self._library.Cli_AsFullUpload(self._pointer, block_type, block_num, byref(_buffer), byref(size)) check_error(result, context="client") return result
def db_get(self, db_number): """Uploads a DB from AG. """ logging.debug("db_get db_number: %s" % db_number) _buffer = buffer_type() result = self.library.Cli_DBGet(self.pointer, db_number, byref(_buffer), byref(c_int(buffer_size))) check_error(result, context="client") return bytearray(_buffer)
def as_db_get(self, db_number) -> bytearray: """ This is the asynchronous counterpart of Cli_DBGet. """ logger.debug(f"db_get db_number: {db_number}") _buffer = buffer_type() result = self._library.Cli_AsDBGet(self._pointer, db_number, byref(_buffer), byref(c_int(buffer_size))) check_error(result, context="client") return bytearray(_buffer)
async def as_db_get(self, db_number, timeout=1): """ This is the asynchronous counterpart of Cli_DBGet with asyncio features. """ logger.debug(f"db_get db_number: {db_number}") _buffer = buffer_type() result = self._library.Cli_AsDBGet(self._pointer, db_number, byref(_buffer), byref(c_int(buffer_size))) request_in_time = await self.as_check_and_wait(timeout) if request_in_time is False: return None check_error(result, context="client") return bytearray(_buffer)
def full_upload(self, _type: str, block_num: int) -> Tuple[bytearray, int]: """ Uploads a full block body from AG. The whole block (including header and footer) is copied into the user buffer. :param block_num: Number of Block """ _buffer = buffer_type() size = c_int(sizeof(_buffer)) block_type = snap7.types.block_types[_type] result = self._library.Cli_FullUpload(self._pointer, block_type, block_num, byref(_buffer), byref(size)) check_error(result, context="client") return bytearray(_buffer)[:size.value], size.value
def upload(self, block_num) -> bytearray: """ Uploads a block body from AG :param block_num: bytearray """ logger.debug(f"db_upload block_num: {block_num}") block_type = snap7.types.block_types['DB'] _buffer = buffer_type() size = c_int(sizeof(_buffer)) result = self._library.Cli_Upload(self._pointer, block_type, block_num, byref(_buffer), byref(size)) check_error(result, context="client") logger.info(f'received {size} bytes') return bytearray(_buffer)
def upload(self, block_num): """ Uploads a block body from AG :param data: bytearray """ logger.debug("db_upload block_num: %s" % (block_num)) block_type = snap7.types.block_types['DB'] _buffer = buffer_type() size = c_int(sizeof(_buffer)) result = self.library.Cli_Upload(self.pointer, block_type, block_num, byref(_buffer), byref(size)) check_error(result, context="client") logger.info('received %s bytes' % size) return bytearray(_buffer)
def test_as_upload(self): _buffer = buffer_type() size = ctypes.c_int(ctypes.sizeof(_buffer)) self.client.as_upload(1, _buffer, size) self.assertRaises(Snap7Exception, self.client.wait_as_completion, 500)