Kod: Zaznacz cały
loadusr -W hal_input -K HID
loadrt flipflop count=3
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
loadrt logic count=1 personality=0x203
addf logic.0 servo-thread
net key-1 input.0.key-a => flipflop.0.data => logic.0.in-00
net key-2 input.0.key-b => flipflop.1.data => logic.0.in-01
net key-3 input.0.key-c => flipflop.2.data => logic.0.in-02
net key-out logic.0.or => flipflop.0.clk => flipflop.1.clk => flipflop.2.clk
net jog-x-ena flipflop.0.out => halui.axis.x.select
net jog-y-ena flipflop.1.out => halui.axis.y.select
net jog-z-ena flipflop.2.out => halui.axis.z.select
net knob-minus input.0.key-d => halui.axis.selected.increment-minus
net knob-plus input.0.key-e => halui.axis.selected.increment-plus
setp halui.axis.selected.increment 1
setp halui.axis.jog-speed 100
Pokrętło przepuszcza, czyli na przykład kręcisz pięć pyknięć a maszyna robi jeden krok.
Czasem jest na odwrót, czyli chcesz zrobić jeden krok, a robi dwa...
Czyli do użytku nadaje się średnio.
Może da się to poprawić, a może ten typ tak ma...
Klawiaturę zaprogramowałem pod Windows, jako klawisze a,b,c i pokrętło d,e,f.
Do hal_input jest bardzo skromna dokumentacja. Na początku w ogóle nie chciało mi to działać, ale chyba zrozumiałem o co chodzi. Każde urządzenie ma jakąś nazwę, np. "AT Translated Set 2 keyboard", ale podanie pełnej nazwy kończy się wywaleniem błędu. Trzeba podać jedno slowo, które będzie szukane w nazwach urządzeń.
Klawiaturka nazywa się HID 1189:8890 Keyboard, więc jako argument jest podane HID...
Reszta to już elementarna logika. Element logic użyty jako trójwejściowa bramka OR steruje wejściem CLK trzech przerzutników flipflop. Brzmi to skomplikowanie, ale działa bardzo prosto - wciśnięcie jednego z trzech klawiszy powoduje zapamiętanie który był wciśnięty. Służy to do wybrania aktywnej osi. Bez tego trzeba by dany klawisz trzymać cały czas.
Parametry halui.axis.selected.increment i halui.axis.jog-speed można sobie ustawić według upodobania.
Wciśnięcia pokrętła nie zaimplementowałem, bo nie miałem pomysłu do czego go użyć...
Jak pisałem, działa to tak sobie, ale za 20 PLN to może znajdzie amatorów...