Čtečka čárového kódu chybuje v JAVA aplikaci. – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Čtečka čárového kódu chybuje v JAVA aplikaci. – Java – Fórum – Programujte.comČtečka čárového kódu chybuje v JAVA aplikaci. – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Avatar780
Duch
5. 2. 2013   #1
-
0
-

Zdravím kolegové programátoři.

Narazil jsem na velmi neobvyklý problém na který jsem nenašel na googlu odpověď. Používám ve svém programu čtečku čárového kódu která se chová jako klávesnice. Stačí jí tedy nastavit fokus do nějakého textového políčka (např. JTextField) a uživatel jen načte kód čtečkou,která je nastavena tak aby na konci posílala CR LF na což v dialogu reaguji. To je všechno v pohode a chodí to,ale problém je v tom,že ne úplně spolehlivě! Zcela náhodně se stává,že např. 20x je kód načten správně,ale pak se stane,že je vynechán znak na náhodné pozici a nebo je zaměněn za nějaký úplně jiný někdy i s vysokým UTF kódem např. vyžším než 8000 a nebo nějakým kolem 200 apod. Je to zcela náhodné a není při tom vyvolána žádná vyjímka. Chybu čtečky jsem zavrhnul,protože to za prvé dělá na více modelech a za druhé např. do poznámkového bloku mohu načíst kód třeba 200x a žádná chyba se nestane! Zajímavý poznatek je,že stejně náhodně je načtený kód komolen i když ho načítám do JAVA vývojového prostředí NetBeans. Řeším tento problém už několik týdnů a začínám z toho pomalu šílet. Potřebuji nutně aby bylo čtení 100% bez chyby. Nemá prosím někdo zkušenost s tímto zcela nepochopitelným problémem? Poraďte prosím.

Děkuji Tomáš Langer.

takto to například vypadá při testu čtení stejného kódu v NetBeans...

05013872
05013872
05013872
0501õ872
0½013872
н013872
05013872
05013872
0501k872
05013872
05013872
0501»872
05013872
05013872
05013872
05013872
05013872
ˆ5013872
05013872
05013872
05013872
0501387‚
05013872
05013872

Nahlásit jako SPAM
IP: 89.190.73.–
KIIV
~ Moderátor
+43
God of flame
5. 2. 2013   #2
-
0
-

a neda se tam zmenit treba znakova sada u inputu? (a prinejhorsim to udelas v necem jinym :D)

mozna jeste odchytavat primo znaky globalneji v aplikaci ... nebo zjistit co presne za sileny cisla to je a na bitove urovni srovnat co tam ma byt a co je tam navic.. treba by to slo zlikvidovat prubezne

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Avatar780
Duch
5. 2. 2013   #3
-
0
-

#2 KIIV
Znakova sada je nastavena pro celou JAVA aplikaci a standartne je to tusim UTF-8. Prijde me ale zvlastni,ze by nastaveni znakove sady zpusobovalo takoveto nahodne chyby. Nejak se me tomu nechce verit. Hrozna moznost nalepit tam dialog udelany treba v C++ me uz taky napadla,ale to bych videl jako hodne nouzove reseni. Neni to spojene pevne se zbytkem grafiky aplikace a tak se mohou vyskytnout i jine dalsi problemy. Uzivatele jsou narocni. Dalsi veci je,ze bude znat na pohled,ze to tam nepatri.

Nahlásit jako SPAM
IP: 89.190.73.–
Avatar780
Duch
5. 2. 2013   #4
-
0
-

#2 KIIV
Hmm no to bych mohl prozkoumat jestli by to slo chytat na nizsi urovni a jestli se to neda umravnit nejakou bitovou maskou. Akorat to neudelam v pripade,ze to ten znak uplne vynecha coz bohuzel dela taky. Jdu dal experimentovat a ozvu se s vysledky   

Nahlásit jako SPAM
IP: 89.190.73.–
Řešení
Avatar780
Duch
5. 2. 2013   #5
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Tak jsem na to konečně přišel. Nevím proč se to projevilo jen v JAVE,ale každopádně takhle to bude lepší i pro ostatní programy.
Zjistil jsem,že čtečka je nastavena tak,že emuluje numerickou klávesnici a pak sken normálního čísla vypadá nějak takto když jsem si to podrobně rozepsal...

18(�),96(0),100(4),104(8),18(�),96(0),101(5),99(3),18(�),96(0),100(4),104(8),18(�),96(0),100(4),105(9),18(�),96(0),101(5),97(1),18(�),96(0),101(5),102(6),18(�),96(0),101(5),101(5),18(�),96(0),101(5),96(0),10
---------------------------------------
05013872

nad tou čarou jsou kódy všech kláves které ta čtečka zmáčkne aby poslala načtený kód do textového políčka. Dělá to přes stisk klávesy ALT a číselné kombinace která označuje
ASCII kód čísla které to chce napsat. Asi jen v JAVE se pak ale náhodně stávalo,že to textové políčko přijalo klávesy ve špatném pořadí a tím pádem z toho byl jiný nebo žádný znak!!!

No takže pokud použiješ přiložený kód k nastavení čtečky aby numerickou klávesnici neemulovala pak vypadá načtení nějak takhle...

48(0),53(5),48(0),49(1),51(3),56(8),55(7),50(2),10
---------------------------------------
05013872

Je to mnohem rychlejší a hlavně už to nedělá ty chyby.

Tady je ten čárový kód. Jo a samozřejmě k tomu aby to fungovalo je třeba aby měla aplikace zvolenu anglickou klávesnici protože u české to bude dávat české znaky.

Nahlásit jako SPAM
IP: 89.190.73.–
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, 14 hostů

Moderátoři diskuze

 

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