Jump to content
The simFlight Network Forums

yvesb

Members
  • Posts

    25
  • Joined

  • Last visited

Posts posted by yvesb

  1. Here is my list of events and the Java code I am using.

    All this works perfectly with PMDG 737 Prepar3D but not with 2020.

    // CDU
    #define EVT_CDU_L_L1                                    (THIRD_PARTY_EVENT_ID_MIN + 534)    
    #define EVT_CDU_L_L2                                    (THIRD_PARTY_EVENT_ID_MIN + 535)    
    #define EVT_CDU_L_L3                                    (THIRD_PARTY_EVENT_ID_MIN + 536)    
    #define EVT_CDU_L_L4                                    (THIRD_PARTY_EVENT_ID_MIN + 537)    
    #define EVT_CDU_L_L5                                    (THIRD_PARTY_EVENT_ID_MIN + 538)    
    #define EVT_CDU_L_L6                                    (THIRD_PARTY_EVENT_ID_MIN + 539)    
    #define EVT_CDU_L_R1                                    (THIRD_PARTY_EVENT_ID_MIN + 540)    
    #define EVT_CDU_L_R2                                    (THIRD_PARTY_EVENT_ID_MIN + 541)    
    #define EVT_CDU_L_R3                                    (THIRD_PARTY_EVENT_ID_MIN + 542)    
    #define EVT_CDU_L_R4                                    (THIRD_PARTY_EVENT_ID_MIN + 543)    
    #define EVT_CDU_L_R5                                    (THIRD_PARTY_EVENT_ID_MIN + 544)    
    #define EVT_CDU_L_R6                                    (THIRD_PARTY_EVENT_ID_MIN + 545)    
    #define EVT_CDU_L_INIT_REF                                (THIRD_PARTY_EVENT_ID_MIN + 546)    
    #define EVT_CDU_L_RTE                                    (THIRD_PARTY_EVENT_ID_MIN + 547)    
    #define EVT_CDU_L_CLB                                    (THIRD_PARTY_EVENT_ID_MIN + 548)    
    #define EVT_CDU_L_CRZ                                    (THIRD_PARTY_EVENT_ID_MIN + 549)    
    #define EVT_CDU_L_DES                                    (THIRD_PARTY_EVENT_ID_MIN + 550)    
    #define EVT_CDU_L_MENU                                    (THIRD_PARTY_EVENT_ID_MIN + 551)    
    #define EVT_CDU_L_LEGS                                    (THIRD_PARTY_EVENT_ID_MIN + 552)    
    #define EVT_CDU_L_DEP_ARR                                (THIRD_PARTY_EVENT_ID_MIN + 553)    
    #define EVT_CDU_L_HOLD                                    (THIRD_PARTY_EVENT_ID_MIN + 554)    
    #define EVT_CDU_L_PROG                                    (THIRD_PARTY_EVENT_ID_MIN + 555)    
    #define EVT_CDU_L_EXEC                                    (THIRD_PARTY_EVENT_ID_MIN + 556)    
    #define EVT_CDU_L_N1_LIMIT                                (THIRD_PARTY_EVENT_ID_MIN + 557)    
    #define EVT_CDU_L_FIX                                    (THIRD_PARTY_EVENT_ID_MIN + 558)    
    #define EVT_CDU_L_PREV_PAGE                                (THIRD_PARTY_EVENT_ID_MIN + 559)    
    #define EVT_CDU_L_NEXT_PAGE                                (THIRD_PARTY_EVENT_ID_MIN + 560)    
    #define EVT_CDU_L_1                                        (THIRD_PARTY_EVENT_ID_MIN + 561)    
    #define EVT_CDU_L_2                                        (THIRD_PARTY_EVENT_ID_MIN + 562)    
    #define EVT_CDU_L_3                                        (THIRD_PARTY_EVENT_ID_MIN + 563)    
    #define EVT_CDU_L_4                                        (THIRD_PARTY_EVENT_ID_MIN + 564)    
    #define EVT_CDU_L_5                                        (THIRD_PARTY_EVENT_ID_MIN + 565)    
    #define EVT_CDU_L_6                                        (THIRD_PARTY_EVENT_ID_MIN + 566)    
    #define EVT_CDU_L_7                                        (THIRD_PARTY_EVENT_ID_MIN + 567)    
    #define EVT_CDU_L_8                                        (THIRD_PARTY_EVENT_ID_MIN + 568)    
    #define EVT_CDU_L_9                                        (THIRD_PARTY_EVENT_ID_MIN + 569)    
    #define EVT_CDU_L_DOT                                    (THIRD_PARTY_EVENT_ID_MIN + 570)    
    #define EVT_CDU_L_0                                        (THIRD_PARTY_EVENT_ID_MIN + 571)    
    #define EVT_CDU_L_PLUS_MINUS                            (THIRD_PARTY_EVENT_ID_MIN + 572)    
    #define EVT_CDU_L_A                                        (THIRD_PARTY_EVENT_ID_MIN + 573)    
    #define EVT_CDU_L_B                                        (THIRD_PARTY_EVENT_ID_MIN + 574)    
    #define EVT_CDU_L_C                                        (THIRD_PARTY_EVENT_ID_MIN + 575)    
    #define EVT_CDU_L_D                                        (THIRD_PARTY_EVENT_ID_MIN + 576)    
    #define EVT_CDU_L_E                                        (THIRD_PARTY_EVENT_ID_MIN + 577)    
    #define EVT_CDU_L_F                                        (THIRD_PARTY_EVENT_ID_MIN + 578)    
    #define EVT_CDU_L_G                                        (THIRD_PARTY_EVENT_ID_MIN + 579)    
    #define EVT_CDU_L_H                                        (THIRD_PARTY_EVENT_ID_MIN + 580)    
    #define EVT_CDU_L_I                                        (THIRD_PARTY_EVENT_ID_MIN + 581)    
    #define EVT_CDU_L_J                                        (THIRD_PARTY_EVENT_ID_MIN + 582)    
    #define EVT_CDU_L_K                                        (THIRD_PARTY_EVENT_ID_MIN + 583)    
    #define EVT_CDU_L_L                                        (THIRD_PARTY_EVENT_ID_MIN + 584)    
    #define EVT_CDU_L_M                                        (THIRD_PARTY_EVENT_ID_MIN + 585)    
    #define EVT_CDU_L_N                                        (THIRD_PARTY_EVENT_ID_MIN + 586)    
    #define EVT_CDU_L_O                                        (THIRD_PARTY_EVENT_ID_MIN + 587)    
    #define EVT_CDU_L_P                                        (THIRD_PARTY_EVENT_ID_MIN + 588)    
    #define EVT_CDU_L_Q                                        (THIRD_PARTY_EVENT_ID_MIN + 589)    
    #define EVT_CDU_L_R                                        (THIRD_PARTY_EVENT_ID_MIN + 590)    
    #define EVT_CDU_L_S                                        (THIRD_PARTY_EVENT_ID_MIN + 591)    
    #define EVT_CDU_L_T                                        (THIRD_PARTY_EVENT_ID_MIN + 592)    
    #define EVT_CDU_L_U                                        (THIRD_PARTY_EVENT_ID_MIN + 593)    
    #define EVT_CDU_L_V                                        (THIRD_PARTY_EVENT_ID_MIN + 594)    
    #define EVT_CDU_L_W                                        (THIRD_PARTY_EVENT_ID_MIN + 595)    
    #define EVT_CDU_L_X                                        (THIRD_PARTY_EVENT_ID_MIN + 596)    
    #define EVT_CDU_L_Y                                        (THIRD_PARTY_EVENT_ID_MIN + 597)    
    #define EVT_CDU_L_Z                                        (THIRD_PARTY_EVENT_ID_MIN + 598)    
    #define EVT_CDU_L_SPACE                                    (THIRD_PARTY_EVENT_ID_MIN + 599)    
    #define EVT_CDU_L_DEL                                    (THIRD_PARTY_EVENT_ID_MIN + 600)    
    #define EVT_CDU_L_SLASH                                    (THIRD_PARTY_EVENT_ID_MIN + 601)    
    #define EVT_CDU_L_CLR                                    (THIRD_PARTY_EVENT_ID_MIN + 602)    
    #define EVT_CDU_L_BRITENESS                                (THIRD_PARTY_EVENT_ID_MIN + 605)    


    Example Click INITREF button on the my Java CDU

    Part of the Java code

        private final FSAircraft_PMDG_737 pmdg = new FSAircraft_PMDG_737();
        private final int THIRD_PARTY_EVENT_ID_MIN = 0x00011000;              // equals to 69632 PMDG


        private void INITREFMouseClicked(java.awt.event.MouseEvent evt) {                                     
            sendDATAMouseClick(546, evt);
        } 


        private void sendDATAMouseClick(int valeur, java.awt.event.MouseEvent evt) {

            // #define MOUSE_FLAG_RIGHTSINGLE   0x80000000
            // #define MOUSE_FLAG_MIDDLESINGLE  0x40000000
            // #define MOUSE_FLAG_LEFTSINGLE    0x20000000

            if (evt.getButton() == MouseEvent.BUTTON1) {
                pmdg.WriteCommand(THIRD_PARTY_EVENT_ID_MIN + valeur, 0x20000000);
            }
            if (evt.getButton() == MouseEvent.BUTTON2) {
                pmdg.WriteCommand(THIRD_PARTY_EVENT_ID_MIN + valeur, 0x40000000);
            }
            if (evt.getButton() == MouseEvent.BUTTON3) {
                pmdg.WriteCommand(THIRD_PARTY_EVENT_ID_MIN + valeur, 0x80000000);
            }
        }
        
    The sending to FSUIPC

            public void WriteCommand(int command, int value) {

            byte[] data1 = intToByteArray(Integer.reverseBytes(command));
            byte[] data2 = intToByteArray(Integer.reverseBytes(value));
            fsuipc_wrapper.WriteData(0x3114, 4, data2);
            fsuipc_wrapper.WriteData(0x3110, 4, data1);

  2. Oups !  sorry for the wrong first name ! 🙄

    The H file 2020 is the same as that of Prepard3D :

    Prepar3D :  #define EVT_CDU_L_INIT_REF                            (THIRD_PARTY_EVENT_ID_MIN + 546)

    2020 :         #define EVT_CDU_L_INIT_REF                            (THIRD_PARTY_EVENT_ID_MIN + 546)

    😭

    Should Hvar be used as for several 2020 aircrafts to generate events ?

    Thank you for your always quick response.

    Yves

  3. Hi Peter,

    I developed a small Java CDU application for the 737 PMDG from Prepar3D.

    It works fine using offset 0x5400 for display and offsets 0x3110 and 0x3114 for sending events.
    My CDU works identically to PMDG's CDU.

    When I use the 737 MSFS 2020 version of the PMDG, my display works correctly
    but the sending of events by the buttons no longer works.

    Is the link via offsets 0x3110 and 0x3114 operational with this 2020 version of 737 ?

    Have a nice day,

    Yves

    fmc.png

  4. Allo John,

    I removed the lua script from FSUIPC7.ini and added LvarScanDelay = 60 in FSUIPC_WASM.ini and indeed after 60 seconds the update was activated and all offsets were available.
     
    Thank you
     
    Yves
  5.  

    Your Lucky Luce : Man who reply (shoots) faster than his shadow  😀

    That's Ok, for the moment I reorder the list to place at the beginning what seems to be bytes and I replace the other types at the end.

    All right, for the JNI, I'll try to get the gist of it. A great challenge for a weekend programmer!
     

    Thank you for your help and have a nice day !
     

  6. Allo again !

    Your lua script is working wonderfully. Thank you!

    Since you are thinking of modifying your WASM server, it would be interesting to get the data type when you view the Lvars list. You may need to determine it since the values are exact. Ex: FMC_VOR_FREQUENCY: 1 = 116300000.000000

    I could then correctly generate my configuration lines for the fsuipc7.ini file with my bash script if I had the data type (byte, int, double). Right now I take it for granted that these are all bytes and then correct by hand.

    #!/bin/bash

    offset=0x66C0
    indice=0

    for i in $(cat cj4_lvar_complet.txt | cut -f1 -d" " )
    do

       echo -n $indice=L:$i=UB0x
       printf "%X" ${offset}
       offset=$(($offset +1))
       indice=$(($indice +1))

    echo
    done

    0=L:XMLVAR_YokeHidden1=UB0x66C0
    1=L:XMLVAR_YokeHidden2=UB0x66C1
    2=L:Generic_Master_Caution_Active=UB0x66C2
    3=L:Generic_Master_Warning_Active=UB0x66C3
    ...

    When you talk about Java Native Interface, are you referring to the Wasmer Java framework :

     

  7. Allo John,

    Although I have been using your app for over 10 years, but I do not use macros or Lua scripts.
    So I configure in FSUIPC_WASM.ini LvarScanDelay to the maximum and I still have to reload using the menu.

    The 10 second delay is too short. So i will wait modifying the WASM module to see if 60 seconds will suffice.

    I program with the Fsuipc Java SDK several modifications of the MCP of aeroSystem737 avionics software to make it work
    with other planes than the 737.  I have more then 10 differents home made "MCP"
     

    Hence the interest for me in offsets for lvars; this will allow me to control variables inaccessible with standard offsets.

    It is for this reason that I would like to reload without using the menu because I control all my planes remotely, all the time !

    Would it not be possible to do an automatic recharge of the Lvars at programmable intervals in the FSUIPC_WASM.ini ?

    Thank you for your help

    Capture.PNG

  8. The addition of offsets for the Lvar is a great novelty. However, since the reading of these variables is not done completely when starting planes, we must do a Lvar reload after a while from a menu . Is it possible to create a fsuipc specific offset for reloading variables without having to use the menu?

    Thank you and have a nice day.

    Yves

     

  9.    

    Hello Pete, hello John

    ******** FSUIPC7, Version 7.2.0 (8th June 2021) by John Dowson *********

    Lvar list by fusipc :

    746594   [INFO]:     ID=022 XMLVAR_YokeHidden1 = 0.000000

    in fsuipc.ini   

    [LvarOffsets] 
    0=XMLVAR_YokeHidden1=SW UB 0x66C0     

    log file 

        8406 SimObjects\Airplanes\Asobo_CJ4\aircraft.CFG
         8406 User Aircraft ID 1 supplied, now being used
         8468 Aircraft loaded: running normally now ...
         8984 Aircraft="Cessna CJ4 Citation FFK"
         8984   [INFO]: **** Starting FSUIPC7 WASM Interface (WAPI) version 0.5.1
         8984   [INFO]: Connected to MSFS
         8984 **** Lvar 'XMLVAR_YokeHidden1' not found: cannot add to offset 0x
         8984 System time = 11/06/2021 15:51:44, Simulator time = 15:24:13 (19:24Z)
     

    What am I doing wrong?

    Yves from Canada

     

  10. Yes, no connection

    It works fine with version 5 and Prepar3d v4 and the connection is made on port 8002, but version 7 does not listen on port 8002 (WIDEFS7 not user registered, or expired),  so no link.
    Here is a part of logs

    ********* FSUIPC5, Version 5.157 (26th June 2020) by Pete & John Dowson *********
    Running inside Prepar3D v4
    Module base=7FFEEACF0000
    PREPAR3D.EXE version = 4.5.13.32097
    Reading options from "C:\Prepar3D v4\Modules\FSUIPC5.ini"
    Checking the Registrations now ...
    User Name="Yves..."
    User Addr="yves...."
    FSUIPC5 Key is provided
    WideFS7 Key is provided

      TCP    10.100.100.30:8002     10.100.100.20:51868    ESTABLISHED     9360     InHost

    ********* FSUIPC7, Version 7.0.0-Beta (6th October 2020) by John & Pete Dowson *********
    Reading options from "C:\FSUIPC7-2\FSUIPC7.ini"
    Checking the Registrations now ...
    User Name="MSFS Tester"
    User Addr="Time Limited 311020"
    FSUIPC7 Key is provided
    WIDEFS7 not user registered, or expired

    no LISTENING on port 8002

    No connection from my remote computer; I am using version 7.1.5.9 of the WideClient

    Thank you for your fast anwser and have a nice day

    Yves

  11. For several years I have been programming gauges in Java which I use across the network using the WideClient. From what I understand this is not possible with MFS2020 at the moment since the client version has not been updated.

    Is it possible to use your DLL for .Net and directly query the FSUIPC7- beta or I have to wait for the next WideClient client version ?

    Or, can I use it to query directly SimConnect on port 500.

    Thank you and have a nice day,

    Yves

×
×
  • 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.