我正在尝试使用 C# 编写的 DLL 与激光器进行通信。我使用 ctypes 模块成功加载了 DLL 函数。我想使用的函数有一个如下所示的声明:
LONG LJV7IF_GetStorageData( LONG lDeviceId,
LJV7IF_GET_STORAGE_REQ* pReq,
LJV7IF_STORAGE_INFO* pStorageInfo,
LJV7IF_GET_STORAGE_RSP* pRsp,
DWORD* pdwData,
DWORD dwDataSize );
Run Code Online (Sandbox Code Playgroud)
我想通过双字指针 pdwData 访问数据。激光器通过如下结构发送其存储的数据:
Bytes | Meaning | Types
0-3 | time | dword
4 | judgment | byte
5 | meas info | byte
... | ... | ...
8-11 | data | float
Run Code Online (Sandbox Code Playgroud)
这就是我使用该功能的方式:
self.dll = WinDLL( "LJV7_IF.dll" )
self._getStoredData = self.dll.LJV7IF_GetStorageData
self._getStoredData.restype = c_int32
self._getStoredData.argstypes = [ c_int32,
POINTER( GET_STORAGE_REQ ),
POINTER( STORAGE_INFO ), …Run Code Online (Sandbox Code Playgroud)