Jump to content
The simFlight Network Forums

Search the Community

Showing results for tags 'Lua'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Product Support Forums
    • FSUIPC Support Pete Dowson Modules
    • MyTraffic Support Forum
    • FeelThere Support Forums
    • FS Commander Support Forum
    • Flying W Simulation
    • AConstable Traffic Sounds Support Forum
    • Fabio Merlo Products Support Forum
    • Elite-Air Studio Support Forum
    • Nikola Jovanovic Support Forum
    • Intrasystems Support Forum
    • Taburet & DanVFR Support Forum
    • Environ Scenery
  • simFlight DE
  • FS MAGAZIN (DE)
  • simRussia

Categories

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Hi, The Lua Plug-ins manual (pdf) has a link referring to a solution for a 64 bits socket library solution. However, this link does not work for me and searching in the User Contribution section for "socket" does not help. Can you please provide a link to the solution for using sockets in 64 bit FSUIPC? Thanks! Emile van Gerwen.
  2. Hi, I upgraded from FSUIPC 6.0.13 to 6.1.0 (Win 10, P3D 5.1 latest HF) and suddenly my coolie on my Saitek yoke, which I use to switch camera settings via LUA code, did not work anymore. Other buttons on the yoke work normally. The buttons are also recognized, if you check them in the FSUIPC UI (button assignments). Only in LUA programs using the event.button trigger the buttons are not trapped anymore. The buttons, which are not recognized, are buttons 32 to 39. I stepped back to 6.0.13 and everything was working again. Upgrading to 6.1.0 and functionality is broken. So I reverted back to 6.0.13 at the moment. The strange thing is, that this only happens in LUA programs. And it's independent from the plane I am using. I checked the FSUIPC6.log file and both detected my hardware completely identically.No errors are shown. Maybe you could check this. Rgds Reinhard FSUIPC6_1_0.logFSUIPC6_0_13.log
  3. Hi all! This is my first attempt with lua, or any code for that matter. I know nothing about programing so pleas bare with me. My first attempt is to get one FSUIPC Offset to change another offset from 0 to 1. But this dose not seem to work. I use MSFS2020 and are using FSUIPC7 I have pot the "test.lua" text file in the root of FSUIPC folder. This is the code I am trying. If (ipc.readUW(0x67E7) == 1) then ipc.writeUB (0x66E2, 1) end
  4. Hey guys, based on the TripleUse.lua i tried to get an more generic and easier to configure script. This supports to easily assign lua functions to button presses but not only for the rising or falling edge of the signal but also for double-press (like doubleclick) or for long press. It is based on Pete's TripleUse.lua but extended to be able to call the funtions that were already defined in other lua scripts like the ones coming with LINDA. You can just refer to it and re-use all the additional stuff like writing something to VRInsight panel displays etc. --[[ 1=BU0836A Interface 2=MFG Crosswind V2 3=FCU / Lights 5=Joystick 7=Controller (GAME FOR WINDOWS >) btnFunc is an multi-dimensional array (lua:table) containing data in the format { joy, button, singlePressFunctionName, doublePressFunctionName, longPressFunctionName } use function name "ignore" to mark an status as unused. ]] btnFunc = { { 3, 7, "DeIce_PITOT_on", "ignore", "DeIce_PITOT_off"}, { 5, 3, "APU_STARTER", "APU_EXTINGUISH_FIRE", "APU_OFF_SWITCH"} } In the 2nd line of the btnFunc "Table"/ array you can see, that the Joystick button three has the APU assigned that way: single short press: APU start double short presses: APU extinguisher fires long press: APU is switched off. Of course that list / array with buttons can be easily extended to all recognized "USB_Gamecontroller_Buttons". I published the more generic TripleUse.lua and TripleUseAssignments.lua on Github. See: https://github.com/joeherwig/msfs-fsuipc-lua-scripts Probably someone might find that useful. Thanks Pete for your support! Joe
  5. Hi, I use a 128 button box and want to use my rotary knobs with FSUIPC. They send short joystick button presses for each direction a different button. But as the are >32, I needed to use a LUA script and/or LINDA. For LUA only, I just used the provided example - it somehow worked, but the refresh rate is very very low (~1 second). Even when setting poll rate = 100. When I use LINDA it gets better, but it is still much to slow reacting. I stopped turning the knob (and no button presses anymore) but the heading bug was still increasing. It is also having around 1 sec delay. Also in the LOG I see this delayed actions. Any advice? Best regards, karlo
  6. Here is a Lua file that progressively apply and/or disengage brakes, adjustable in both directions, for those who only have a button for brakes. [INSTALLATION] FS closed Copy the complete code block below, paste it into an empty .txt file & rename it Smooth_Brake.Lua Place the above file in the FS/Modules folder Add the following to the [Auto] section of the FSUIPC(4).ini file - X=Lua Smooth_Brake - Where X is the next available number in the [Auto] section. (pg. 42 - FSUIPC4 for Advanced Users.pdf) Comment out ( ; ) or remove the original brake button listing in the [buttons] section. Start FS Make sure the button is not programmed through the FS assignments dialog. For a simple, non-complex assignment to the joystick button see the picture below. For a complex assignment see pg. 22 - FSUIPC4 for Advanced Users.pdf - Using something similar to this for a button press - xx=CP(-0,11)0,0,CL6:S,211 and this for release - xx=CU(-0,11)0,0,CL6:C,211. Where 6 is the numbered lua under the [LuaFiles] section of FSUIPC(4).ini in my case as an example. Use the FSUIPC facility, "Reload Buttons", from the user interface in the Buttons tab to confirm assignment. Adjust user settings to ones own liking. Assign a keyboard key to reload the file using Lua Smooth Brake as the control sent to use for reloading tuning modifications. One can use the Logging facilities in FSUIPC, using the right hand side of the dialog (FSX + only), using 0BC4, 0BC6 & 0BC8 with a type of U16, display to FS Window, to help in adjusting user settings. The above settings result in this - 1=P0,0,CL6:S,211 2=U0,0,CL6:C,211 [USAGE] Basically all this does is gradually increase (depending on settings) the brake strength as the assigned brake button is pushed. It also works in reverse, on brake disengagement. One could, for instance press the brake button for only 1 second and after that toggle the brakes on & off at a repetitive rate to keep, lets say, ~ 50% brake strength. It's much better than full on or full off. The settings as given below give around a 2.75 second span between brakes off to full brake strength. Smooth_Brake.Lua - --------------------- USER SETTINGS rate_on = 300 -- RATE AT WHICH BRAKES ARE APPLIED minimum = 3500 -- MINIMUM BRAKES ON FIRST APPLY = REQUIRED PERCENT * 16384 rate_off = 300 -- RATE AT WHICH BRAKES ARE RELEASED dis_pbrake = 1 -- DISENGAGE PARKING BRAKE ON BRAKE APPLICATION? REQUIRES A REAPPLY FOR BRAKE ACTIVATION! diff_brake_override = 0 -- !!!! GIVES AN ALTERNATE DIFFERENTIAL BRAKE AXIS PRIORITY OVER BRAKES -- EXAMPLE - THE "T_FLIGHT HOTAS" ALTERNATE AXIS ON THROTTLE SECTION -- SEE PG.1 "FSUIPC LUA LIBRARY" - "n = ipc.axis(joynum, "axis")" FOR MORE INFORMATION. --------------------- END USER SETTINGS function stop() brake = ipc.readUW(0x0BC4) -- Get Parking Brakes If Button Pressed And Parking Brake Disengage Is Active if ipc.testflag(211) == true and dis_pbrake == 1 then p_brake = ipc.readUW(0x0BC8) -- Disengage Parking Brakes If Set if p_brake == 32767 then ipc.control(65752, 0) end end -- Brakes On while brake < 16383 and ipc.testflag(211) == true do -- Differential Braking Override if diff_brake_override == 1 then -- REQUIRES CUSTOM ATTRIBUTES FOR SPECIFIC HARDWARE special = ipc.axis(0,"S") if special > 1000 or special < -1000 then brake = 0 break end end brake = math.min(16384, brake + rate_on) brake = math.max(minimum, brake) brake_shift = logic.Shl(brake, 16) + brake ipc.writeUD(0x0BC4, brake_shift) end -- Brakes Off while brake > 0 and ipc.testflag(211) == false do -- Differential Braking Override if diff_brake_override == 1 then -- REQUIRES CUSTOM ATTRIBUTES FOR SPECIFIC HARDWARE special = ipc.axis(0,"S") if special > 1000 or special < -1000 then brake = 0 break end end brake = brake - rate_off brake = math.max(0, brake) brake_shift = logic.Shl(brake, 16) + brake ipc.writeUD(0x0BC4, brake_shift) end end event.flag(211, "stop")
  7. Hi all, I have a few technical questions before buying FSUIPC7 because I'm not sure about what I can acheive from FSUIPC7/LUA scripts regarding the SimConnect Indexed variables. As example, I take the Asobo Airbus A320 . Someone has already reported that Offset 07D4 [AP ALTITUDE VALUE] is not working. He gave up thinking it was a bug. I found that Offset 281C or 3102 [Master Battery Switch] are not working neither. After having looked into Microsoft SDK and SimConnect, I found that the A320 FCU AP Altitude is linked to an indexed SimVar [AUTOPILOT ALTITUDE LOCK VAR:3] It seems that FSUIPC7 is not natively looking at this SimVar. Both A320 Battery Push Buttons are a bit more tricky: For the left battery Push button: First, set SimVar BUS LOOKUP INDEX to value 10 Then the state of the left battery can be read at indexed SimVar BUS CONNECTION ON:6 For the right battery Push button: First, set SimVar BUS LOOKUP INDEX to value 11 Then the state of the right battery can be read at indexed SimVar BUS CONNECTION ON:6 So here are my questions : Q1. Is it possible from FSUIPC7 (I guess with Lua Scripts) to access the Indexed SimVars and map them to a free FSUIPC7 offset ? I know it *was* possible to access Local SimVars with Lua scripts, but I want to be sure that we can query the indexed variables, for instance like this : ipc.writeXXX("A:BUS LOOKUP INDEX", 10) LeftBattery = ipc.readXXX("A:BUS CONNECTION ON:6") ipc.writeXXX("A:BUS LOOKUP INDEX", 11) RightBattery = ipc.readXXX("A:BUS CONNECTION ON:6") Q2. Is it possible from FSUIPC7 to log all SimVars and Indexed SimVars ? (in order to identify which one is changing after a few clicks in the virtual cockpit) Oh god, the BUS LOOKUP UP thing is not going to help with this kind of feature... --- Regarding the Local SimVar, I understand that FSUIPC7 has no way to access them. And in fact, Microsoft SimConnect SDK does not provide a way to do this. The only workaround for now is to create a fake gauge and put the local SimVar in the Client Data Area. Then FSUIPC7 would be able to read/write the Local SimVar through the SimConnect SDK.
  8. This was done just to see if it could be made to work. ( too much coffee ☕, insomnia & boredom also contributed ) For the advanced FSUIPC user, gauge programmer, cockpit builder, lua tweaker etc.., a problem arises, at times, where the aircraft designer has code that constantly fires commands into the sim. 👎👎👎 When it comes time to do some logging, for instance, to see what control is being fired, on user input, is tough to find in the FSUIPC console window. The [General] "DontLogThese=" entry in the FSUIPC.ini does a fine job of blocking these. Of course, you could do a text log of the Events (non-axis controls), open the log and find the offending controls and then build up an entry for "DontLogThese=". This lua does it automatically and appends to a text file, appending it so you can have a library of the offending aircraft. An output example of my testing : NOTES : axis pan heading 66504 axis pan pitch 66503 mouse look toggle 66734 misc maddog 70646 --------------------------------------------- Fly The Maddog X MD-82 - North Central N760NC [General] DontLogThese=66557,66556,66523,66479,66478,66466,66463,66442,66239,65962,65836,65833,65832,65709,65708,65707, PMDG DC-6B PMDG House (N6PM | 2017) [General] DontLogThese=66818,66659,66508,66073,66060,65786, P-51D civ 'Providence Permittin' [General] DontLogThese=66508,66507,65764, Lockheed Constellation L049, C69 [General] DontLogThese=66507,65922,65921,65920,65919, 666 F-16D AK375 F [General] DontLogThese=66707,66073,66065,66057,66031, When needed : 1) Assign a temporary key to run the lua (as you named it) 2) Run it with the aircraft loaded, keeping your hands off of any controls ( axis or other ) 3) When its done, it will report so, making, or appending, a file named "NoLogReport.txt" in the modules folder (or wherever FSUIPC is installed) 4) Copy the aircraft's report and paste in to the FSUIPC.ini [General] section, replacing the line if already there. 5) In the FSUIPC UI, go to the Axis Assignment tab and click on Reload All Assignments. Done, the offending controls are now blocked. This was only tested in FSX, I would imagine it would still work from FS9 thru P3Dv4+. The lua : -- USER SETTINGS local startCtrl = 65537 -- THE STARTING CONTROL NUMBER TO BE SCANNED local endCtrl = 68309 -- THE ENDING CONTROL NUMBER TO BE SCANNED local runTime = 3 -- RUN THE CONTROL RECORDER FOR HOW MANY SECONDS, >= 2 (NOT REALLY LEGIT, THERE IS A "LOT" OF BACKED UP FUNCTION CALLS!) -- END USER SETTINGS local cntrlsOut = {} local doesContain = 0 local acftTitle = ipc.readSTR(0x3D00, 256) acftTitle = acftTitle:gsub('%z','') local outString = "\n\n" .. acftTitle .. "\n[General]\nDontLogThese=" function logControl(controlnum, param) doesContain = 0 for _, value in pairs(cntrlsOut) do if value == controlnum then doesContain = 1 end end if doesContain == 0 then table.insert(cntrlsOut, 1, controlnum) end end function countDown(timer) if runTime == 0 then file = assert(io.open("NoLogReport.txt","a+")) for i = 1, #cntrlsOut, 1 do outString = outString .. cntrlsOut[i] .. "," end file:write(outString) file:close() ipc.display("Modules\\NoLogReport.txt was created", 1) ipc.sleep(1000) -- !!! OPTION, OPEN UP THE REPORT.TXT AND FSUIPC.INI -- !!! UNCOMMENT & CHANGE THE PATHS OF YOUR PREFERRED EDITOR AND OUTPUT FILE(S) -- handle1, error1 = ext.runif("E:/Notepad++/notepad++.exe","G:/FSX/Modules/NoLogReport.txt") -- handle2, error2 = ext.runif("E:/Notepad++/notepad++.exe","G:/FSX/Modules/FSUIPC4.ini") -- !!! UNCOMMENT IF THE ABOVE DOES NOT WORK, PROVIDES ERROR DISPLAY -- ipc.display(handle1 .. error1 .. "\n" .. handle2 .. error2, 0, 5) -- ipc.sleep(5000) ipc.exit() end runTime = runTime - 1 end for i = startCtrl, endCtrl, 1 do event.control(i, "logControl") end event.timer(1000, "countDown") Roman
  9. Hi there, I am having a very strange problem with FSUIPC3 in FS2004. A few weeks ago, it suddenly decided to no longer load any of my LUA files. This problem came seemingly out of nowhere. It is not any one specific LUA file, but any LUA file at all. I have tried: Reinstalling FSUIPC Reinstalling FS2004 The specific LUA file I want to use is called FreezeAlt.lua and it looks like this: althi = ipc.readSD(0x574) altlo = ipc.readUD(0x570) while 1 do ipc.sleep(10) -- 10 mSecs = 100 times per sec ipc.writeUD(0x570,altlo) ipc.writeSD(0x574,althi) end I have also noticed after reinstalling FSUIPC, it has not generated an FSUIPC.ini file. Below is a screenshot from FS2004. The LUA module would normally show up above LuaKillAll. Any help is greatly appreciated. 🙂
  10. Hi all, I want to add two offsets to FSUIPC in order to save the value of two Q400 variable. These two offsets will be read by Spad.neXt. So I wrote a LUA script that reads variables value (could be 0 or 255) and writes they to FSUIPC offset 66C0 and 66C3. I need to read both variables continuously so I thought of writing a C# program that every 50ms would write to the 0x0D70 offset, and pass the Lua command with the name of my lua script. From what I understand when the 0x0D70 offset is written FSUIPC executes the indicated script via the indicated command, so I expect to have FSUIPC offset 66C0 and 66C3 filled every 50ms with the value of Q400's variables and ready for Spad.neXt. Any comment/criticism/suggestion about this flow? Cheers, Alessandro
  11. *** Moved from FAQ Support Forum *** Dear fellow simmers, it is a long time since I last modified my flight simulator setup, about 10 years and more! I had built my own console with switches and LEDs, to interface with FSX. It was working until now with FSX and Windows 7. I had programmed it myself using FSUIPC (4 I think) and Visual Basic. Now, just 2 weeks ago I installed Windows 10 and also P3D V4.5. When trying my old program (called RealSwitches) some switches still brought the correct reactions in P3D as they did before in FSX. For example gear up and down still worked. However many things are not working. So I decided to go ahead and write a new program for my old switch console. Reading the FSUIPC documentation I discovered Lua and did some experimenting with it. It generally works, and I tried some of the examples. But what I cannot get working is even the simplest routine using the Lua event library. No event fires. I tried for example timer events and key events. I thought maybe someone here knows or knows where to look. Here is my Lua code, which should just react on pressing the "V" key. From looking at the log file for the lua script I can see that the event function KeyReceived() is never called. The same was the case when I tried with timer events. ipc.display("eins") gCount = 10 ----------------------------------------------------- function KeyReceived() ipc.log("gotcha") gCount = gCount-1 end ------------------------- init ------------------------ event.key(TIC_MS, 86, 0, "KeyReceived") -- Key v (normally make screenshot) event.cancel("KeyReceived") ipc.sleep(50) event.key(TIC_MS, 86, 0, "KeyReceived") -- Key v (normally make screenshot) ---------------------------- loop, event handlers doing their job while gCount>0 do ipc.sleep(50) end ---------------------------- close sOutput = "Fertig" ipc.display(sOutput) ipc.exit() Any help would be most appreciated. Thank you Detlef
  12. I have always wanted to have a "quick and dirty" way to monitor specific L:VARs without installing a new gauge and trying to find the ones needed by scrolling etc. Perfect for things like programming sub-systems and such. It's a 3 step process. Run "LVARS_2_TXT.lua" to get the full list (output = "ALL LVARS.txt") of L:VARs currently loaded by the selected aircraft. It's a "run once" lua but, one can use it multiple times if multiple aircraft projects are being done as it appends to the file. (creates a master list) -OR- Run the FSUIPC command "List local panel variables" to do the same and written to the FSUIPC log (Formatting necessary!) , without using "LVARS_2_TXT.lua" - The former provides a pre-formatted, easy to use output. Pick the LVARs needed to monitor and copy them over into the array in "LVAR_SPECIFIC.lua". NOTE - The output in "ALL LVARS.txt" are pre-formatted for an easy copy --> paste. See notes in lua. Note - The lua display will truncate anything after 1023 characters so if this starts happening reorder your list in priority order. Run "LVAR_SPECIFIC.lua" to monitor your selected L:VARs. LVARS_2_TXT.lua -- "LVARS_2_TXT" Loaded LVARs writer, by Roman Stoviak, September 2015 -- Open an exisitng "All LVARS.txt" file to append to, or create it if it doesn't exist. -- It will go into the Modules folder because I've not included a full path (like "C:\....") -- By using "assert" you get an error message if this fails f = assert(io.open("ALL LVARS.txt","a+")) -- get aircraft name and air file name air, title = ipc.readStruct(0x3C00, "256STR", "256STR") air = air:gsub('%z','') title = title:gsub('%z','') -- write the text headings f:write("_______________________________________________________________\nTITLE, AIR FILE\n" .. title .. ", " .. air .. "\n_______________________________________________________________\n") i = 0 while i < 65536 do name = ipc.getLvarName(i) if name ~= nil then f:write("\"" .. name .. "\",\n") i = i + 1 else break end end -- tidy up at end ... f:write("\n____________________ END OF LIST ____________________\n\n") f:close() ipc.display("A pre-formatted L:VARs list has been created as FSX/Modules/ALL LVARS.txt", 0, 3) ipc.sleep(3000) -- end of program LVAR_SPECIFIC.lua Note - The lua below has the array preloaded with L:VARs "test1" thru "test4" as an example. -- "MONITOR SPECIFIC LVARS" fsuipc display, by Roman Stoviak, September 2015 --[[ NOTES - Enter each L:VAR to monitor by getting the "preformated" list provided by "LVARS_2_TXT.lua". Each L:VAR name MUST be surrounded in quotes and followed by a comma for each the array entry(s). One could use a single line for each L:VAR -or- Place all the L:VARs inline. EX. separate lines "test1", "test2", "test3", "test4", EX. same line "test1","test2","test3","test4", PLACE THE L:VAR LISTING IN THE ARRAY BELOW BETWEEN THE 2 COMMENTS CONTAINING "!!!!!" END NOTES ]] local monitor = { -- COMMENT !!!!! START ARRAY ON NEXT LINE !!!!! "test1", "test2", "test3", "test4", -- COMMENT !!!!! END ARRAY !!!!! } local size = table.getn(monitor) while 1 do local i = 1 local out = "" local disp = "" repeat out = ipc.readLvar(monitor[i]) if out == nil then -- NEW SECTION TO KEEP LUA ALIVE IN CERTAIN SITUATIONS out = "no value" end disp = disp .. monitor[i] .. " = " .. out .. "\n" i = i + 1 until i == size + 1 ipc.display(disp) ipc.sleep(50) end
  13. Hello, I am trying to extract variables from the P3DV4 and store them on a CSV. The given example works great for me. But when I try to write the code myself it doesn't work. Moreover, when I just copy paste the code with varied parameters I still get some error. I have attached the error below along with the code. Please do help me out. CODE-------------------------------------------------------------------------------------------------------------------------------------------- -- "Record to CSV" example data logging LUA plug-in, by Pete Dowson, September 2008 -- Open an exisitng "FSrecord.csv" file to append to, or create it if it doesn't exist -- It will go into the Modules folder because I've not included a full path (like "C:\....") -- By using "assert" you get an error message if this fails f = assert(io.open("FSrecord.csv","a+")) -- write the CSV column headings f:write("\r\vs,mach,bank,BHP,ff,weight,alt,ias,tas,gs\n") -- note the elapsed mSecs count now so can provide relative mSec timing column time0 = ipc.elapsedtime() -- Loop until our Flag 0 is set (by assigned FSUIPC control) while not ipc.testflag(0) do -- Set the timestamp for this loop time = ipc.elapsedtime() - time0 -- Read all the data we want from FSUIPC mach = ipc.readUW(0x11C6) -- mach number vs = ipc.readSW(0x842) -- vertical speed bank = ipc.readSD(0x057C) -- bank angle bhp = ipc.readDBL(0x3820) -- Brake horse power ff = ipc.readDBL(0x0918) -- fuel flow in pounds per hour fw = ipc.readUD(0x1264) -- fuel quantity in gallons alt = ipc.readSD(0x3324) --altimeter reading in feet ias = ipc.readUD(0x02BC) --indicated airspeed --tas = ipc.readUD(0x02B8) --true airspeed --gs = ipc.readUD(0x02B4) --groundspeed ----------------------conversion----------------------- mach = mach / 20480 vs = vs * -3.28084 bank = bank * 360/ (4294967296) --conversion seems wrong bhp = bhp / 570 fw = fw * 6.17 ias = ias / 128 -- but only log this time IF we aren't in an FS menu, or loading scenery -- (check the "ready-to-fly" flag word at 3364) -- and provided we are not paused (flagged at 0264) if (ipc.readUW(0x3364) == 0) and (ipc.readUW(0x0264) == 0) then -- write a CSV line to the open file f:write(string.format("%d,%.3f,%.2f,%.2f,%.2f,%.2f,%d,%d\n",vs,mach,bank,bhp,ff,fw,alt,ias)) end -- 20 times per second, roughly (allow 2 mSecs overhead) ipc.sleep(48) end -- tidy up at end ... f:write("\n") f:close() -- end of example program ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------ERROR------------------------------------------------- ********* LUA: "parameters test1" Log [from FSUIPC version 5.103] ********* 886422 System time = 23/06/2019 08:16:21, Simulator time = 14:05:16 (19:05Z) 886422 LUA: beginning "G:\P3Dv4\New folder\Modules\parameters test1.lua" 886422 *** LUA Error: G:\P3Dv4\New folder\Modules\parameters test1.lua:1: unexpected symbol near 'ï' 886422 >>> Thread forced exit (ipc.exit or os.exit) <<< 886422 System time = 23/06/2019 08:16:21, Simulator time = 14:05:16 (19:05Z) ********* LUA execution terminated: Log Closed ********* *************************************__________________________________________************************************ Thanks in advance
  14. I am running FSUIPC 5 1.03g, registered. I am trying to run a LUA script (via Key Presses section) that I used with P3Dv3 that controls my PMDG 737NGX home made overhead panels, etc. in P3Dv4. I exclusively use UDP to communicate between Arduinos and FSUIPC which uses Lua Sockets. I now get the LUA error: I am assuming this is because I have not compiled a 64 bit version of LUA. I installed the 32 bit version a long time ago and I muddled my way through it with Luarocks version 5.1.x, I believe. My question is, am I on the right path in believing that I need to figure out how to compile it again with 64 bit? I am not very strong on these sorts of things and I can't find any clear cut ways to do it on my Win7-64 box. The searches I am coming up with are all over the map on ways to do it. Has anyone done this yet that could advise on what I need to do or point me to a URL that explains the best way? Thanks in advance, Dustin
  15. Hi, I searched the forum before I post and I saw that someone tried to communicate the Lua script and Arduino. We're sharing the same purposes. Let me say the problem I deal: For PMDG 737, I can control any button, switch in the simulation by sending data from Arduino to Lua script. Also, I have no problem to send data from Lua script to Arduino by using Lvar list in FSUIPC documents. However, I can't read the state of any warning light as Overheat Lights in the overhead panel. Only need to know, what should be the way of reading the state of lights in PMDG 737. If there is a small example or showing a way to go, I will be grateful 🙂
  16. Hello, i hope anyone can help. I am a starter in LUA, but i have to read a Bit out of a 2 Byte Offset. The Offset is 0x04F0 and i want to read Bit number 14 and 6. I tried local psCMD1 = ipc.readUB(0x4F0) for Bit 0 and it works, but how can i read Bit number 14 and 6 ? Pls, can anyone help her? Thanks Matthias
  17. Hello: I am just starting to scratch the surface of using Lua scripts with FSUIPC. I am trying to solve a problem with the Milviz C310 where the prop condition levers do not move into the feather range using my CH Products throttle quadrant. Despite accurate calibration, moving the hardware prop levers aft of the detents does not move the software levers into the feather range, nor does the prop feather animation get displayed. Instead, the Milviz C310 requires users to right-click the prop lever knobs to feather the props. My current calibration does work for other default and payware prop aircraft. In an effort to have the C310 props go into the feather range using my quadrant, I tried using the FSUIPC Axis Assignments GUI to stack two ranges to the prop levers, aft of the detents, to assign the commands: ~ PROP_PITCH1_SET (with a parameter of -1) ~ TOGGLE_FEATHER_SWITCH_1 After doing so, when I move the hardware prop lever aft of the detent, I can see the commands being set using the FSUIPC log as expected; but the animation in the sim does not move the condition levers to the feather range, and the prop feather animation is not displayed. On the Milviz support forum, the aircraft's developer provided a snippet of right mouse click event code that checks a boolean L variable called Prop1_Feathered. The Prop1_Feathered variable represents the feather animation. If the Prop1_Feathered variable is false, then PROP_PITCH1_SET is set to -1 and the TOGGLE_FEATHER_SWITCH_1 command is called, else the reciprocal values are set. This is done for both the left and the right engines. From Milviz: if{ (L:Prop1_Feathered,bool) ! if { 1 (>L:Prop1_Feathered,bool) -1 (>K:PROP_PITCH1_SET) (>K:TOGGLE_FEATHER_SWITCH_1) } els{ 0 (>L:Prop1_Feathered,bool) 0 (>K:PROP_PITCH1_SET) (>K:TOGGLE_FEATHER_SWITCH_1) } } So it seems I need to script the following: If prop 1 axis range is between two values (aft of hardware detent), then set variable L:Prop1_Feathered to true set PROP_PITCH1_SET -1 toggle TOGGLE_FEATHER_SWITCH_1 When leaving the prop 1 axis feather range (forward of hardware detent), then set variable L:Prop1_Feathered to false set PROP_PITCH1_SET 0 toggle TOGGLE_FEATHER_SWITCH_1 I'm not sure, but the latter part of the logic may not be necessary as I suspect that existing Milviz code will set the prop as soon as I move out of the feathered range - will need to test this. Based on what I've read, I think I am supposed to use the FSUIPC GUI to reference a script file, that I create in the Modules folder, that gets called when the axis range is entered or exited. I also suppose that my script file could have a function/method like FeatherProp(int) that accepts one variable: ~ int EngineNumber So my pseudo code might look something like this: FeatherProp(EngineNumber(int) { Feathered bool; if (EngineNumber == 1) { //Getting the current value of the Prop1_Feathered animation variable will likely look something like this Feathered = ipc.readLvar(“Prop1_Feathered”); //Setting the reciprical of the current “Prop1_Feathered” variable may look like this ipc.writeLvar("Prop1_Feathered", !Feathered); //Calling the Toggle Feather Switch command might look like this ipc.control("TOGGLE_FEATHER_SWITCH_1"); if(!Feathered) { //Setting the prop pitch might look like this ipc.control("PROP_PITCH1_SET", -1); } else { ipc.control("PROP_PITCH1_SET", 0); } } else { //Getting the current value of the Prop2_Feathered variable will likely look something like this Feathered = ipc.readLvar(“Prop2_Feathered”); //Setting the reciprocal of the current “Prop2_Feathered” variable may look like this ipc.writeLvar("Prop2_Feathered", !Feathered); //Calling the Toggle Feather Switch command might look like this ipc.control("TOGGLE_FEATHER_SWITCH_2"); if(!Feathered) { //Setting the prop pitch might look like this ipc.control("PROP_PITCH2_SET", -1); } else { ipc.control("PROP_PITCH2_SET", 0); } } } As you can see, I'm a C# developer, so my pseudo code looks nothing like Lua script yet, I still need to work that part out... I have a few questions regarding key concepts of Lua scripting: Generally speaking, am I on the right track from a conceptual standpoint? Can the variable L:Prop1_Feathered (mentioned by the aircraft's developer) be referenced by name in my script, or do I need to log the variables running in the sim and reference the variable using some returned int or hex that represents the L:Prop1_Feathered animation variable? How do I reference my script file using the FSUIPC GUI? Specifically, how do I call my script file's FeatherProp() method passing in the engine number parameter when my hardware prop lever is aft of the detent? On the Axis assignment tab? Am I using the correct IPC commands to read and set my L variable? Am I using the correct IPC commands to set my prop pitch values? Am I using the correct IPC commands to toggle my feather switches? Thank you for your patience as I try to code my first Lua script. Sincerely, Chris
  18. Hello, let me start by thanking Pete for his great work! :-) I am trying to replace the use of link2fs with lua-scripts. link2fs is great and it works but it seems to be no longer supported and while it finally seems to work with P3D V4 again, sooner or later it might cause problems. With the help of fess' and other examples online, I've written the following short script to adjust the QNH. I have verified using the link2fs traffic monitor that the arduino really sends "C25" and "C26" with linefeeds. The "Arduino_Data"-function also gets called, whenever I turn the rotary encoder. But that is as good as it gets. :-/ When I turn the rotary encoder slowly, nothing further happens. No datastring gets shown, nothing happens to the QNH. With the addition of the 50ms ipc.sleep before the datastring is read, the ipc.controls get executed when I turn the rotary encoder fast enough. (I assume that this happens when the com port buffer holds two Cxx-commands, because the datastring-readout that is shown in these case reads "C25C2", so one character is missing. When I am giving out the string length 'n', it is either 0, 5, 10 or 15. Something seems to quantize the datastring to multiples of 5. When I turn other encoders however, whose command is longer (e.g. "Y010"), n is 0, 6, 12, ... I've run out of ideas where the error might be and I'd be thankful for every suggetion where to look. Kind regards from Munich, Frank -------------------------------------------------------- --- VARIABLE INIT -------------------------------------- feet_per_meter = 3.28083989501312 port_number = "3" -- Change Port Number for your Arduino speed = 115200 handshake = 0 serial_wait = 20 -------------------------------------------------------- --- SERIAL COMMUNICATION INIT -------------------------- SwitchPanel_Com_Port = com.open("COM"..port_number, speed, handshake) if SwitchPanel_Com_Port == 0 then ipc.display("Could not open Switch Panel at Com Port"..port_number,5) --ipc.exit() else ipc.display("Switch Panel connected at Com Port "..port_number,5) end ipc.display("SwitchPanel script loaded", 10) -- TEMP -------------------------------------------------------- --- INPUTS --------------------------------------------- -------------------------------------------------------- function Arduino_Data(SwitchPanel_Com_Port, datastring, length) -- the code always gets here ipc.sleep(50) datastring = com.read(SwitchPanel_Com_Port,50,1) ipc.lineDisplay(datastring,-32) -- TEMP if (string.find(datastring, "C25")) then -- Increase QNH ipc.control(65883,0) end if (string.find(datastring, "C26")) then -- Decrease QNH ipc.control(65884,0) end --ipc.sleep(serial_wait) -- needed??? end -------------------------------------------------------- --- OUTPUTS -------------------------------------------- -------------------------------------------------------- function call_xpndr (offset, value) value = string.format("%04x", value) --ipc.display(value) com.write (Arduino_Com_Port, "=J"..value) end -------------------------------------------------------- --- EVENTS --------------------------------------------- -------------------------------------------------------- event.com(SwitchPanel_Com_Port, 50,1, "Arduino_Data") event.offset (0x0354, "UW", "call_xpndr") -- transponder
  19. Hello everyone,I made a Home cockpit real size of Cessna 182 and I would make my G1000 using FSUIPC to be compatible with A2A C182 Gauges.A2A use LVAR on their Aircrafts and especially on the Gauges, that's why my G1000 send me wrong values (For example, I have 1400 RPM on my G1000 when the Plane is at 2500 RPM).I'm not a LUA specialist and I'm cherching a LUA Pro that can help me on this code. We can speak about the Modality on MP.Waiting for your answers.Kind regardsLudo
  20. FSUIPC version 4972 Hi, I am trying to write to a local variable in CaptainSim's C130 in fsx using a Lua file. There's a switch in the VC that I want to automate. The FSUIPC log shows an error for this action: ipc.writeLVar("L:pRpm1ButtonPos",dummy) To make sure the variable exists I added a ReadLvar to the code. C130.lua 109 function rpmLow() 110 state=ipc.readLvar("L:pRpm1ButtonPos") 111 ipc.display("RPM: "..state,1) 112 dummy=1 113 ipc.writeLVar("L:pRpm1ButtonPos",dummy) 114 end 141 event.button("D", 5, 1, "rpmLow") The read works, the result 1 or 0 is showing in the display window according to the position of the switch in the virtual cockpit. Log: I don't understand what the "nil value' means here. How can I fix this? Thanks.
  21. Hi Pete, Been putzing around with a little trick found on FSDeveloper regarding corrected fuel flow & keeping turboprops running away during start and other conditions. It uses (>C:SIMVARS:TURB ENG CORRECTED FF:1, pounds per hour) through the XMLTools.dll interface. It works well but needs gauge coding per aircraft. I was trying to get this to work using lua by writing to 0x2020 (& the 3 others) so it could work globally on all turboprops. The feedback is --- doesn't work. The following code was inside of a while - do loop which does work perfectly but there was no return as wanted via logging. ipc.writeDBL(0x2020, 200) Tested some others too w/ ?-SimC in the write column - no go. I guess "it is what it is", just feedback is all. I know you're busy with all the P3Dv4 stuff, but if you ever get around to looking into it, getting the "Turbine Engine # corrected fuel flow" & "Reciprocating engine # starter torque" (another trick) working, both ?-SimC for writes, would be "the cat's meow" ;-) FSX Acceleration / FSUIPC v4.971b Regards, Roman
  22. Hi Pete One of my users has been reporting issues with FSUIPC5 when changing aircraft when multiple LUA files are in use. The user is using the Lua file multiaxis.lua which allows axes to be swapped when a joystick button is pressed. The command is communicated via the offset 0x66C0). There appears to be a conflict with LINDA when called, normally, via ipcready.lua and the [auto] section loading Lua multiaxis. Renaming ipcready.ipc prevents the crash but this means that LINDA LUA modules not being loaded. [auto] 1=lua multiaxis [LuaFiles] 1=ipcReady 2=linda 3=AirbusX_Thr1 4=AirbusX_Thr2 5=FSUIPC5_test 6=Multiaxis [Axes] 0=JX256,F,L5:V,0,0,0 -{TO SIM: luaValue Multiaxis }- [Buttons] PollInterval=25 ButtonRepeat=20,10 1=R2,4,Cx42000BC0,xC0010100 -{offset sword decrement, offset 0BC0 (Decr=256, Limit=-16383)}- 2=R2,5,Cx32000BC0,x3FFF0100 -{offset sword increment, offset 0BC0 (Incr=256, Limit=16383)}- 3=P3,3,Cx030066C0,x0000FA88 -{offset dword set, offset 66C0}- 4=U3,3,Cx030066C0,x000100E3 -{offset dword set, offset 66C0}- With P3Dv4, LINDA 3.0.2 and Multiaxis.lua running, P3Dv4 crashes on aircraft change with the Event Viewer (see attached) showing a crash in FSUIPC5.dll. I am not sure whether this problem is associated with the LUA thread management changes you made earlier. These tests were carried out with FSUIPC 5.112. The user also reported the same crash with FSUIPC4 4.971 (log attached). FSUIPC5.ini FSUIPC5-crashOnAircraftChange.log Multiaxis.lua MULTIAXIS_crash.txt FSUIPC4_Crash_LINDA_302_FSUIPC_471.log
  23. Hello Peter How do i write hid buffer in lua script?...My problem is I want to get AP altitude value then write that value into HID buffer using lua. HID buffer will update 7 segment display by pic microconroller. thanks
  24. Hi Pete or any other LUA Guru, I've now converted to P3DV4 and I'm running FSUIPC 5.103g . A lua script I used in FSX successfully to play a video doesn't seem to respond. I'm using the ext.shell in the lua library. video, error = ext.shell("L:\\1.mp4", "EXT_FOCUS") ( As I said, this worked in FSX) the log showed no errors, but the video didn't play. ********* LUA: "test" Log [from FSUIPC version 5.103g] ********* 13259554 System time = 16/07/2017 14:37:18, Simulator time = 11:37:18 (21:37Z) 13259554 LUA: beginning "L:\Prepar3D v4\Modules\test.lua" 13259554 LUA: L:\Prepar3D v4\Modules\test.lua:2 13259554 LUA: Global: ipcPARAM = 0 13259617 >>> Thread forced exit (ipc.exit or os.exit) <<< 13259617 System time = 16/07/2017 14:37:18, Simulator time = 11:37:18 (21:37Z) ********* LUA execution terminated: Log Closed ********* so I tried making .bat file called video1.bat with simply "L:\1.mp4" in it. then changed the lua code to: video, error = ext.run("L:\\video1.bat") and it worked. I also tried: video, error = ext.run("L:\\1.mp4", "EXT_FOCUS") with no luck but also no errors recorded. Just wondering if I'm doing something wrong or what else I should look into. I can stick with the .bat file since it works, but it doesn't allow for the command line parameters to adjust the video window. Thanks for your help. -Jim
  25. Hi Pete I have started to see a repeating LUA Error Invalid Argument when running LINDA LUA code to start a second module using the LUA function ipc.runlua(path) (where path is \linda\system\init). 944344 LUA.1: LINDA:: [START] Path = linda/system/init 944625 LUA: "C:\FSX\Modules\linda/system/init.lua": killed 944860 *** LUA Error: cannot open : Invalid argument 1001125 LUA: "linda.lua": killed 1001125 LUA.0: [START] *********************** STARTING LINDA *********************** This could come down to sequencing where the ipc.runlua() is being caused before FSUIPC has actioned the LauKill() function although the kill command is passed before the run command. It appears that the kill command is being delayed. The LuaKill is called from the LINDA GUI followed by a RunLua(linda). Linda.lua calls the following (executed via the GUI) to FSUIPC: path = ipc.get("PATH_SYS") .. "init" where PATH_SYS = linda/system/ if file_exists(path .. '.lua') then ipc.runlua(path) else _log('[START] Unable to find INIT.LUA - Try Restarting') end When the restart is run a second time init.lua is dead and there is no error. We are seeing with 4.964, 4.968 and 5.103. Has anything change in recently? What delay should be built in to ensure the first command is completed before the second is sent? We have not seen this problem until the last month or so. It is only now that I have pinned down the cause. FSUIPC4.log-Invalid Argment.txt FSUIPC4 .log-Invalid Argument2
×
×
  • 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.