gpt4 book ai didi

.net - 来自外部 dll 的数据类型问题

转载 作者:行者123 更新时间:2023-12-02 17:34:16 26 4
gpt4 key购买 nike

我使用 Philip 的 MfRc500.dll 与 RFID 芯片进行通信。它包含一个读取数据的函数,其定义如下:

signed char Mf500PiccRead(unsigned char addr, unsigned char * data)

我在 VB.NET 中使用它,如下所示:

Private Declare Function RFID_PiccRead Lib "MfRc500.dll" Alias "_Mf500PiccRead@8" (ByVal addr As UShort, ByRef value As Long) As Short

然后是包装器:

Public Function PiccRead(ByVal addr As UShort, ByRef value As Long) As Short
Return RFID_PiccRead(addr, value)
End Function

函数Mf500PiccRead中的第二个参数可以返回“16字节数据 block ”,所以我的long数据类型太小了。如果我使用 byte() 而不是 long,那么我会得到 ExecutionEngineException 异常。

我应该使用哪种数据类型以及如何使用?

最佳答案

最后一个参数实际上是一个 Byte()。 ExecutionEngineException 指示垃圾收集堆已损坏。请务必传递一个足够大以包含响应的初始化数组:

    Dim buffer(666) As Byte
Dim retval As SByte = RFID_PiccRead(42, Buffer)
...
Private Declare Function RFID_PiccRead Lib "MfRc500.dll" Alias "_Mf500PiccRead@8" _
(ByVal addr As Byte, Byval buffer() As Byte) As SByte

关于.net - 来自外部 dll 的数据类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com