Kom ihåg mig?
Home Menu

Menu


Fördröja inläsning från tangentbordet

Ämnesverktyg Visningsalternativ
Oläst 2008-02-25, 21:43 #1
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
Hej.

Jag har nu införskaffat mig en Magtek Sureswipe USB-ansluten HID-kompatibel magnetkortsläsare för att leka lite med men för senare användning i ett projekt jag arbetar med.

Jag håller på att bygga ett javascript-program som skall fånga upp tecknen som läsaren "knappar in" på tangentbordet, då den emulerar ett tangentbord.

Så, scriptet fungerar nu så att den bevakar varje knapptryckning. Om den nu skulle stöta på ett starttecken eller teckensekvens, tillexempel tecknet (%) (obs, ej paranteserna), så håller den inne på detta tecken och tar en tidsstämpel. Sen mäter den tiden tills nästa tecken matas in. Om tiden understiger 40 ms så triggas scriptet och går in i ett "inläsningsläge" där all data från "tangentbordet" lagras i en variabel tills [enter] dyker upp. Då avslutas inläsningsläget och något annat händer med den inlästa datan, tex behandlas av en funktion.

Problemet är att när jag håller inne på starttecknet och det skulle visa sig att det går mer än 40 ms tills nästa tecken knappas in så har denna teckeninmatning gått förlorad. Jag kan alltså inte knappa in något på sidan som innehåller något av triggtecknen.

****** HÄR ÄR FRÅGAN!!! ******
Kan jag på något sätt tömma min hålla-tecken-i-väntan-på-nästa-tecken-stack som om de vore en riktig tangentbordstryckning med hjälp av javascript?

Man kan även använda scriptet för att fånga streckkodsdata med samma metod, är det tänkt. Där är det dock lättare eftersom man kan programmera streckkodsscannern att skicka ett starttecken som tex sällan eller aldrig används av normala användare.
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-26, 10:43 #2
Kurdix Kurdix är inte uppkopplad
Medlem
 
Reg.datum: Jul 2006
Inlägg: 108
Kurdix Kurdix är inte uppkopplad
Medlem
 
Reg.datum: Jul 2006
Inlägg: 108
En streckkodsskanner är väl inget tagentbord?
Har gjort en liknande skript i javascript, men att man knappar in A så kommer det upp ett annat tecken osv.

Hur lagrar du dina tecken? I en array? Isåfall är det ju bara att tömma arrayen eller ta bort senaste knapptryckning.
Och vad menar du med starttecknet? Vad använder du, onkeypress, onkeydown eller onkeyup?

Fungerar ditt skript i alla webbläsare eller satsar du bara på en webbläsare?
Kurdix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-26, 12:45 #3
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
Det beror ju på hur din sida ser ut, men om du vet vilket fält som har fokus när teckeninmatningen börjar så finns det ju en väldigt enkel lösning: sätt fältets value till innehållet i din stack.

Förstår du hur jag tänker?
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-26, 13:42 #4
SimonPs avatar
SimonP SimonP är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2006
Inlägg: 832
SimonP SimonP är inte uppkopplad
Mycket flitig postare
SimonPs avatar
 
Reg.datum: May 2006
Inlägg: 832
I vilket läge använder en vanlig användare %-tecknet ??

Jag tycker din metod låter konstig, jag har gjort en del egna drivrutiner och program till MagTeks produkter, men har aldrig behövt göra på ett sätt som du beskriver.
SimonP är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-26, 15:21 #5
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
Hej.

Jag kanske har varit otydlig i mitt första inlägg:
Allmänt: Det är för en webbläsare som jag skriver programmet.

Kurdix: Streckkodsläsare och magnetkortsläsare är ibland utformade så att de låtsas att de är ett tangentbord som knappar in de tecken som man läser in. Tillexempel kan man programmera streckkodsläsaren så att den skickar tangentkoden för "F12" innan koden kommer. Eftersom F12 oftast inte används i webbläsare som jag stött på så kan man använda den för att webbsidan skall fånga upp inläsningen utan att skriva ut den i det textfält som råkar vara valt för tillfället, för att istället utföra en specifik uppgift.

MMC: Bra idé. Tänkte inte på det. Det borde ju kunna fungera. Får forska i hur man tar reda på vilket fält som för tillfället är fokuserat men det tar väl inte lång tid att finna ut (om du inte genast ger mig svaret, förstås :] ).

SimonP: Vill du dela med dig av metoderna du använder? Jag använder gärna enklare metoder när det står till buds. Min nyfikenhet stillas dock inte så enkelt!
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-26, 15:31 #6
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
Citat:
Originally posted by oddholst@Feb 26 2008, 16:21
MMC: Bra idé. Tänkte inte på det. Det borde ju kunna fungera. Får forska i hur man tar reda på vilket fält som för tillfället är fokuserat men det tar väl inte lång tid att finna ut (om du inte genast ger mig svaret, förstås :] ).
IE har document.activeelement. Vill du att det ska fungera i alla webbläsare får du använda en global variabel och en onFocus-handler, vad jag vet.
MMC är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:29.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017