Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako kontrolisati prijem podataka na SerialPort-u

[es] :: .NET :: .NET Desktop razvoj :: Kako kontrolisati prijem podataka na SerialPort-u

[ Pregleda: 1838 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bigguy
borisav ignjatov
nista
zrenjanin

Član broj: 87859
Poruke: 267
77.46.204.*



+1 Profil

icon Kako kontrolisati prijem podataka na SerialPort-u25.01.2010. u 22:31 - pre 173 meseci
Kada za prijem podataka na SerialPort-u koristim event serialPort_DataReceived() i kada podatke sa jednog SerialPorta saljem na drugi SerialPort, bilo kao byte[] ili kao string:
Code:

string text = "Ko_to_tamo_peva?"
byte[] msg = Encoding.ASCII.GetBytes(text);
serialPort1.Write(msg, 0, msg.Length);

ili
Code:

string text = "Ko_to_tamo_peva?"
serialPort1.WriteLine(text);

retko kad mi se desava da podaci budu kompletno primljeni. Npr., ako hocu da mi se podaci koji budu primljeni na serialPort1 ispisu na labeliReceived ja cu onda to uraditi ovako:
Code:

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        { 
            int bytes = serialPort1.BytesToRead;
            byte[] msg = new byte[bytes];
            serialPort1.Read(msg, 0, bytes);
            DISPLAY(Encoding.ASCII.GetString(msg));
        }

        [STAThread]
        public void DISPLAY(string text)
        {
            labelReceived.BeginInvoke(new EventHandler(delegate
                {
                    labelReceived.Text = "Data received: " + text;
                }));
        }

Problem je u tome sto podaci koji se ispisu na labelReceived cesto nisu kompletni. Obicno im fali koje slovo sa kraja poruke, da bi pri narednom slanju onda ispisao najpre ono sto je falilo u predhodnoj predaji podataka, pa tek onda nastavio sa ispisivanjem nove poruke, ali maltene, uz obavezu da opet fali koji karakter sa kraja poruke, i to tako sve u krug. Napomenucu da se ovo desava samo ukoliko postoje dva fizicka COM porta. Ukoliko se za citanje koda koristi samo emulator, odnosno virtualni serialPort, kod radi savrseno. Moje pitanje je sledece: kako da ja nateram COM port da procita najpre kompletnu poruku, pa tek onda da je ispise?
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Kako kontrolisati prijem podataka na SerialPort-u

[ Pregleda: 1838 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.