首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数返回双值故障

函数返回双值故障
EN

Stack Overflow用户
提问于 2015-08-12 20:02:45
回答 1查看 1.9K关注 0票数 0

我有一个共享库函数,我正在通过ctype加载该函数:

代码语言:javascript
复制
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中调用它时,返回一个整数值:

代码语言:javascript
复制
mcc_lib = cdll.LoadLibrary("libmcchid.so")
value = 0x80d5
gain = 1 #BP_5V
volts = mcc_lib.volts_USB1608G(daq.udev, gain, value)
print volts, type(volts)

产出:

代码语言:javascript
复制
5117992 <type 'int'>

有什么办法可以强迫打字吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-02 12:41:16

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

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

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31974350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档