首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Excel中实现外部Yoctopuce

在Excel中实现外部Yoctopuce
EN

Stack Overflow用户
提问于 2018-03-26 08:12:43
回答 1查看 91关注 0票数 0

我正在使用Windows10(64位)和Excel 2016 (32位),并希望在VBA中实现Yocto-4-20mA-Tx模块(https://www.yoctopuce.com/EN/products/usb-actuators/yocto-4-20ma-tx)的控制。

根据文档,DLL是用C写成的,下面是三个基本功能。

代码语言:javascript
复制
int yapiInitAPI(int connection_type, char *errmsg);
int yapiUpdateDeviceList(int forceupdate, char *errmsg);
int yapiHTTPRequest(char *device, char *request, char *buffer, int buffsize, int *fullsize, char *errmsg);

我读过(但可能还没有完全理解)以下内容:

我尝试在VBA模块中实现第一个函数(yapiInitAPI)。将DLL定位在应用程序文件夹中。

代码语言:javascript
复制
Option Explicit
Private Declare Function yapiInitAPI Lib "yapi" (ByVal connection_type As Long, ByVal errmsg As String) As Long

Sub myInit()
Dim nReturn As Long
Dim sError As String

nReturn = yapiInitAPI(1, sError)

MsgBox sError
MsgBox nReturn

End Sub

运行此操作将导致

“运行时错误'49':错误的DLL调用约定”

在yapiInitAPI(1,sError)行上。

以下是一些问题:

  1. 所有DLL都可以在VBA中实现,还是必须遵循标准?
  2. 我认为我实现为"ByVal errmsg作为字符串“的"char *errmsg”是问题所在,应该如何在VBA中将"char *“翻译成”char*“?
  3. 当我从yoctopuce下载DLL时,我得到了两个版本32位和64位,我应该使用一个特定的版本。如果是的话,它取决于我的操作系统还是Office版本?
  4. 我将DLL放入我的应用程序文件夹(即存储.xlsm的位置),如果我将它放在WindowsSystem32中(并从应用程序文件夹中删除它),它可以使用VBA中的"Lib‘yapi“访问它,它抱怨文件找不到。这不应该一样吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-02 05:03:18

文档还提到“来自yapi.dll的每个入口点都是重复的,您会发现一个普通的C-decl版本和一个Visual 6兼容版本,前缀是vb6_”:-)。

对于调用方应用程序和DLL,必须使用相同的32/64位结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49486799

复制
相关文章

相似问题

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