Wysyłanie bajtu klawiaturą

May 13, 2010 18 Replies

Witam



Muszę zrobić oddalony przycisk do pc (kilka metrów). Napiszcie mi czy dobrze kombinuję. Jest sobie pc z odpalonym programem, który nasłuchuje na porcie rs232 określonego bajtu (jak go wykryje to wykona odpowiednią czynność). Z drugiej strony jest 'wybebeszona' klawiatura na PS/2 z pozostawionym jednym przyciskiem. W jaki sposób pożenić obie rzeczy ?



(przycisk) PS/2 to cztery linie (1-clock/2-data/4-gnd/5-vcc)



Jak podłączyć to pod RS232 komputera ? Rozumiem że pin 2 portu PS/2 to wysyłane dane czyli odbierane RxD pc'ta, natomiast do czego służy pin 1 clock ? I co trzeba zewrzeć do masy po stronie PC aby transmisja była możliwa, DTR ?



Pozdrawiam Bartek


Nie da się... To jest zupełnie inny standard transmisji i nie da się tego w prosty sposób pożenić... Jasne, można zbudować prościutki układ, ale to bez sensu - jeśli faktycznie chcesz mieć jeden przycisk, to łatwiej to zrobić tak, że masz jeden przycisk i od razu RS232 :).. Tak czy siak - nie zrobisz tego w prosty sposób... Transmisja w PS/2 jest synchroniczna (jest sygnał CLK, który taktuje dane), a w RS232 jest asynchroniczna (szybkość transmisji jest z góry ustalona i nie jest synchronizowana). To tak w skrócie... Napisz co to jest, co potrzebujesz po tym RSie wysłać i na co masz wpływ :)... Może łatwiej będzie zaadoptować starą mysz na COMa??

Trochę obok tematu:

Jeśli to tylko jeden przycisk, to właściwie wysyłasz 1 bit a nie bajt... Czy w takim razie nie prościej byłoby podłączyć na dwu przewodach byle jaki przycisk (ew. z jakimś układem przeciwzakłóceniowym) i sprawdzać stan np. DTR na złączu RS-232 albo "paper out" na centroniksie, albo nawet przycisk "fire" joysticka?

Chyba, że program już gotowy i nie da się zmienić...

Pozdrawiam,

Zakładałem że to nie będzie takie proste :)

Jak zrobić ten jeden przycisk ? Wiem że jest możliwość zaprogramowania zwykłego avr i po kłopocie, ja szukam jak najprostrzego (i najlepiej gotowego) rozwiązania. Chodzi mi o coś takiego:

formatting link
takiego, najlepiej w kompletnego a nie samego pcb:
formatting link
w prostszej formie - tylko z jednym przyciskiem.

Buduję mały system parkingowy, wszystko już mam mniej więcej przemyślane (oprogramowanie, drukowanie kwitku, stempla czasu w kodzie kreskowym na nim, czytnik) brakuje tylko tego przycisku, koniecznie musi być na rs232.

Potrzebuje wysłać po RSie dowolny znak, ważne żeby to był znak a nie stan lini np. DTR/RTS, szybkość i ustawienia transmisji nie graja roli.

Pozdrawiam Bartek

Dziękuję za odpowiedz. Sprawa ma się tak że mogę się komunikować z komputerem tylko za pośrednictwem rs232 (odpada game port, usb, ethernet, centronics) Do dyspozycji mam serwer 4D i polecenie RECEIVE BUFFER. Dokładny opis komendy tutaj:

formatting link
pytaj dlaczego 4D... po prostu to wymóg. Tym poleceniem mogę odebrać sobie dane (ten jeden bajt) z portu com z dowolnym ustawieniem transmisji. Faktycznie łatwiej by było badać stan linii (przetestowałem i działa), ale w takim wypadku program będzie musiał sprawdzać co jakiś czas jej stan - często), a tego chce uniknąć. Natomiast odbierając bajt, mam o wiele lepszą sytuację gdyż mogę 'nasłuchiwać w tle' odbierane dane nie angażując za bardzo zasobów komputera.

Pozdrawiam Bartek

Użytkownik "kropa" snipped-for-privacy@kropa.pl napisał w wiadomości news:4bec1c97$ snipped-for-privacy@news.home.net.pl...

Pojedynczy impuls +12V o ściśle określonej długości spełnia Twoje wymagania - będzie to pojedynczy znak (np. 0xFF). Potrzebujesz przerzutnik monostabilny lub każde inne urządzenie, które działa w ten sposób i da się wyzwalać przyciskiem. Prostsze od małego procka to nie będzie.

e.

kropa pisze:

Najlepiej byłoby zatrudnić do tej roboty jakiś mikrokontroler, ale możesz spróbować zrobić taką partyzantkę:

10uF ___ RXD ------------||-----+----o o----+ + | | | | | | | | | 10k | | | | | | | | GND -------------------+ | | DTR -------------------------------+

Żeby całość działała na linii DTR musisz mieć ustawiony stan wysoki. Po naciśnięciu przycisku odbierzesz od jednego do kilku bajtów (w zależności jak komu ręka zadrga przy naciskaniu). Prędkość transmisji musisz dobrać eksperymentalnie, zaczynając od 300bps.

Wersja prostsza to linie TXD i RXD połączone przez przycisk. Jak będziesz nadawał dane i przycisk będzie naciśnięty to zaczniesz je odbierać. ___ RXD --------------o o----+ | | TXD ---------------------+

No to nie wiem, czy coś takiego dostaniesz... JA bym to zrobił na AVRze, ale może w tej sytuacji lepiej nie... Masz tu wiele pomysłów kolegów, przyznam, że bardzo fajne wszystkie. Mi się w szczególności podoba sposób ze zwarciem RXD i TXD przez przycisk, który to zaproponował Zbych. Pod jego wątkiem napisałem więcej.... A cały problem jest taki - czy te kilka metrów wiszącego z drugiej strony przewodu nie zadziała jak antena? W sumie wyindukować te +/-12 to nie tak łatwo, dopuszczalna odległość RS232 jest spora, no ale w przypadku właściwego NADAJNIKA! A tu kabel będzie wisieć :/..

Ma to działać w praktyce, czy jest to jakiś projekt na uczelni/w szkole?

Niech komp sam go wyśle - tak będzie najlepiej :)

Użytkownik "Zbych" snipped-for-privacy@onet.pl napisał w wiadomości news:hsh9t6$iem$ snipped-for-privacy@news.mm.pl...

pytanie, czy framing error nie przeszkodzi w ich odbiorze

e.

To jest najlepsze rozwiązanie - proste, a genialne... wystarczy co chwilę coś wysyłać (tak 10..20x na sekundę) i badać, czy przyszło. Dodatkowo, jeśli przyszło, można wysłać dłuższą sekwencję, na przykład losową i też zweryfikować, czy przyszła poprawna. W ten sposób system stanie się odporny na zakłócenia. I jest dosyć prosty w budowie ;)...

Grunt, żeby było "zero" w czasie bitu startu i "jeden" w czasie bitu stopu... . Przy odpowiednim doborze stałej czasowej da się to zapewnić ;)... A kontrolę parzystości raczej wyłączy ;)...

Konop przemówił ludzkim głosem:

Trzeba tylko ustawić możliwie małą prędkość transmisji. Miałem już w ręku takie kable, które po podłączeniu jednego końca do komputera i prędkości transmisji 115200 potrafiły odbierać to co się wysyłało :-)

To jest wlasnie najprostsze i niemal gotowe.

Jesli dowolny znak to wystarczy mono impulsator [555,123, 121].

W zaleznosci od dlugosci bedzie to znak FF, FE, FC .. do 00

J.

Jakie i jakie dlugie ?

Kilanascie metrow plaskiej tasiemki nie ma takich problemow. Moze jakiejs skretki uzyles ?

J.

Zwykły 6-żyłowy płaski, przeznaczony do zaciskania we wtyczce rj-12, długość kilka metrów.

Dziękuje wszystkim za pomysły i podpowiedzi. Spróbuje zrobić sposobem Zbycha (przerywana przyciskiem pętla TXD i RXD).

Pozdrawiam Bartek

Użytkownik "kropa" snipped-for-privacy@kropa.pl napisał w wiadomości news: snipped-for-privacy@news.home.net.pl...

Mowiles, ze masz tylko RECEIVE BUFFER. To sie do wysylania chyba nie nadaje.

No to chyba cos sp*. Testowalem na dluzszym i przesluchow nie bylo, chyba nawet na oscyloskopie trudno bylo cos dostrzec.

J.

Przepraszam za wprowadzenie w błąd, mam jeszcze kilka komend:

formatting link
wysyłania mam polecenia SEND PACKET i SEND VARIABLE

Pozdrawiam Bartek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required