forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
ATmega16 UART + zobrazování výsledků v C# apce

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
kalmar
Nováček
Nováček


Založen: 26.12.2016
Příspěvky: 3

PříspěvekZaslal: 20 březen 2017, 0:35    Předmět: ATmega16 UART + zobrazování výsledků v C# apce Citovat

Zdravím vytvořil jsem aplikaci stopky s mcu ATmega16 a k ní mám připojený převodník na USB. Do mcu jsem vložil funkci na posílání času do PC:

kód:
void odesli_cas(void) //cas
{

        str_cas[10] = '\0';
        str_cas[9] = '\n';
        str_cas[8]      = str_mil_sec[2];
        str_cas[7]      = str_mil_sec[1];
        str_cas[6]      = str_mil_sec[0];

        str_cas[5] = ',';

        str_cas[4] = str_sec[1];
        str_cas[3] = str_sec[0];

        str_cas[2] = ':';

        str_cas[1] = str_min[1];
        str_cas[0] = str_min[0];

        uart_puts(str_cas); // pošli na COM

        return;
}

a posílaný čas chci zobrazovat v nějaké okenní aplikaci napsané třeba v c# a řeším způsob jak dostat pouze jeden řádek času, když posílám čas přes funkci výše a pak to zobrazuji v nějakém labelu tak se to vypisuje jako do řádku pod sebe, prostě potřebuju odfiltrovat ostatní řádky a mít tam jen ten jeden s aktuálním časem.

kód v c#:

kód:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)     // přijatá data
        {
            RxString = serialPort1.ReadExisting();

            //znak = serialPort1.Read(Char[11]);
            //znak = serialPort1.ReadExisting();

            this.Invoke(new EventHandler(DisplayText));

        }
        private void DisplayText(object sender, EventArgs e)
        {

            RXWINDOW.AppendText(RxString);
            //cas.Text=(RxString);

           /*znak = RxString.ToCharArray();
           vypis = znak.ToString();
           cas.Text=(vypis);
           */
        }

úplně mě nenapadá nějaké řešení jak dostat jen ten jeden řádek
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 731

PříspěvekZaslal: 20 březen 2017, 13:48    Předmět: Citovat

Zkus dát str_cas[9] = '\r'; místo str_cas[9] = '\n';. Mohlo by to pomoct.

A pokud ne, pak odřádkování v tom řetězci vynech úplně a řádkování si řeš v C# aplikaci sám.

Kromě toho, řešit nějaký předávání dat úplně bez zabezpečení alespoň kontrolním součtem je trochu hazard. V případě pouhého zobrazování to sice až tak velkej průšvih nebude. Prostě se zobrazí blbosti, ale pokud ty data pak něco dále řídí, tak musíš mít jistotu, že jsou data OK.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)