cbaye Posted December 27, 2006 Report Posted December 27, 2006 Hello Peter, A while back you had asked for beta testers for the New GF MCPpro and EFIS module. I now own both of these (along with Project Magenta) and have a achieved a high degree of integration except for two functions: The mode and range selectors. These, I suspect, operate differently than a traditional encoder or switch and perhaps rely on additional logic. If I plug the EFIS into the Project Magenta Glass Cockpit computer and use GoFlight's "GFKeys" program I can achieve full key-mapping functionality on the Mode and Range knobs, but for some reason they did not include support for the pushbutton functions of the two rotary encoders. I have contacted GoFlight separately on this issue. If I plug the EFIS into the FS computer, I can use FSUIPC to achieve full functionality on all pushbuttons and encoders, except the Mode and range knobs, which tend to act like standard encoders. The people at GoFlight tell me that they are working with you to achieve full support on this module. I would be happy to beta-test any new code but I am only running FS9 not FSX (although I have purchased FSUIPC and WideFS for both platforms). The FSUIPC solution would be far more robust than the GFKeys option in that I could directly access Project Magenta Offsets, Bypassing the keyboard commands entirely. Thanks for listening, - Chris Baye
Pete Dowson Posted December 28, 2006 Report Posted December 28, 2006 If I plug the EFIS into the FS computer, I can use FSUIPC to achieve full functionality on all pushbuttons and encoders, except the Mode and range knobs, which tend to act like standard encoders. That's the way they look to FSUIPC then. The people at GoFlight tell me that they are working with you to achieve full support on this module. They did? They did ask me if I would support it. I said it is difficult with no Goflight gear, and they even mentioned something about sending one. But I also replied that maybe some information about how they work would halp, but I never heard anything fursther. I would be happy to beta-test any new code but I am only running FS9 not FSX (although I have purchased FSUIPC and WideFS for both platforms). I'd need to know how those rotaries wortk if they are a different type of encoder -- I would have expected them to be simply multiway switches. Don't they have detentes/latches? A rotary encoder merely tells me whether you've turned it right or left, and whether fast or slow. Presumably you'd need to assign these two pairs of button readouts to Offset Byte (or Word) Increment and Decrement controls, to operate the relevant PM offsets. What have you tried that doesn't work? Regards Pete
cbaye Posted December 29, 2006 Author Report Posted December 29, 2006 Hello Peter, I made a complete table of switch, encoder and button functions for the GoFlight EFIS and placed them in the attached spreadsheet. Each position of the rotary switches appears to be represented by the states of two or three buttons. Starting from the CCW-most position (lets call this pos 0) and rotating the switch CW the following beheavior is observed: Pos 1 - btn# 16 activated in FSUIPC Pos 2 - btn# 17 activated pressed in FSUIPC Pos 3 - btn# 16 activated pressed in FSUIPC (Last Position) Rotating CCW: Pos 2 - no btn activated in FSUIPC Pos 1 - btn# 16 activated in FSUIPC Pos 0 - no btn activated in FSUIPC If I could see the btn deactivated event I could confirm the beheavior. The question then becomes; How do I make use of this? Are there some user-accessible, non-reserved offsets that could be used to store the state of the rotaries? Once I have stored the state of the rotaries, are there facilities within FSUIPC to monitor them for change events and then activate functions like Keysend or set the states of other offsets? Thanks, - Chris GoFlight EFIS Buttons.zip
Pete Dowson Posted December 29, 2006 Report Posted December 29, 2006 Each position of the rotary switches appears to be represented by the states of two or three buttons. Starting from the CCW-most position (lets call this pos 0) and rotating the switch CW the following beheavior is observed: Pos 1 - btn# 16 activated in FSUIPC Pos 2 - btn# 17 activated pressed in FSUIPC Pos 3 - btn# 16 activated pressed in FSUIPC (Last Position) Rotating CCW: Pos 2 - no btn activated in FSUIPC Pos 1 - btn# 16 activated in FSUIPC Pos 0 - no btn activated in FSUIPC I'm afraid this isn't really, er, scientific, enough for me to program to. Are you certain there's no dependency upon SPEED of turning at all -- for switches identified to it as rotary encoders, it operates a timer. We really do need someone from GoFlight to tell us how these switches behave. Are there some user-accessible, non-reserved offsets that could be used to store the state of the rotaries? There's a Flag assoicated with each switch FSUIPC recognises, and Flags can be used in Conditional button programming and also set and cleared by special controls. See the Advanced Users guide. I think we need information from GoFlight. It is the only sensible course in my opinion. Regards Pete
cbaye Posted December 30, 2006 Author Report Posted December 30, 2006 Hello Peter, I was able to achieve my goal using the FSUIPC Compound Button Function. Lines 76-79 read the mode switch and set the appropriate Project Magenta Display Mode. Lines 93-99, set the range. Thanks for your help, -Chris 76=CU(-170,17)170,16,C2999,5 77=CP(-170,17)170,16,C2999,3 78=CU(+170,17)170,16,C2999,1 79=CP(+170,17)170,16,C2999,4 93=CU(-170,22)(-170,21)170,20,C2999,41 94=CP(-170,22)(-170,21)170,20,C2999,42 95=CU(-170,22)(+170,21)170,20,C2999,43 96=CP(-170,22)(+170,21)170,20,C2999,44 97=CU(+170,22)(-170,21)170,20,C2999,45 98=CP(+170,22)(-170,21)170,20,C2999,46 99=CU(+170,22)(+170,21)170,20,C2999,47
Pete Dowson Posted December 30, 2006 Report Posted December 30, 2006 I was able to achieve my goal using the FSUIPC Compound Button Function. Lines 76-79 read the mode switch and set the appropriate Project Magenta Display Mode. Lines 93-99, set the range. Hey, well done! Actually that gives me enough information too to recognise the rotaries properly as 4 and 8 "buttons" respectively. I see you omitted the 8th on the range -- is that the 5 mile range you've omitted? If I recognise these appropriately in a forthcoming update, you won't mind re-programming them will you? Regards Pete
cbaye Posted December 30, 2006 Author Report Posted December 30, 2006 Actually that gives me enough information too to recognise the rotaries properly as 4 and 8 "buttons" respectively. I see you omitted the 8th on the range -- is that the 5 mile range you've omitted? Yes, the 5 mile range was omitted because the GoFlight unit was not marked for it. If I recognise these appropriately in a forthcoming update, you won't mind re-programming them will you? My pleasure. All in all it was a good excercie as I was able to learn how to program another of your products features. - Chris
RichardL Posted January 4, 2007 Report Posted January 4, 2007 Hi Pete, Even though there is already GF functionality with FSUIPC, I'm looking forward to seeing this new feature added. Thank You, Richard
cbaye Posted January 6, 2007 Author Report Posted January 6, 2007 Peter has completed an FS9 beta version that fully supports GoFlight. It is available in the Downloads and Updates section as V3.716. An FSUIPC.ini code sample to support Project Magenta is listed below. 170 is the joystick number in the sample below. You may have to edit this in your file if your EFIS reports as another number. The usual precutions of backing up your file before editing apply. Also be sure to check for duplicate line numbers. As shown below, these lines go in the [buttons] section. - Chris Baye [Buttons] 100=P170,0,C2999,82 101=P170,1,C2999,96 102=P170,2,C2999,95 103=P170,3,C2999,94 104=P170,4,C2999,93 105=P170,5,C2999,90 106=P170,6,C2999,72 107=P170,8,C2999,74 108=U170,8,C2999,73 109=P170,9,C2999,75 110=U170,9,C2999,73 111=P170,10,C2999,77 112=U170,10,C2999,76 113=P170,11,C2999,78 114=U170,11,C2999,76 115=P170,12,C2999,26 116=P170,13,C2999,14 117=P170,14,Cx010004FA,x14 118=P170,15,C66040,16211 119=P170,16,C2999,5 120=P170,17,C2999,3 121=P170,18,C2999,1 122=P170,19,C2999,4 123=P170,20,C2999,41 124=P170,21,C2999,42 125=P170,22,C2999,43 126=P170,23,C2999,44 127=P170,24,C2999,45 128=P170,25,C2999,46 129=P170,26,C2999,47 130=P170,28,C65883,0 131=P170,29,C65884,0 132=P170,30,C2065,0 133=P170,31,C2064,0
cbaye Posted January 11, 2007 Author Report Posted January 11, 2007 If you are using a sim that does not have specific keystrokes assigned to each Mode or Range switch-position but instead looks to those knobs for simple increment and decrement commands, I have made up this alternate code. It was made to help another simmer who uses PMDG and Level-D products. It can be substituted for lines 119-129 in the code in the previous post. You can change the command portions of lines 120-131 and 160-165 below. Do not change the commands of any other lines unless you have read Pete's documentation. You may renumber lines as required but do not change the order of the lines, as the order of operations is critical to proper function. - Chris ;Begin EFIS Range knob logic ;Increment or decrement Range Knob ;Reads current knob position and last knob position flag 120=CP(F+15,5)170,21,C65883,0;Inc Kohlsman 121=CP(F+15,6)170,22,C65883,0 122=CP(F+15,7)170,23,C65883,0 123=CP(F+15,8)170,24,C65883,0 124=CP(F+15,9)170,25,C65883,0 125=CP(F+15,10)170,26,C65883,0;Inc Kohlsman 126=CP(F+15,11)170,25,C65884,0 ;Dec Kohlsman 127=CP(F+15,10)170,24,C65884,0 128=CP(F+15,9)170,23,C65884,0 129=CP(F+15,8)170,22,C65884,0 130=CP(F+15,7)170,21,C65884,0 131=CP(F+15,6)170,20,C65884,0;Dec Kohlsman ;Clear and set Flags to mark last knob position ;Stores last knob position in joystick #15 flag locations. 132=P170,20,C1004,3846; Clear Flag 15,6 133=P170,20,C1003,3845; Set Flag 15,5 134=P170,21,C1004,3845 135=P170,21,C1004,3847 136=P170,21,C1003,3846 137=P170,22,C1004,3846 138=P170,22,C1004,3848 139=P170,22,C1003,3847 140=P170,23,C1004,3847 141=P170,23,C1004,3849 142=P170,23,C1003,3848 143=P170,24,C1004,3848 144=P170,24,C1004,3850 145=P170,24,C1003,3849 146=P170,25,C1004,3849 147=P170,25,C1004,3851 148=P170,25,C1003,3850 149=P170,26,C1004,3850 150=P170,26,C1003,3851 ;End EFIS Range knob logic ;Begin EFIS Mode knob logic ;Increment or decrement Range Knob ;Reads current knob position and last knob position flag 160=CP(F+15,0)170,17,C65883,0 ;Inc Kohlsman 161=CP(F+15,1)170,18,C65883,0 ;Inc Kohlsman 162=CP(F+15,2)170,19,C65883,0 ;Inc Kohlsman 163=CP(F+15,3)170,18,C65884,0 ;Dec Kohlsman 164=CP(F+15,2)170,17,C65884,0 ;Dec Kohlsman 165=CP(F+15,1)170,16,C65884,0 ;Dec Kohlsman ;Clear and set Flags to mark last knob position ;Stores last knob position in joystick #15 flag locations. 166=P170,16,C1004,3841; Clear Flag 15,1 167=P170,16,C1003,3840; Set Flag 15,0 168=P170,17,C1004,3840 169=P170,17,C1004,3842 170=P170,17,C1003,3841 171=P170,18,C1004,3841 172=P170,18,C1004,3843 173=P170,18,C1003,3842 174=P170,19,C1004,3852 175=P170,19,C1003,3853 ;End EFIS Mode knob logic
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now