Diskuze: Serial Port
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
To ti nepřišlo divné zkopírovat 10x to samé pod sebe? Podívej se na princip DRY - https://www.itnetwork.cz/…vrh-softwaru
mně přijde zajímavější todle:
int b = 0b00000111; // 7
int b = 0b0001000; // 8
int b = 0b0001001; // 9
to je úplně super legendární, dal bych to do síně slávy.. jako další krok navrhuji nastavit konstantu pomocí výpočtu určitého integrálu!
Zapomněl si na ten další kód:
string c;
c = b.ToString();
port.Write(c);
A zkoušel sis to spustit? Nenafackoval ti ten program? Neukazuje ti chybu VS
už při psaní toho kódu?
Proč máš proměnnou
string a;
, která podle všeho může nabývat jen číselných hodnot a proměnnou
int b;
, do které se mermomocí snažíš nacpat písmenka?
A ta proměnná "c" je k čemu?
to už vypadá,že sis to snad objednal jako exemplární příklad STUPID practice
Já nebudu tak "krutý" jako ostatní - protože si asi neuvědomují že o
programování nemáš ani šajn a pravděpodobně jsi to dostal za úkol (oprav
mně jestli se mýlím).
Pokud to ovšem není nějaký vtip a ty čekáš kdo se chytí.
Že to kompletně celé špatně už víš.
Tak jen přidám to jak by to mělo vypadat správně
private void button1_Click(object sender, EventArgs e)
{
SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(textBox1.Text);
port.Close();
textBox1.Clear();
}
Zamysli se - proč převádět v aplikaci text na číslo , pak zpět na
text, který teprve pošleš - není lepší ho poslat zrovna ?
Můj příklad dělá to co potřebuješ, ale je spíš ilustrační - ve
skutečnosti bys měl ověřit že jsi opravdu na port připojený,zpracovat
nějaké potvrzení od mikrokontroleru o příjmu zprávy, nějakou validaci
vstupu - teda, že v textBoxu někdo nezadá nic jiného než číslice 0-9 - o
což ses zjevně ve svém řešení snažil, ale existují mnohem
elegantnější řešení - třeba místo textBoxu použití kontrolky
NumericUpDown s max. hodnotou 9 apod.
Co se týče toho AVRka - proč asembler, když tak bojuješ i s proti němu
"user friendly" Céčkem?
Proč ne právě to C ?
No, jako úplný začátečník bych se rozhodně nepouštěl rovnou do práce s porty. A jestli to dostal za úkol, tak se určitě něco o tom učili a aspoň trochu by měl vědět, co má dělat...
Moc se omlouvám, že jsem to takhle předhodil, ale v tu chvíli jsem nevěděl kde mám zrovna hlavu. Byl jsem v tom ponořený až moc, že mi mozek ty chyby úplně přehlížel . Jak jsem to původně zamýšlel bylo - do textboxu se něco zadá (zatím jsem to dělal 0-9 ale pak přidám ještě nějaká písmena), k tomu co se zadá je přiřazena 8 bitová hodnota (zdálo se mi, že to bude jednodušší na přesun a pro následující práci v AVR, ale jestli máte nějaký lepší nápad prosím navrhněte). Tu 8 bitovou hodnotu pošlu na port, kde by to měl přečíst mikrokontroler (nějakým způsobem musím nastavit UART), tu 8 bitovou hodnotu musím dostat z UART do registru, kde pak budu pomocí cpi porovnávat (jestli se ta hodnota shoduje -> jmp na zobrazení té konkrétní hodnoty). Proto jsem potřeboval ten kód na port v C#, abych měl jistotu, že to něco posílá a pak se prát s AVR.
Odpověď na dotazy:
Podle tvojeho popisu to vypadá že soutěžíte o to, kdo jednoduché
zadání "pošli text z textBoxu do mikrokontoléru a zobraz ho na displeji"
napíše nejsložitější a na nejvíc řádků
Takže trochu základů :
znakům nemusíš přiřazovat binární hodnoty - zápis '0',
0x30 a 0b00110000 jedno jest - v paměťové
buňce to vždy bude stejná série jedniček a nul, kterou ti serial port
odešle na mikrokontolér, ve kterém ho tak jak je přijat přepošleš na
displej - co tam chceš ještě porovnávat?
Jinak konkrétně s asemblerem ti moc neporadím, ale na síti je určitě
spousta hotových řešení.
Zobrazeno 11 zpráv z 11.