Bonjour à tous,
Je suis en train d'explorer le mécanisme des délégués .... et je me perds !
Tel que je le comprends, c'est du pointeur sur de la fonction !
Bon, c'est certainement plus fin, et très lié à l'évènementiel Windows, mais cette utilisation "pointeur sur fonction" me va bien.
En effet, je voudrais envoyer des lignes de texte lues sur un port série à une méthode sur une classe parente.
Mon problème est que la première ligne est toujours à jeter car incomplète.
Donc mon plan est celui là : ( see lelow )
Toute indication sera la bienvenue.
Merci d'avance
class clSerialPort
{
private SerialPort port;
public delegate void delegateProcess(string s);
public delegateProcess Process;
public clSerialPort(string comport, clNavigateur theNav)
{
port = new SerialPort(comport, 2400, Parity.Even, 8, StopBits.One);
Process = new delegateProcess(theNav.Init);
port.Open();
Console.WriteLine("Port is opened");
System.Console.ReadKey();
if (port.IsOpen)
{
System.Console.ReadKey();
port.Close();
}
}
private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
Process((string)port.ReadLine());
}
}
class clNavigateur
{
private clSerialPort theSerPo;
public clNavigateur()
{
// le port serie
theSerPo = new clSerialPort("COM8", this);
}
internal void Processor(string strFromSerial)
{
Console.WriteLine(strFromSerial);
}
internal void Init(string strFromSerial)
{
Console.WriteLine("Init " + strFromSerial); // On jette la première ligne
this.theSerPo.Process = null; // et on change de délégué ...
this.theSerPo.Process = this.Processor; // Mais ca marche pô, theSerPo est toujours null !!! Et je ne sais pas pourquoi
}
}