Odczyt inputu z klawiatury w czasie rzeczywistym, Klawiatura / czytnik kodów kreskowych |
Odczyt inputu z klawiatury w czasie rzeczywistym, Klawiatura / czytnik kodów kreskowych |
5.10.2004, 13:45:00
Post
#1
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Mam do rozwiązania pewien problem:
Dysponując czytnikiem kodów kreskowych napisać aplikację reagującą na aktywność czytnika i zapisującą kod i inne dane w bazie. Oczywiście jedynym zmartwieniem dla mnie jest przechwycenie z poziomu php (najlepiej w przeglądarce) sekwencjio znaków wypisanych z klawiatury (czytnik kresek jest wpięty równolegle z klawiaturą i generuje cyfry na stdin - tyle informacji a razie mam). Odczyt powinien się odbywac oczywiście bez ingerencji uzytkownika. Pytanie: Gdzie i co poczytać o tym? Dajcie mi lekturkę do obiadu, jeśli macie coś pod ręką. -------------------- |
|
|
5.10.2004, 17:16:10
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) |
Cytat przechwycenie z poziomu php (najlepiej w przeglądarce) Możesz coś przechwycic albo z poziomu php (po stronie serwera), alebo w przeglądarce (po stronie klienta). Poczytać musisz o JavaScripcie, bo to jest narzędzie do działania po stronie przeglądarki, a co za tym idzie klawiatury, itp. Polecam coś o 'dynamic forms'. Przykładowe działanie skryptu: na wejsciu ustaw focus (kursor) w polu w którym ma byc wczytana wartosc z czytnika. Za kazdą zmiana zawartości 'tego' pola formularza (onChange()) zliczaj ilosc zankow w tym polu. Jezeli bedziesz mial ilosc znakow rowną ilosci znaków zczytanych z czytnika (czyli tyle, ile przewidujesz na kod kreskowy), to wyslij formularz (submit). Ten post edytował misterLu 5.10.2004, 17:17:59 |
|
|
5.10.2004, 21:53:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Moge napomkan ze w php sa dostepne strumienie(o ktorych rzadko kto pamieta) takie jak w C - to chyba rozwiazuje problem - moge jutro cos podrzucic nt. - tzn. jakis przykladzik wkleje a manual reszte powie
Ten post edytował null 5.10.2004, 21:54:48 -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
5.10.2004, 22:01:19
Post
#4
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Obu dzieki za naprowadzenie.. a co do strumieni.. zawsze sie ich obawiałem, ale chyba tak jak mówi null - przyszła pora na nie...
Będę wdzięczny za te przykłady. -------------------- |
|
|
5.10.2004, 22:28:00
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Scanner wybacz za brak przykladu - sprobuje wytlumaczyc bo nie moge znalesc skryptu(napisze cos jutro i wkleje jak trzeba). Strumen otwieramy fopenem i korzystamy z standardowych funkcji systemu plikow- jak przeczytac pasek kreskopwy nie wiem za cholere - nie wiem jak jest zoorganizowany strumien(napisz cos ) jakbys cos napisal to moze napisze cos bardziej konkretnego
Pozdro -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
6.10.2004, 06:36:20
Post
#6
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Więc tak.
Póki nie otrzymam czytnika do ręki, cięzko mi powiedzieć coś konkretnego, moge się tylko opierać na informacjach, jakie zleceniodawca mi przedstawił. - Czytnik jest wpięty poprzez rozgałęziacz z portem klawiatury. - Symuluje działanie klawiszy numerycznych - Można mu ustawić poprzedzenie każdej odczytanej sekwencji dowolnym znakiem ASCII Co do aplikacji: Na razie przewiduję dwa moduły: - Jeden pracujący w tle i obsługujący: odczytywanie sekwencji, zapis zdarzenia do bazy. - Drugi pracujący w przeglądarce i obsługujący: drukowanie etykiet "Gość", zapis logu odwiedzin gościa (kto, do kogo, kiedy) Całość ma pracować na zasadzie identyfikacji pracowników na portierniach. Myślałem nad napisaniem tego w JAVie, ale tej dopiero zaczyna się uczyć i za długo by potrwało - php powinno sobie z tym poradzić. -------------------- |
|
|
6.10.2004, 06:40:00
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) |
Scanner: a nie lepiej napisać coś powiedzmy w c siedzącego u klienta, odczytującego te dane i przesylajacego je do php? Albo zaprządz gtk do uaktywnienia php po stronie klienta? No chyba, że jakoś (javascript?) oprogramować przeglądarkę, która po odebraniu określonej liczby cyfr wyśle je do serwera.
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
6.10.2004, 09:01:42
Post
#8
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Ostatni raz pisałem cos w C 7 lat temu niestety.
Przy okazji już wykształcił mi się teoretyczny problem: Co w sytuacji gdy portier generuje etykietke dla gościa a w tym momencie przechodzi przez bramke uprawniona osoba? teoretycznie zadziałają dwie kalwiatury i portier w formularzu zobaczy wpisywane dane czytnika Więc moduł czytnika musiałby pobrać dane z stdin() i od razu je usunąć z bufora - taka operacja powinna IMHO zając nie wiecej niż ułamek sekundy, więc zmieści się pomiędzy dwoma naciśnięciami klawiszy na klawiaturze przez portiera - ale musże miec to na uwadze. -------------------- |
|
|
6.10.2004, 23:47:08
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 26.04.2004 Ostrzeżenie: (0%) |
Scanner, mam prosbe
jak juz bedziesz mial cos konkretnego, w sensie "jak pogryzles temat i co z tego wyszlo" to wrzuc to na forum tutaj osobiscie do tej pory stojac w supermarkecie w kasie obmyslalem sobie na ile sposobow mozna by wykorzystac taki czytnik tylko problem byl zawsze jak zaczac od strony technicznej czekam z niecierpliwoscia na twoje powodzenie Pozdr. K. Ten post edytował nocnyMark() 6.10.2004, 23:47:47 |
|
|
7.10.2004, 08:44:42
Post
#10
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 12.09.2003 Ostrzeżenie: (0%) |
Nie wiem, dlaczego nie chcesz spróbować z JavaScriptem (jak radził misterLu). IMHO jest to najłatwiejszy sposób. W taki sposób oprogramowywałem system do obsługi biblioteki i działał jak marzenie.
-------------------- pozdrawiam
Krzysiek |
|
|
7.10.2004, 09:05:00
Post
#11
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) |
Cytat(scanner @ 2004-10-06 10:01:42) Co w sytuacji gdy portier generuje etykietke dla gościa a w tym momencie przechodzi przez bramke uprawniona osoba? teoretycznie zadziałają dwie kalwiatury i portier w formularzu zobaczy wpisywane dane czytnika Więc moduł czytnika musiałby pobrać dane z stdin() i od razu je usunąć z bufora - taka operacja powinna IMHO zając nie wiecej niż ułamek sekundy, więc zmieści się pomiędzy dwoma naciśnięciami klawiszy na klawiaturze przez portiera - ale musże miec to na uwadze. @scanner: w javie nie bedzie to trudne, poczytaj o standardowym wczytywaniu informacji z inputu, a co do tego zacytowanego problemu, wielowątkowość a to juz troche wyższa szkoła jazdy zoba, masz jeden wątek który nie przerwanie nasłuchuje z czytnika, i jeżeli czytnik się "odezwie" to go obsługuje, dodatkowo wątki które nasłuchują z innych urządzeń dostępowych, czy to czytnik czy cokolwiek innego (koleś za biurkiem i wsio pzdr -------------------- www.tigroup.pl Rozwiązania informatyczne dla sektora MSP.
Projektowanie i tworzenie stron www, dedykowane rozwiązania e-biznes, outsourcing usług programis |
|
|
14.10.2004, 16:50:13
Post
#12
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
No i zdobyłem już czytnik.
Pierwsze eksperymenty wykazują, ze przesyła on do komputera 13 cyfr i znak końca linii. Próby robiłem w notepad.exe - linijka po linijce pokazywał kody wszystkiego co skanowałem. mając jeszcze chwile wolnego czasu, próbowałem coś sklecić: Ale nie wyszło... Chyba nie mam natchnienia dzisiaj... Załozęnie jest takie, że czytnik jest podpięty bezpośrednio do komputera, na którym działa oskryptowanie. PHP5 jako moduł. Mógłby mnie ktoś nakierować w dobrą stronę? Prirytetem na chwile obecną jest odczyt wspomnianej sekwencji znaków. Jak to zrobię, to jestem w domu - reszta aplikacji to już betka. -------------------- |
|
|
14.10.2004, 18:18:41
Post
#13
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) |
@scanner
zamiast fgetc() ktore pobiera jeden znak daj fgets() dodajac moze drugi parametr czyli dlugosc lini do pobrania (z tego co mowiles to 13+1 > 13 znakow i znak nowej lini) Powinno śmigać. Pozatym kiedyś coś takiego robiłem w Delphi i działało na zasadzie, że gdy TEdit zmieniał swoją wartość i osiągał te np. 13 znaków to zaczynało się wyszukiwanie. To samo (co już ktoś zaproponował) mógłbyś i ty zastosować. W javascript sprawdzać te znaki i wysyłać formularz gdy będzie ich 13. przecież czytnik wstawia txt "na raz". a jakby ktoś chciałby wprowadzać kod ręcznie to też zadziała. to chyba nawet bardziej miłe dla użytkownika wyjście niż STDIN -------------------- |
|
|
14.10.2004, 18:25:19
Post
#14
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) |
Skrypt poprawnie czyta /dev/stdin, tylko nic nie jest przekazywane przez wejście tego procesu.
Spróbuj odpalić ten skrypt z lini poleceń: php skrypt.php Wtedy po naciskaniu przycisków na klawiaturze itp. wszystko działa. Trzeba znaleść jak sprawdzać dane wchodzące na wszystkie wejścia a nie tylko na jedno. |
|
|
14.10.2004, 20:11:23
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) |
a te kody wczytywane z czytnika mają jakąs sumę kontrolną ?
|
|
|
14.10.2004, 20:52:47
Post
#16
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Nie zagłębiałem się jeszcze w sposoby generowania kodów - ale chyba widziałeś cyferki pod kreskami - jakis algorytm na to jest.
-------------------- |
|
|
14.10.2004, 21:02:48
Post
#17
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) |
co do kodow jeszcze u mnie na forum bylo podobne pytanie:
http://strefaphp.net/index.php?page=forum&...iew_topic&t=114 -------------------- |
|
|
15.10.2004, 06:46:46
Post
#18
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Dzięki za link.
Co do generowania kodu - informatyk firmy ma już w głownej aplikacji odpowiednie implementacje i wybrany sposób kodowania. Co do problemu. Wymysliłem na razie (teoretycznie) coś takiego:
Na razie czytam o wielowątkowości w Javie, ale chyba jestem lekko za słaby jeszcze na ten język, poza tym ambicjonalnie chciałbym udowodnić zleceniodawcy, że to jest możliwe do wykonania w php/MySQL. -------------------- |
|
|
16.10.2004, 12:45:48
Post
#19
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) |
Nie jestem pewien ale chyba musisz tez wziasc pod uwage ze user w czasie kozystania ze skryptu moze robic cos innego i musialbys jakos sprawdzac czy te dane które "strażnik (Sentinel.php)" bedzie wczytywał w tle, będą tymi które chcesz nasłuchiwać...
|
|
|
16.10.2004, 13:33:46
Post
#20
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) |
No przecież napisał że skrypt będzie sprawdzał czy sekwencja ma odpowiednią długość i czy pasuje do wzorca. Wystarczy dobrze czytać :]
|
|
|
Wersja Lo-Fi | Aktualny czas: 20.09.2024 - 23:03 |