You are going to need hardware to do the trick. Either build your own
interface board and driver or find a commercial/open source product.
A few years back I designed and built a set of boards for Aeronvironment for
their Global Observer UAV. They purchased over 20 sets of a complete pilot
workstation. Still have a few spares left on the shelf. I won't give the
boards away, but it you're serious about needing a rotary encoder interface,
can provide same plus the software at costs.
JW
----- Original Message -----
Hi,
I connected an encoder with two outputs (A and B) at a Joystick Board
(bodnar BU0836X). I used button 1 for wire A and button 2 for wire B.
Using xml and nasal script I get the right rotation (I want to move obs
knob). Everything works fine only if I move the knob slowly. If I move
the knob quickly, the result is uncertain.
It's pretty clear that I cannot intercept all the steps of the encoder.
Does anyone have any idea on how to fix it?
Thanks.
Here my files:
<button>
<name>Encoder1A</name>
<number>
<unix>0</unix>
<mac>0</mac>
<windows>0</windows>
</number>
<desc>Encoder1 fase A</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
bodnar.encoder1("A", 1)
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
bodnar.encoder1("A", 0)
</script>
</binding>
</mod-up>
</button>
<button>
<name>Encoder1B</name>
<number>
<unix>1</unix>
<mac>1</mac>
<windows>1</windows>
</number>
<desc>Encoder1 fase B</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
bodnar.encoder1("B", 1)
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
bodnar.encoder1("B", 0)
</script>
</binding>
</mod-up>
</button>
Then this nasal script:
###############################################
var statusA = nil;
var statusB = nil;
var oldStatusA = nil;
var oldStatusB = nil;
var initBodnar = func() {
print ("Loading bodnar.nas");
}
var encoder1 = func(button, status) {
print (button , status);
if(button == "A") {
statusA = status;
}
else if ( button == "B" ) {
statusB = status;
}
if(statusA == statusB) {
if(oldStatusA != statusA) {
direction("cw");
}
else {
direction("ccw")
}
}
else {
if(oldStatusA != statusA) {
direction("ccw");
}
else {
direction("cw")
}
}
oldStatusA = statusA;
oldStatusB = statusB;
}
var direction = func(dir) {
print (dir);
}
#############################################
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Flightgear-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-users