Frage

Ich versuche, .Net Serialport Methoden aus einem anderen Programm zu verwenden, das Unity3D-Engine verwendet.

Ich habe eine c # Klassenbibliothek (DLL), die Register und eine Callback-Funktion implementieren, wenn der serielle Anschluss 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 einem anderen Programm, ich eine Instanz der Klasse erstellen.

Ich möchte wissen, ob mein Rückruf innerhalb der Bibliothek (DLL) serial_DataReceived aufgerufen werden oder nicht. Ich versuche _comBuffer in der Bibliothek aus einem anderen Programm zu lesen und es immer leer (obwohl die Daten kommen, wenn ich mit einer Konsolenanwendung in der gleichen App getestet).

Jede Hilfe sehr geschätzt.

Danke

War es hilfreich?

Lösung

<HUNCH>

Wenn ich eine Klasse-Designer war, ich die Daten in den Rückruf setzen würde, wenn Sie also auf der SerialDataReceivedEventArgs Klasse anschauen, werden Sie sehen, dass im Inneren Sie mit dem Datenpuffer ist.

So, nachdem Sie ein Ereignis, und Sie dann lesen Anruf, verwerfen Sie tatsächlich die Daten, die an Sie gesendet wird und fordern mehr.

Mit anderen Worten, ja, die Tatsache, dass es sich um eine externe Bibliothek hat nichts mit der Tatsache zu tun, ist es nicht funktioniert wie es sollte.

</HUNCH>

Andere Tipps

Es ist in der Regel nichts Besonderes über die Methoden in einer separaten DLL sein, solange Zugriffsmodifikatoren richtig eingestellt sind.

Doch je nachdem, wie Sie Ihre Lösung einrichten kann es ein Schmerz, um sicherzustellen, haben Sie die neueste DLL in Ihrem Ordner ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top