J'essaie d'utiliser des méthodes de port série .Net d'un autre programme qui utilise le moteur Unity3D.Pouvons-nous mettre la fonction de rappel à l'intérieur dll?
J'ai une bibliothèque de classe C# (dll) qui enregistre et implémente une fonction de rappel lorsque le port série reçoit des données.
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));
}
Ensuite, dans mon autre programme, je crée une instance de la classe.
Je veux savoir si mon rappel serial_DataReceived à l'intérieur de la bibliothèque (dll) sera appelé ou non. J'essaie de lire _comBuffer à l'intérieur de la bibliothèque à partir d'un autre programme et il est toujours vide (même si les données viennent quand j'ai testé avec une application de console dans la même application).
Toute aide est grandement appréciée.
Merci
C'est ainsi que j'ai écrit ma propre bibliothèque de ports série, mais d'après l'apparence, astk utilise la bibliothèque 'Serial.IO.Ports' de Microsoft qui vous oblige à lire les données après l'événement, pas attaché à l'événement. Il y a beaucoup de choses mal faites dans la classe Microsoft SerialPort. –