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();
}
}
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
}
}
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 20218 18 sept. 2012 à 10:04
Bonjour,
Je ne veux pas répondre au sujet du delegate.
Mais pourquoi tu jettes la première ligne ?
Est-ce juste après l'ouverture du port série?
Dans ce cas il y a une instruction pour le port série qui permet de vider les tampons de réception et d'émission ( discardInbuffer ou discardOutbuffer il me semble).
http://stackoverflow.com/questions/11571522/clear-serial-port-receive-buffer-in-c-sharp
Bonjour,
La première ligne est incomplète, donc non analysable ! Et vider le buffer de réception ne garantit pas la validité de la suite, puisque cela se joue au niveau de l'octet!
JM