我無法從外部DLL例程接收數據。該DLL將從微控制器芯片讀取數據。這在Delphi中正常工作,我試圖讓它在C#中工作。MarshalAs C in question#
阿黴素:起始地址 長度:正被讀取的數據的總長度
該函數返回一個TDATA陣列,其中索引爲0的項包含起始 地址和索引1的項目包含的長度收到的數據。以下 項目(索引2和更高)包含收到的數據。如果接收操作失敗,則陣列中返回的 長度值設置爲零
[DllImport("dsio.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPArray)]
public static extern byte[] Receive(int Adr, int Len);
private void BtnReceive_Click(object sender, EventArgs e)
{
byte[] Data = new byte[256];
int Adr = 0x05;
int Len = 8;
Data = Receive(Adr, Len);
txtBox2.Text = Data;
}
很不清楚這個函數返回什麼。除此之外,它不是byte []。 –
你有沒有試過不使用MarshalAs?你知道如果DLL正在返回一個C風格的數組或SafeArray? –
以任何語言顯示調用此函數的C函數原型和代碼片段(更好的C)。 –