C# Xaml Serial Line read – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

C# Xaml Serial Line read – .NET – Fórum – Programujte.comC# Xaml Serial Line read – .NET – Fórum – Programujte.com

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
JirkaX0
Newbie
6. 3. 2018   #1
-
0
-

Ahoj,

mám takový problém se čtením a nevím jak ho vyřešit. Používám kód od:

https://github.com/JohnnyPP/WPF-Serial-Communication-Advanced/blob/master/Serial%20Communication%20WPF/MainWindow.xaml.cs

Hlavní problém mám v tom, že data nechodí celá a když to chci dát do textBoxu tak to vynechává skáče mimo prostě nečitelné :( co s tím?

Když data ověřím v programu "Herkules" co přicházení na seriovou linku tak jsou v pořádku. Data chodí ve formátu čísla zakončená \r\n např "1540\r\n" -> potřeboval bych je čitejně zobrazovat v textboxu a v RichTextBox.

Když jsem něco podobného dělal ve Formech tak jsem s tím neměl problém.

Když koukám na 85 řádek tak data co přichází jsou strašně dlouhá např...  "540\r\n540\r\n540\r\n540\r\n540\r\n" čtení si dělá co chce. Místo toho aby to četlo po řádku a zobrazovalo tak to různě skáče :(

Děkuji

Nahlásit jako SPAM
IP: 193.165.237.–
BDS+2
Věrný člen
9. 3. 2018   #2
-
+1
-
Zajímavé

#1 JirkaX
Nevím jestli chápu na co se ptáš.

chytl jsem se tohoto:

Hlavní problém mám v tom, že data nechodí celá a když to chci dát do textBoxu tak to vynechává skáče mimo prostě nečitelné :( co s tím?

Takto přidáš (i více řádkový) text do textboxu: 

string str = "540\r\n540\r\n540\r\n540\r\n540\r\n";
textBox.AppendText(str);

Obsah TextBoxu bude vypadat takto: 

540
540
540
540
540

Případně pokud může ten řetězec obsahovat chyby, tak to můžeš ošetřit třeba takto: 

string text = "540\r\n540\r\n \r\n\r\n540\r\n540\r\n540\r\n";
string[] lines = text.Split(new char[] { '\n', '\r', ' ' }, StringSplitOptions.RemoveEmptyEntries); //tímto se odfiltrují nedostatky
foreach (string line in lines)
{
  textBox.AppendText(line);
  textBox.AppendText(Environment.NewLine);
}
Nahlásit jako SPAM
IP: 185.69.69.–
Windows 10 x64 (i7 2,8GHz, RAM 16GB, GTX 560, 1920x1080, 27")
Visual Studio C#, RAD C/C++, Affinity P/D, Opera..
Rainbow Six 3, Tomb Raider, NFS, AOE, Dune 2..
JirkaX0
Newbie
10. 3. 2018   #3
-
0
-

#2 BDS
Děkuji za věnování. Malinko jsem přišel na to kde mám chybu ale pořád jsem to nevyřešil :(

Je to v tom, že čtu ze seriového portu pokaždé co přijde byte. :) Nikdy nevím kdy co přijde. Moje datová zpráva vypadá tak, že chodí každých 500ms hodnota od 0-9999.

Nemám vůbec nápad jak to vyřešit, zkoušel jsem i buffer ale to pořád není ono :(

Hotové řešení by mělo vypadat tak, že v textboxu bude poslední hodnota, co přišla na seriovou linku. V listboxu bude posledních 50 hodnot co přišli na seriovou linku.

Edit: Ještě přemýšlím, že bych tu datovou zprávu upravil na např D9999,999K Kde D bude začátek zprávy 4 znaky do text boxu a listboxu a 3 znaky do listboxu a K bude konec. ;) Myslím, že to bude lepší na čtení. Posílám to z PIC procesoru tak si to můžu upravit jak chci.

Nahlásit jako SPAM
IP: 193.165.237.–
BDS+2
Věrný člen
10. 3. 2018   #4
-
0
-

#3 JirkaX
Musím říct, že (a podle množství odpovědí na dvou fórech, nejsem jediný) pořád nevím s čím si nevíš vlastně rady. Podle toho, že tu zmiňuješ buffer a minule TextBox, tak si myslím, že pouze nevíš jak zobrazit hodnoty, které vrací port. 

Pokud je to tak, jak chápu já, tak by mělo stačit vytvořit metodu s argumentem ushort value, tuto hodnotu zobrazit v textboxu a mít Queue<ushort> history a tam ji přidat: 

history.Enqueue(value);
if (history.Count > 50) history.Dequeue();

a následně history zobrazit v ListBoxu. Celé toto si upravit pro použití v WPF (já WPF ani s porty nedělám, tak ti tu nechci psát ukázku, protože by to šlo jistě napsat elegantněji, než bych to dokázal já).

Nahlásit jako SPAM
IP: 185.69.69.–
Windows 10 x64 (i7 2,8GHz, RAM 16GB, GTX 560, 1920x1080, 27")
Visual Studio C#, RAD C/C++, Affinity P/D, Opera..
Rainbow Six 3, Tomb Raider, NFS, AOE, Dune 2..
JirkaX0
Newbie
12. 3. 2018   #5
-
0
-

Možná ano, neumím zobrazit ty data :( pošlu když tak celý projekt. ;) Jsem to teda asi blbě napsal :(

Nahlásit jako SPAM
IP: 193.165.236.–
BDS+2
Věrný člen
12. 3. 2018   #6
-
0
-

#5 JirkaX
To bude nejlepší. Zabal složku projektu do ZIPu a ulož třeba sem

Nahlásit jako SPAM
IP: 185.69.69.–
Windows 10 x64 (i7 2,8GHz, RAM 16GB, GTX 560, 1920x1080, 27")
Visual Studio C#, RAD C/C++, Affinity P/D, Opera..
Rainbow Six 3, Tomb Raider, NFS, AOE, Dune 2..
JirkaX0
Newbie
12. 3. 2018   #7
-
0
-
Nahlásit jako SPAM
IP: 193.165.236.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Serial number - on-line — založil Swin

Xaml - dotazy — založil milanmichal

XAML - zahrnutí namespace — založil Petrroll

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý