private void ComSaveExisting(object sender, SerialDataReceivedEventArgs e)
{
_Respone = _comPort.ReadExisting();
}
u konsktruktoru klase pretplatio sam se na ovu metodu
public IOOperations()
{
_comPort = new SerialPort();
_comPort.DataReceived += new SerialDataReceivedEventHandler(ComReadExisting);
}
Kreiran je C# Windows Form projekat (ne WPF). Iza forme se nalazi sledeci kod
IOOperations instIO;
public Main()
{
InitializeComponent();
instIO = new IOOperations();
instIO.FindDeviceComPortAndSet();
instIO.ComBaudRate = 112500;
instIO.ComHandshake = Handshake.None;
instIO.ComStopbits = StopBits.One;
instIO.ComDataBits = 8;
instIO.ComOpen();
}
instIO - je instanca klase koja je zaduzena za rad sa Serial Portom (u ovoj klasi se nalazi gore navedena metoda ComSaveExisting).
Kada se desi DataRecive dogadjaj, i pokrene metoda ComSaveExisting, izvrsava se linja koda koja cita podatke i cuva ih u promenljivu _Respone. Posto su podaci sacuvani meni treba da se pokrene metoda koja se nalazi u Formi. Ova metoda treba da se svaki put pozove kada se pokrene metoda ComSaveExisting iz klase. Pozivanje metode iz forme treba da se izvrsi iz metode koja se nalazi u klasi, a posle linije koda ._Respone = _comPort.ReadExisting(). U metodi u formi se nalazi kod koji obradjuje sadrzaj _Respone promenljive, pristupa mu preko GET PROPRERTY.
_Respone = _comPort.ReadExisting();
--> KOD KOJI POZIVA METODU KOJA SE NALAZI U FORMI
// KRAJ METODE
Ja sam nesto pokusavao i sa delegatima, i eventima, i sa prosledjivanjem ref parametara ali nije mi uspelo.
Moguce je pretplatiti metodu na isti dogadjaj iz klase, DataRecive dogadjaj. Ovo je bila moja prva ideja ali sam odustao od toga. Kao sto znamo kada se desi dogadjaj sve metode koje su pretplacene na njega u isto vreme se obavestavaju o promenama. To moze da izazove Exception (ispali izuzetak), ili u jos gorem slucaju da se metoda u formi prva izvrsi, pokusa da procita vrednost promenljive _Respone, a da se tek posle toga izvrsi metoda iz klase koja cita podatke sa Serial Porta.
Da li je moguce odrediti redosled izvrsavanja metoda koje su pretplacene na isti dogadjaj?