def assign(self, a_values: array): address, size = a_values.buffer_info() assert size >= 3, "Для корректной работы в импульсный фильтр нужно задать как минимум 3 значения!" pointer_to_double = ctypes.cast(address, ctypes.POINTER(ctypes.c_double)) self.mxsrclib_dll.imp_filter_assign(pointer_to_double, size)
def coef_points(self, a_points: array): assert self.__created, "CorrectMap не подклюена!" address, size = a_points.buffer_info() pointer_to_double = ctypes.cast(address, ctypes.POINTER(ctypes.c_double)) self.mxsrclib_dll.correct_map_set_coef_points(self.__handle, pointer_to_double, size)
def encode_py_array(data: array.array) -> bytes: typecode = data.typecode count = data.buffer_info()[1] byte_count = count * data.itemsize buffer = encode_string(typecode) + encode_int(byte_count) + data.tobytes() return buffer
def from_array(self, param: array): if param.typecode != 'd': raise TypeError("Must be an array of doubles") ptr, _ = param.buffer_info() return ctypes.cast(ptr, ctypes.POINTER(ctypes.c_double)) # type: ignore