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í

 
Dekódování znaků
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 149

PříspěvekZaslal: 01 srpen 2017, 17:39    Předmět: Citovat

A jaký je prosímtě přesně smysl tvého sdělení, když on C nedělá? Nějak mi ten význam uniká…
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1496

PříspěvekZaslal: 01 srpen 2017, 22:44    Předmět: Citovat

No ja to chápem tak, že zmyslom je: "aby si to užil" Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 149

PříspěvekZaslal: 02 srpen 2017, 11:18    Předmět: Citovat

No právě, jen plané porýpávání, které nikam nevede. Taky bych to zřejmě dovedl napsat v C, ale nemachruju s tím tady, protože když tazatel v C nedělá a je jasný že asi ani hned tak nebude, tak je mu program psanej v C houby platnej - takže se radši snažím reálně pomoci v ASM, to bude lepší než nějaké virtuální básnění o… no vlastně o čemkoliv.

Ale aby na to vůbec došlo a nepohádalo se to tady (jako obvykle?) ještě dřív, než se vůbec začne něco řešit. Víc vzájemné ohleduplnosti by tu rozhodně neuškodilo. Na to že máme být chytrá komunita se chováme často dost hloupě a antikomunitně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 281

PříspěvekZaslal: 02 srpen 2017, 12:29    Předmět: Citovat

Ahoj. Jen jsem sem mrknul, protože se mi vyskytli úplně jiné sousedské problémy mimo tento chat. Budu tím pádem pokračovat minimálně až od příštího týdne. Každopádně se to tady rozjelo úplně jiným směrem.
PS. Radius - Jak píše Mahoney výše, nemachruju a pokud něco vím, i když to není to pravé ořechové, snažím se pomoct. To je snad smysl tohoto fóra. Tedy alespoň si to myslím. Ale když je to tak jednoduché v Céčku, nechceš poslat podklady a vystřihnout to pro mě levou zadní? Zrovna teď by mi to i píchlo. Ale třeba jsi to myslel jen jako konstatování, tak sorry. Díky všem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 02 srpen 2017, 14:59    Předmět: Citovat

Ta poznámka měla být impuls k tomu, aby se vývojář zamyslel, jestli zrovna teď není čas přejít na C. Pokud to totiž neudělá a bude řešit tuhle (a podobné) třídy problémů i nadále v ASM, rozhodně si to programování moc "neužije", protože dělat tabulky a podobné věci v assembleru je skutečně pruda.

Pro rýpaly - v C je to jen o nadefinování struktury s položkami {ID, Jmeno, Přijmení, Telefon, blalala...} a pak jen prohledání pole struktur podle ID. Pole může být hardkódováno do programové paměti nebo čteno z externí eeprom.

S C samozřejmě rád poradím...

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 281

PříspěvekZaslal: 02 srpen 2017, 15:15    Předmět: Citovat

Radius - já to pochopil. Jsem teď naštvanej z jiných věcí, tak mám nejapný poznámky. Přechod na Céčko mi radil už kde kdo. Ale protože jsem samouk, samá práce okolo i doma, tak mám málo času něco louskat. Sice to stále odkládám, ale zřejmě mě to nemine.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 02 srpen 2017, 15:53    Předmět: Citovat

Hele, já Ti rozumím. Psal jsem dost dlouho v ASM cca. 5 různých procesorů a přestože některé byli lepší než jiné a i překladače měli různé široké možnosti abstrakce, nikdy to nebylo ono.

Pro představu co bys musel v asm udělat:

Z příchozího ID udělat N-bitové číslo (N je násobek 8 ). Pokud ID chodí jako jednotlivé decimální/hexa znaky tak je to násobení 10/16 s akumulací. Výsledek pak porovnáváš s tím co máš uloženo někde v eeprom/flash a to byte po bytu. Tam kde to souhlasí pokračuješ čtením dalších byte které reprezentují textovou informaci. kterou hodíš na lcd. Jinak přeskočíš na začátek další požky.

Tabulka se skládá z pevného počtu byte pro ID a pevného počtu byte pro TEXT. Pokud bys chtěl variabilní délku textu, musí tam být úvodní nebo ukončovací znak.

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 281

PříspěvekZaslal: 13 srpen 2017, 16:56    Předmět: Citovat

Ahoj. Tak jsem se dnes zase částečně propracoval dále. Tu řadu 18F prozatím nemám, takže budu objednávat. Pro přiblížení, co vlastně "leze" ze čtečky, jsem psal sice již výše, ale je to tohle: 02, 10 byte data, 2 byte CRC, 03. A leze to v ASCII, takže to po odfiltrování rovnou posílám na LCD. Fyzická data jsou z terminálu Herkules z mých 3 karet:
V ASCII: STX{30}{46}{30}{31}{35}{43}{41}{44}{39}{46}{36}{30}#ETX nebo v HEXA: #STX0F015CAD9F60#ETX
V ASCII: STX{30}{31}{30}{31}{32}{30}{45}{34}{34}{37}{38}{33}#ETX nebo v HEXA: #STX010120E44783#ETX
V ASCII: STX{30}{31}{30}{31}{32}{32}{43}{42}{34}{45}{41}{37}#ETX nebo v HEXA: #STX010122CB4EA7#ETX
Legenda: 02 je v ASCII start of text-STX, 03 je end of text-ETX, # vkladá jako označení řídících znaků zřejmě terminál Herkules.
V Putty to leze v hexa bez řídících znaků: 0F015CAD9F60 Nezkoušel jsem, zda to jde nastavit jinak, ale nepotřebuji to. Vrhám se do tabulek zatím pro 16 řadu, kde jsem, a to se přiznám bez mučení, nepochopil to násobení 16. To ASCII mám v MCU přeložený i do hexa, ale nějak mi uniká myšlenka. Protože ve výsledku nebudu testovat tolik karet (cca do 50), napadla mě možnost, třídit to pomocí CRC. Tedy pokud se mi nesejdou stejné, jakože určitě ano. Možná k tomu přidat ještě 1 byte ??? Nemám však prozatím fyzicky ID a jmén vlastníků karet. Můžete mi prosím ještě jednou polopatisticky vysvětlit, jak na to. Možná příklad ...
Děkuji všem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
JohnBoss
Přispěvatel
Přispěvatel


Založen: 18.1.2016
Příspěvky: 22

PříspěvekZaslal: 14 srpen 2017, 16:52    Předmět: Citovat

Uděláš si buffer a budeš ho číst po každém přerušení od UART. Až bude na konci poslední 3 ETX tak vyhodnotíš, že přišlo něco "platného" a pak podle zbytku vyhodnotíš kdo prošel.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 15 srpen 2017, 1:55    Předmět: Citovat

Jak píše kolega přede mnou. Budou Ti chodit znaky. STX - ten vyresetuje přijímací algoritmus. Další znaky budeš zpracovávat tak, že ASCII HEX zkonvertuješ do BIN HEX.

Příklad jak v C


kód:

U8 Hex2Bin(U8 c)
{
U8 data x=c-48;
U8 code A[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
if(x>22) return 0xFF;
return A[x];   
}


Vysledeky téhle operace postupně uložíš do 6 byte, vždy horní a dolní 4bity.

Až příjde ETX, tak z těch 5 byte spočítáš CRC. Je to jen obyčený XOR všech 5 byte postupně přes sebe. Když pak udělaš ješte XOR s posledním byte (CRC) musí Ti vyjít 0x00. Mužeš to klidně počítat pruběžně, jako budou chodit ty dvojice znaků.

Těch 5 byte je ID.

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 15 srpen 2017, 2:06    Předmět: Citovat

CRC se Ti u takhle jednoduchého algoritmu může snadno sejít. To, že máš v systémů jen 50 ID neznamená, že jinde jich nemají tisíce, proto těch 5 byte.

Tabulka Tě nemine.

_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 15 srpen 2017, 2:11    Předmět: Citovat

Násobení 16 je bitový posun do leva o 4 bity. Dá se tak kumulativně přidávat odspodu. A=(A<<4)+B;
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 281

PříspěvekZaslal: 15 srpen 2017, 9:38    Předmět: Citovat

Ahoj. Ještě info ke čtečce. Pokud je trvale přiložena karta, posílá ASCII znaky každých cca 100-200 ms dokola. Proto jsem pořešil čtení tak, že po načtení celého stringu, zablokuju další čtení, převedu do hexa a vyhodnotím správnost dle CRC. Konverzi do hexa už mám hotovou i s výpočtem CRC. Pokud to sedí, posílám na LCD vybrané ID v ASCII a do UARTU dle potřeb buď taky ASCII nebo v hexa. To, že se mi CRC může sejít je také jasné. Chtěl jsem si ušetřit práci Smile
Každopádně jsem potřeboval to násobení 16, které jsem už snad pochopil. Děkuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
JohnBoss
Přispěvatel
Přispěvatel


Založen: 18.1.2016
Příspěvky: 22

PříspěvekZaslal: 15 srpen 2017, 19:58    Předmět: Citovat

Proč vy Cčkaři pořád někomu předhazujete výhody Céčka?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 15 srpen 2017, 22:32    Předmět: Citovat

To Johne pochopíš, až v něm začneš programovat. Do té doby je to zbytečná diskuze.
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

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 -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2, 3  Další
 
Strana 2 z 3
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 © 2018 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)