C# VS serialPort, jak získat data

Od: Datum: 05.04.15 02:29 odpovědí: 0

Dobrý den, řeším problém v c#. Snažím se získat příkaz ve formátu string tak, aby se jednotlivé příkazy poslané na COM port načetly vždy v celku. Zatím jsem docílil pouze toho, že se mi načítá do pole RxString postupně po jednom znaku. Nevím bohužel jak detekovat nějaký konec příchozích dat, nebo jak celý proces načtení příkazu například vložit do while do přeštení všech nahraných dat, nebo ukončit řetězec po 50ms bez příchozích dat apod. Předem informuji že konec příkazu nemůžu ukončovat například nějakým znakem, příkazy které chci zpracovávat jsou zhruba "DX058OP" atd. Funkce jsou následující:

private void serialPort_prijem_dat_events(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
//RxString = serialPort.ReadLine(); // nevrací žádnou hodnotu
RxString = serialPort.ReadExisting(); //čtení příchozích dat ze serial portu
this.Invoke(new EventHandler(DisplayText));

//! v tomto místě bych potřeboval aby v txtPrichozi.Text byl nahrán již kompletní příkaz, nyní se přidávají znaky pouze po jednom
this.Invoke(new EventHandler(Vlozeni_nove_radky));
}
catch(TimeoutException)// (System.TimeoutException)
{
this.Invoke(new EventHandler(Vlozeni_nove_radky));
}

}

private void DisplayText(object s, EventArgs e)

{

txtPrichozi.Text = txtPrichozi.Text + RxString; //přidává ale pouze jeden znak (postupně se celý znak poskládá)
}

private void Vlozeni_nove_radky(object s, EventArgs e)
{


if (check_Nova_radka.Checked == true) //sleduje zaškrtnutí zda se při novém příkazu má přidat nová řádka
{
txtPrichozi.Text = txtPrichozi.Text + Environment.NewLine; //problém je že se přidávají znaky po jednom a nový řádek se přidává střídavě

}

}

Doufám že někdo bude vědět Děkuji


 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.