我正在尝试对连接到放大器(DLPCA-200)的LUCI-10 FEMTO USB控制器进行编程。我正在使用ctypes
来访问制造商在.dll文件中提供的功能。我需要获取有关引脚5的状态的信息。
我已经建立了通信,我可以执行所有功能而没有任何错误,但是需要指针的函数仅返回错误状态码(无错误),而不返回它们应该返回的实际值(如状态或标识)。我附上一些功能信息:
FEMTO_LUCI10_API int EnumerateUsbDevices();
我得到的索引是:1
FEMTO_LUCI10_API int ReadAdapterID(int index, int *id);
FEMTO_LUCI10_API int WriteAdapterID(int index, int id);
FEMTO_LUCI10_API int WriteData(int index, int data_low, int data_high);
FEMTO_LUCI10_API int GetStatusPin5(int index, int *status);
import ctypes
from ctypes import *
libc5=CDLL("C:\Program Files (x86)\FEMTO\LUCI-10\Driver\LUCI_10.dll")
libc5.EnumerateUsbDevices(None)
libc5.WriteData(1,0x8,0)
libc5.WriteAdapterID(1,0xff)
我执行这些没有问题。问题出现在以下时间:
libc5.GetStatusPin5(1,0x4cd8430)
如果我使用的函数没有指针,它只会返回错误代码0。如果我输入其他任何数字,我都会得到:
WindowsError:异常:写入0x0000000的访问冲突。
我将CDLL功能提供的句柄用作指针,但仍然没有得到除错误状态以外的任何回报。
我希望它在过载时会得到1,但是我只会得到0来表明设备正常。我检查了一下,它返回的是Luci的状态,而不是引脚5的状态。我还附加了错误返回码:
// Error return codes
define LUCI_OK 0 // Function returns successful
define LUCI_ERROR_INDEX -1 // Error, selected LUCI-10 not in list
define LUCI_ERROR_HID -2 // Error, LUCI-10 doesnt respond
// return value of GetStatusPin (D-Sub pins 5,6,7)
define STATUS_PIN_LOW 0 // probed Pin is logical 0 (TTL low 0 Volt)
define STATUS_PIN_HIGH 1 // probed Pin is logical 1 (TTL high 5 Volt)
预先感谢