我正在嘗試使用另一個使用Unity3D引擎的程序.Net serialport方法。我們可以在dll裏面放回調函數嗎?
我有一個c#類庫(dll),當串口收到一些數據時,註冊並實現一個回調函數。
public CSerialDll()
{
_serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
}
void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int bytes = _serial.BytesToRead;
_comBuffer = new byte[bytes];
_serial.Read(_comBuffer, 0, bytes);
Console.WriteLine("data recv: " + System.Text.ASCIIEncoding.ASCII.GetString(_comBuffer));
}
然後在我的另一個程序中,我創建了一個類的實例。
我想知道我的回調serial_DataReceived內庫(dll)是否會被調用。我試圖從另一個程序中讀取庫中的_comBuffer,它總是空的(即使我在同一應用程序中使用控制檯應用程序進行測試時數據即將到來)。
任何幫助,非常感謝。
感謝
這就是我編寫我自己的串口庫的方式,但從它的外觀來看,astk使用的是Microsoft的Serial.IO.Ports庫,它實際上在獲得事件後確實會強制讀取數據,不附於該事件。實際上,Microsoft的SerialPort類有很多事情做得很糟糕。 – 2010-12-08 04:10:41