Jump to content
The simFlight Network Forums

gr8guitar

Members
  • Posts

    157
  • Joined

  • Last visited

Posts posted by gr8guitar

  1. Hello spokes2112. Thank you for your reply. Actually CpitCmdrSetValue is a Lvar from Glenn Copeland's Cockpit Commander gauge. It can be found at library.avsim.net or flightsim.com, or at least it used to be there. It is a great gauge in that it's easy to insert data directly for Nav/Com and autopilot parameters. It has a "keyboard" of numbers, so say you want the AP altitude to be 8500. Just "type" 8500, then hit the ALT button and that value goes into AP's altitude. btw: when the ALT button is "pressed" CpitCmdrSetValue is set to 0 (zero). This is required so a new value can be inserted. It's really nice for the Nav/Com frequencies. I've taken that gauge and added more features for my own use. Now use that function along with WideFS on a touchscreen tablet and life is easy. However, unless there is a way that I don't know about (high possibility), I can't see the L:CpitCmdrSetValue on the remote computer. The next step I took was to implement this idea using Excel. Excel talks to FSUIPC rather nicely with the offsets. I don't know if Excel can talk to Lvar's, that would be even easier, if so, what is the format for a Lvar in Excel? I know Excel can talk to the offsets so if I can move the Lvar into an offset, I can see that value on the tablet. Thanks for the lua tip.

  2. Hello. I am able to read an offset and insert a value into a Lvar. However, per Paul Henty and dagoston93 examples above, I attempted to have a Lvar value being inserted into an offset 66CD as follows; with no luck (the Lvar exists). I am using the FSUIPC logging option to check 66CD:

    function writeFDCmdr(varname, value)

       ipc.writeUW(0x66CD, value)

    end

    event.Lvar("L:CpitCmdrSetValue",100,"writeFDCmdr")

    BTW: Shouldn't the ipc.readLvar(Lvar name) be used first? I did try it but to no avail. Do any of you see an obvious reason why the above lua doesn't work?

    I tried this too, with no success:

     

    function writeFDCmdr(varname, value)

      ipc.writeFLT(0x66CD, value)

    end

    writeFDCmdr("CpitCmdrSetValue",ipc.readLvar("CpitCmdrSetValue"))

    event.Lvar("CpitCmdrSetValue",100,"writeFDCmdr")

     

    also, is there a way to reload a lua without having to shutdown FS and restart it?

     

     

  3. Boy Pete! You've got to take a chill pill.

    1) Again, you assume because it's so obvious to you that it should be obvious to everyone. Basics are important and I know you don't have time to teach basics on a continuous basis but perhaps providing a little background information can go along way.  I had the correct format: ipc.writeSTR(0x66CC, "a")  but what I did forget to notice was in the logging tab, under Type, there was an AsciiZ option (not sure what the Z is for).  And I did forget number shown was a decimal number converted from hexadecimal converted from ASCII. In the original example, I had: ipc.writeSTR(0x66CC,"Fly") where the logger showed  7957574. After further research I found 7957574 is 796C46(h), which looks like y-l-F. I was looking directly for the text itself. 

    2) I wrote above that I did see this:  There are no addon developers in a position to do anything yet. Ask again in about 6 months. ☺️ This was in reference to the MSFS 2020 question where I indeed I search and found an answer and ended with a smiley face to show "I got it."  I did not find it in the FAQ or Announcements sections - hence asking directly. 

    3) You wrote: Sorry if you natural language is not English. Why would you assume this !?!?!?:   This came off rude, prejudice and totally unnecessary. We've been conversing about FSUIPC for several years, I don't recall that there was a language issue before. And my profile shows locationusa. We do have many people that speak many different languages here but English is the official language here - especially among pilots - real and/or simmer.

     

     

     

     

     

     

     

    0

  4. Hello. You wrote:

    A "Word" is 16 bits, so occupying two bytes. "W66C3" covers 66C3 and 66C4.

    So... if I am understanding this correctly, instead of stating B66C3 and B66C4, I can use W66C3 that covers 66C3 and 66C4; if correct, great to know, thank you. As I mentioned above, I do use lua's and macros - but only if I don't have a choice. I thank you that you did implement conditional programming in FSUIPC. I'm not sure why but I'm still not comfortable with lua's, even though I do see its advantages. Again, thank you for your time and information.

  5. Hello. Thank you for your reply and putting this inquiry in the proper place. You stated:

    Only one Offset condition is possible. You could combine them into on Word by using 66C3 and 66C4 instead, then W66C3=1 would work.

    How does one do that?

    And you stated:

    Too verbose for what? You or the computer? The computer doesn't care, so why do you? And... If you want a neater approach to programming things for FSUIPC, use a Lua plug-in. That's what they are for, to enable you to do things not possible or not easy with rather arcane parmeter lists.

    1) Yes, too verbose for me. I care to reduce typing (wrist issues, etc.) and have a cleaner code, if it's possible. 2) I am using lua's and macros as well but I really try to use FSUIPC.ini as much as possible to keep "things" in one place. The main reason, and as  you can see I do a lot of comments, is when I go back several weeks, months, even years, I can recall the mind-set/logic of what I was attempting to do. If I can have the code in one place, I don't have to go to two more files to re-think.

    As for response to your other answers, thank you. I can at least know what is allowed, or not allowed.

  6. Hello.

    I use a separate computer to either modify or design gauges for the FS. To reduce mouse and

    keyboard control (carpel tunnel syndrome), I use a set of rotary encoders and push buttons. For

    example, I don't have to use the mouse or keyboard to control the default GPS. Then I

    made an "Item Selector" gauge to display the settings.

    I was trying to set up a secondary Compound/(condition)/(check). The reason is not use a lua or

    macro and have the ability to inc/dec.

    attempted but a NO GO:
    n=B66C3=1 B66C5=0 P1,0,C65638,0
    also:
    n=B66C3=1&B66C5=0 P1,0,C65638,0
    also:
    n=B66C3=1, B66C5=0 P1,0,C65638,0

    also tried this to remove C1004's but NO GO (FSUIPC only accepted the first Control):
    200=B66C3=0 CP(F+15,3)1,0,C1004,3843,C65638,0

    So, below worked beautifully but too verbose. This set up is so that operations
    are independent with limited rotary encoders. Any ideas? Thanks.

    FSUIPC.ini, in part:

    4=P1,8,Cx610066C5,x00050001 ;secondary condition dec
    5=P1,9,Cx510066C5,x00050001 ;secondary condition inc
    !1=;    gauge control
    16=B66C5=1 P1,8,C1004,3840 ;panel clr
    17=B66C5=1 P1,8,C1003,3841 ;gauge set
    18=B66C5=1 P1,8,C1004,3842 ;button clr
    19=B66C5=1 P1,8,C1004,3843 ;avionics clr
    20=B66C5=1 P1,8,C1004,3844 ;atc clr
    !1=;
    21=B66C5=1 P1,9,C1004,3840 ;panel clr
    22=B66C5=1 P1,9,C1003,3841 ;gauge set
    23=B66C5=1 P1,9,C1004,3842 ;button clr
    24=B66C5=1 P1,9,C1004,3843 ;avionics clr
    25=B66C5=1 P1,9,C1004,3844 ;atc clr
    !1=;   avionics control
    36=B66C5=3 P1,8,C1004,3840 ;panel clr
    37=B66C5=3 P1,8,C1004,3841 ;gauge clr
    38=B66C5=3 P1,8,C1004,3842 ;button clr
    39=B66C5=3 P1,8,C1003,3843 ;avionics set
    40=B66C5=3 P1,8,C1004,3844 ;atc clr
    !1=;
    41=B66C5=3 P1,9,C1004,3840 ;panel clr
    42=B66C5=3 P1,9,C1004,3841 ;gauge clr
    43=B66C5=3 P1,9,C1004,3842 ;button clr
    44=B66C5=3 P1,9,C1003,3843 ;avionics set
    45=B66C5=3 P1,9,C1004,3844 ;atc clr
    !1=;------- other counters ----------
    122=P1,11,Cx510066C1,x00120001 ; gauge selector
    123=P1,10,Cx610066C1,x00120001
    124=P1,11,Cx510066C2,x00120001 ; button selector
    125=P1,10,Cx610066C2,x00120001
    126=P1,11,Cx510066C3,x00060001 ; avionics selector
    127=P1,10,Cx610066C3,x00060001
    128=P1,4,Cx610066C6,x000B0001 ; counter dec
    129=P1,5,Cx510066C6,x000B0001 ; counter inc
    !1-;
    !1=; Avionics Control
    200=B66C3=0 CP(F+15,3)1,0,C65638,0 ; COM1 frac dec
    201=B66C3=0 CP(F+15,3)1,1,C65639,0 ; COM1 frac inc
    202=B66C3=0 CP(F+15,3)1,2,C65636,0 ; COM1 whole dec
    203=B66C3=0 CP(F+15,3)1,3,C65637,0 ; COM1 whole inc
    204=B66C3=0 CP(F+15,3)1,16,C66372,0 ; COM1 swap
    !1=;
    206=B66C3=0 CP(F+15,3)1,4,C66438,0 ; COM2 frac dec
    207=B66C3=0 CP(F+15,3)1,5,C66440,0 ; COM2 frac inc
    208=B66C3=0 CP(F+15,3)1,6,C66436,0 ; COM2 whole dec
    209=B66C3=0 CP(F+15,3)1,7,C66437,0 ; COM2 whole inc
    210=B66C3=0 CP(F+15,3)1,17,C66444,0 ;COM2 swap
    !1=;  etc.
    !1=; Gauge control
    250=B66C1=1 CP(F+15,1)1,0,C66299,0 ; autobrake dec
    251=B66C1=1 CP(F+15,1)1,1,C66298,0 ; autobrake inc
    252=B66C1=2 CP(F+15,1)1,0,C66322,0 ; DH dec
    253=B66C1=2 CP(F+15,1)1,1,C66321,0 ; DH inc
    254=B66C1=3 CP(F+15,1)1,0,C65662,0 ; OBS 1 dec
    255=B66C1=3 CP(F+15,1)1,1,C65663,0 ; OBS 1 inc
    256=B66C1=3 CP(F+15,1)1,2,C1026,0 ; OBS 1 dec fast
    257=B66C1=3 CP(F+15,1)1,3,C1027,0 ; OBS 1 inc fast
    !1=; etc.
    !1=;Note that many controls are "self inc/dec"
    !1=;
    327=B66C3=2 CP(F+15,3)1,0,C66628,0 ;GPS PAGE DEC
    328=B66C3=2 CP(F+15,3)1,1,C66627,0 ;GPS PAGE INC
    329=B66C3=2 CP(F+15,3)1,2,C66626,0 ;GPS GROUP DEC
    330=B66C3=2 CP(F+15,3)1,3,C66625,0 ;GPS GROUP INC
    331=B66C3=2 CP(F+15,3)1,16,C66624,0 ;GPS CURSOR
    !1=; just a bit faster rotary switch
    332=B66C3=2 CP(F+15,3)1,13,C66628,0 ;GPS PAGE DEC
    333=B66C3=2 CP(F+15,3)1,12,C66627,0 ;GPS PAGE INC
    334=B66C3=2 CP(F+15,3)1,4,Cx610066C6,x000B0001 ;GPS/Audio SEL dec
    335=B66C3=2 CP(F+15,3)1,5,Cx510066C6,x000B0001 ;GPS/Audio SEL inc
    !1=;
    !1=;these controls are toggle PB
    !1=;
    336=B66C6=0 CP(F+15,3)1,17,C66604,0 ;[NRST]
    337=B66C6=1 CP(F+15,3)1,17,C66605,0 ;[OBS]
    338=B66C6=2 CP(F+15,3)1,17,C66606,0 ;[MSG]
    339=B66C6=3 CP(F+15,3)1,17,C66609,0 ;[FPL]
    340=B66C6=4 CP(F+15,3)1,17,C66611,0 ;[TERR]
    341=B66C6=5 CP(F+15,3)1,17,C66612,0 ;[PROC]
    342=B66C6=6 CP(F+15,3)1,17,C66616,0 ;[ZOOMOUT]
    343=B66C6=7 CP(F+15,3)1,17,C66615,0 ;[ZOOMIN]
    344=B66C6=8 CP(F+15,3)1,17,C66617,0 ;[DTO]
    345=B66C6=9 CP(F+15,3)1,17,C66618,0 ;[MSG]
    346=B66C6=10 CP(F+15,3)1,17,C66619,0 ;[CLR]
    347=B66C6=11 CP(F+15,3)1,17,C66623,0 ;[ENT]
    !1=;
    !1=; Gauge control
    350=B66C1=1 CP(F+15,1)1,0,C66299,0 ; autobrake dec
    351=B66C1=1 CP(F+15,1)1,1,C66298,0 ; autobrake inc
    352=B66C1=2 CP(F+15,1)1,0,C66322,0 ; DH dec
    353=B66C1=2 CP(F+15,1)1,1,C66321,0 ; DH inc
    354=B66C1=3 CP(F+15,1)1,0,C65662,0 ; OBS 1 dec
    355=B66C1=3 CP(F+15,1)1,1,C65663,0 ; OBS 1 inc
    356=B66C1=3 CP(F+15,1)1,2,C1026,0 ; OBS 1 dec fast
    357=B66C1=3 CP(F+15,1)1,3,C1027,0 ; OBS 1 inc fast
    etc.
    !1=;
    430=B66C6=0 CP(F+15,3)1,18,C66463,0 ;Com1 Xmit
    431=B66C6=1 CP(F+15,3)1,18,C66464,0 ;Com2 Xmit
    432=B66C6=2 CP(F+15,3)1,18,C66465,0 ;Com1/2 Recv tog
    433=B66C6=3 CP(F+15,3)1,18,C65842,0 ;Nav1 ID
    434=B66C6=4 CP(F+15,3)1,18,C65843,0 ;Nav2 ID
    435=B66C6=5 CP(F+15,3)1,18,C66477,0 ;MKR ID
    436=B66C6=6 CP(F+15,3)1,18,C65844,0 ;Dme1 ID
    437=B66C6=7 CP(F+15,3)1,18,C65845,0 ;Dme2 ID
    438=B66C6=8 CP(F+15,3)1,18,C65846,0 ;Adf1 ID
    439=B66C6=9 CP(F+15,3)1,18,C66559,0 ;Adf2 ID

    A picture of the item selector gauge is attached. Wherever the blue light is (66C5), those are the parameters that are controlled.

     

    FS9_rotary_encoders.PNG

  7. Hello. I do not think I wrote:  ival = ipc.readLvar("L:Board",val) .  What is ival? And thanks for the correction of the syntax. I was going by what it took to read a Lvar, but I did not understand how to write the Lvar to an offset. In my frustration/impatience, I ended up making an X vs Y graph in the gauge itself instead of using Excel. But now that I have the syntax, I'll use it next time. Graphing in XML is a bit awkward and verbose. Thanks for the information. BTW, in case someone else has solved the Flight Director (FD) problem, that is the end goal here. It has frustrated me for years that the default FD does not always match the CDI and GS when flying an ILS approach in manual mode. Real Boeing FD's do. I have finally decided to tackle that issue and PID is a way to get there - sort of. MS FS2004 (FS9), and I think FSX (don't spend too much time with it) default Autopilot seems to follow a typical PID with the exception of: Max. Bank Angle, Max. Bank Acceleration, Max. Bank Velocity. The Max. Bank Angle, I get and got it working, I currently don't understand how Max. Acceleration and Max. Velocity fit in Mathematically. As a private pilot though, I was taught, for example, when banking at 30°, the lead-in to level out would start about 15° (half the bank angle) from the desired heading.  What I observed from the FS is a slight PID "hunt" and not a lead-in. My take is, this is where the Max. Acceleration and Velocity fit in. If anyone knows, please let me know.

    Work-In_Progress-of-PID-gauge.thumb.PNG.79b8e2e582189b0b1167af15c43004b5.PNG

  8. Ah yes. It's been awhile since I last was flight simming. I had forgotten my own work. And I still don't have access to my books and other documents, or my old hardware since our house was repaired from a flood a year ago. I do recall that range now. So for anyone else that needs a simple example:

    1) fsuipc.ini:

    [Auto]
    1=Lua ShowLvar

    [LuaFiles]
    1=ShowLvar

    [Keys]
    0=36,8,L1:R,0

    [Buttons]
    1=P10,10,Cx610066C0,x00090001
    2=P10,11,Cx510066C0,x00090001.

    This counts up/down 1 at a time up to 9 . PS, can use keys too.

    BTW: I think the actual datatype for 66Cx is SB, not UD.

     

    2) ShowLvar.lua (taken from some other example):

    function Board(offset, val)
    val = ipc.readUD(0x66C0)         
        ipc.writeLvar("L:BOARD", val)
    end

    event.offset(0x66C0,"UD","Board")

    3) ShowLvar.xml 

    <Element>
          <Visible>(L:BOARD, number) 8 &lt;= </Visible>
          <Position X="25" Y="13"/>
          <Text X="80" Y="15" Length="8" Fixed="Yes" Font="arial" Adjust="Left" VerticalAdjust="Top" Color="#EAEAEA"   Bright="Yes">
        <String>%((L:BOARD, number))%!07d!</String>
          </Text>
       </Element>    

     

    4) Running FS2004 (yes, I still primarily use FS2004), under the Modules tab: FSUIPC:
    I have selected a rotary pushbutton , so under the tab of Buttons + Switches, I select the button I want and then click on the box next to: Select for FS control, then select Offset DWord Cyclic Increase (and another button for Offset DWord Cyclic Decrease), say 66C0. Then under Parameter: 1/9. I used the above combination to be able to select different gauges (Nav/Com) using the same rotary switches.

    My thought process must have been to find out if there was another available range. I have not tried writing to 66Cx, but that is now the attempt. I suppose for the ***.lua, it would be...?

    function Board(offset, val)
    val = ipc.readLvar("L:Board",val)        
        ipc.writeUD(0x66C0)
    end

    not sure what to do with the below statement though...

    event.offset(0x66C0,"UD","Board")

    Suggestion? 

    BTW: I think the datatype for 66Cx is SB, not UD.

     

  9. Hello. Thanks for your reply. I do know that FSUIPC can indeed write and read Lvars and from FSUIPC offsets. But as far as I know, the FSUIPC offsets are known. So I guess in other words, are there unused/spare FSUIPC offsets that can be written and read? And if there are FSUIPC unused/spare offsets available, what is/are their address(es) and what would their format be (i.e.: single integer, double integer, etc.)? I wanted to use Excel so I could chart certain (LVar) data. Currently I wrote an XML gauge to chart the data but I prefer Excel.

  10. Okay, back at it again. I know Excel (VBA) can read FSUIPC offsets:

    Dim ElevPosInd As Integer
    If FSUIPC_Read(&HBB4, 2, VarPtr(ElevPosInd), dwResult) Then
    If FSUIPC_Process(dwResult) Then
    Range("a18").Value = Format(ElevPosInd, "000")
    End If
    End If

    But can it read Lvar's (L:SomeValue, number)? If so, what is the format? Thanks.

     

  11. Oh yes, I know I can use LUA, I have it working just fine using the lua's. I was just wondering, if there is a more efficient way, a shortcut within VBA. Thanks for your time and information. And thanks again to Chris Brett whose contribution to allow us to use FSUIPC and VB (actually I use VBA within Excel). Consequently, is there a way to purchase WideFS for FS9 and FSX? I already have the registered FSUIPC versions for FS9 and FSX but I don't want to purchase both FSUIPC and WideFS for FSX.

  12. Hello. Does anyone know if ipc.readLvar and ipc.writeLvar can be used directly in VBA? In other words,  I am able to access the Lvar's indirectly by using a lua to read and write to an unused FSUIPC offset (say 66C7) and then read and write to the LVars (say "L:VSpeed_V1") but I was wondering if vba allowed direct use of ipc.readLvar  and ipc.writeLvar.

  13. Hello. Thank you for your response. I will have to get back to you. When I started up the flight simulator this morning, it gave me all kinds of problems - strange because other than not getting the lua to work, it worked fine last night - ugh!  Change!  :)  I forgot an 'end' command in the lua, geez; tunnel vision. It works perfectly now. Again, thank you for your info. and of course, FSUIPC.

    Okay, a few issues about the other morning: 1) Somehow a '-' got in instead of an '=' in the panel.cfg. 2) When I had unknowingly a sound card failure, I also had gauge issues (gauges using dsd_xml_sound.gau) And 3) Of course the 'end' required in the lua. All resolved except: Now I came across some logic confusing me. In the generic section [Buttons], I have the following:

    27=B66C2=5 PM,18,K65,9 ; [SH]A=Bank Angle Limit dec
    28=B66C2=5 PM,19,K87,9 ; [SH]W=Bank Angle Limit inc

    And in the [Buttons.738]:

    13=B66C2=2 PM,18,K69,9 ;[SH]E =DH dec
    14=B66C2=2 PM,19,K71,9 ;[SH]G =DH inc

    Even though B66C2 had two different values (5 vs 2), the generic buttons wouldn't work until I removed the logic in the [Buttons.738], do you know why?

    Hello. Thank you for your reply. Yes, I can see how using the same buttons in different profiles versus the generic - if there wasn't logic to assist in determining when to execute it - would indeed cause havoc. I had hoped that the logic that the B66C2 would be compared first before going onto the next instruction. The reason I says this is, it comes from a little background in PLC's (programmable logic controllers). A fancy term for another type of computer, most used in industry. Its logic is, as it scans its "rung" , when it comes across a "false" condition, it no longer scans that rung and moves on to the next rung. So the following instructions (logic) within that rung would never be recognized. We're taught, if able, to write the the logic of a known false condition first. 1) In that case, nothing else following the false instruction  gets scanned (read into memory). 2) It speeds up the over all scan rate. - It was worth a try. Knowing that it cannot be done, I can move forward. Again, thanks.

     

     

  14. Hello. Thank you for your response. I will have to get back to you. When I started up the flight simulator this morning, it gave me all kinds of problems - strange because other than not getting the lua to work, it worked fine last night - ugh!  Change!  :)  I forgot an 'end' command in the lua, geez; tunnel vision. It works perfectly now. Again, thank you for your info. and of course, FSUIPC.

    Okay, a few issues about the other morning: 1) Somehow a '-' got in instead of an '=' in the panel.cfg. 2) When I had unknowingly a sound card failure, I also had gauge issues (gauges using dsd_xml_sound.gau) And 3) Of course the 'end' required in the lua. All resolved except: Now I came across some logic confusing me. In the generic section [Buttons], I have the following:

    27=B66C2=5 PM,18,K65,9 ; [SH]A=Bank Angle Limit dec
    28=B66C2=5 PM,19,K87,9 ; [SH]W=Bank Angle Limit inc

    And in the [Buttons.738]:

    13=B66C2=2 PM,18,K69,9 ;[SH]E =DH dec
    14=B66C2=2 PM,19,K71,9 ;[SH]G =DH inc

    Even though B66C2 had two different values (5 vs 2), the generic buttons wouldn't work until I removed the logic in the [Buttons.738], do you know why?

  15. Hello. Thank you for your response. I will have to get back to you. When I started up the flight simulator this morning, it gave me all kinds of problems - strange because other than not getting the lua to work, it worked fine last night - ugh!  Change!  :)  I forgot an 'end' command in the lua, geez; tunnel vision. It works perfectly now. Again, thank you for your info. and of course, FSUIPC.

  16. Hello. Okay, on the onset. I realize that FSUIPC 3 is no longer supported but this function of:

    ipc.macro("XXX:MyMacro")

    Is that already available in FSUIPC 3? On page 4 of the LUA manual, it shows: ipc.macro("macroname"). I have tried: ipc.macro("A321:FCU_100") in attempt to access:

    A321.mcro which has: 12=FCU_100=RX31d10*X8bcc. In FSUIPC.ini, I have: [Keys.A321] 3=76,11,L24:R,0 where I am attempting to access A321.lua. Also, what does the "R" stand for in the L24:R,0. I did search for it but never did find an explanation.

  17. Yes, I'm talking about me (see my other posts) but also others I have read through the years. "I try my hardest, but it is rarely appreciated."  And apparently you don't read well, "Also, numerous times, I have also thanked you for FSUIPC."  how many times do I have to say thanks? "The positives of FSUIPC and its forum far out way its negatives..."  And there are plenty of accolades from many users as well. With an active mind like yours, as far as retirement, I retired in 2000, I'm busier now than when I worked. And doing actually flying is always good :).

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.