ctypes函数返回双值损坏

2024-10-01 07:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通过ctypes加载的共享库函数:

double volts_USB1608G(usb_dev_handle *udev, const __u8 gain, __u16 value)
{

  double volt = 0.0;

  switch (gain) {
    case BP_10V:
      volt = (value - 32768.)*10./32768.;
      break;
    case BP_5V:
      volt = (value - 32768.)*5./32768.;
      break;
    case BP_2V:
      volt = (value - 32768.)*2./32768.;
      break;
    case BP_1V:
      volt = (value - 32768.)*1./32768;
      break;
  }
  return volt;
}

当我在python中调用这个函数时,会返回一个整数值:

^{pr2}$

输出:

5117992 <type 'int'>

有没有办法强制打字?在

谢谢


Tags: devvaluectypesusbgainhandledoublecase
1条回答
网友
1楼 · 发布于 2024-10-01 07:47:59

来自eryksun提供的教程,docs.python.org/2/library/ctypes.html#return-types

默认情况下,假定函数返回C int类型。其他返回类型可以通过设置函数对象的restype属性来指定。”

mcc_lib = cdll.LoadLibrary("libmcchid.so")
value = 0x80d5
gain = 1 #BP_5V
mcc_lib.volts_USB1608G.restype = c_double
volts = mcc_lib.volts_USB1608G(daq.udev, gain, value)
print volts, type(volts)

相关问题 更多 >