Ich versuche, .Net-Serialport-Methoden aus einem anderen Programm zu verwenden, das die Unity3D-Engine verwendet.Können wir Callback-Funktion in dll setzen?
Ich habe eine C# -Klassenbibliothek (dll), die eine Callback-Funktion registriert und implementiert, wenn der serielle Port einige Daten empfängt.
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));
}
Und dann in meinem anderen Programm, ich erstelle eine Instanz der Klasse.
Ich möchte wissen, ob mein Rückruf serial_DataReceived in der Bibliothek (dll) aufgerufen wird oder nicht. Ich versuche, _comBuffer in der Bibliothek von einem anderen Programm zu lesen und es immer leer (auch wenn die Daten kommen, wenn ich mit einer Konsole App in der gleichen App getestet).
Jede Hilfe wird sehr geschätzt.
Dank
Das ist die Art und Weise, wie ich meine eigene serielle Port-Bibliothek schrieb, aber von den Blicken, astk verwendet Microsofts "Serial.IO.Ports" -Bibliothek, die Sie tatsächlich zwingt, die Daten zu lesen, nachdem Sie das Ereignis bekommen, es ist nicht Ich bin nicht an der Veranstaltung beteiligt. Es gibt eine Menge Dinge, die in der Microsoft-Klasse "SerialPort" schlecht gemacht werden. –