我使用 DllImport 用 C++ 编写的 WINAPI dll 来访问 USB ADC/DAC 转换器值。唯一的问题是:
long ZGetBufferADC(long typeDevice, long numberDSP, void **buffer, long *size)
我已经把它翻译成
[DllImport("Zadc.dll")]
public static extern Int32 ZGetBufferADC(Int32 typeDevice, Int32 numberDSP, out IntPtr buffer, out Int32 size);
我这样称呼这个函数
Int32 err = ZGetBufferADC(typeDevice, numberDSP, out pBuffer, out sizeBufferADC);
然后我需要在 C# 中访问生成的 pBuffer,就像在 C++ 中一样:
short *pBuffer16ADC = (short*) pBuffer
volt0 = resolutionADC0 * (pBuffer16ADC[pointerADC]) / amplifyADC0;
其中pointerADC是Int32指向ADC转换器的当前值,我设法正确地得到它而没有问题
那么我如何在 C# 中实现该结构呢?我尝试定义这样的变量
IntPtr pBuffer;
Int16 pBuffer16ADC;
pBuffer16ADC = (Int16)pBuffer;
volt0 = resolutionADC0 * (pBuffer16ADC[pointerADC]) / amplifyADC0;
但这会引发错误
Cannot apply indexing with [] to an expression of type 'short'
任何帮助将不胜感激!如果需要其他信息,请询问我会尽快提供。这个问题让我发疯了将近一个星期:(谢谢!