Jump to content

BrassEm

Members
  • Posts

    256
  • Joined

  • Last visited

Posts posted by BrassEm

  1. IMPORTANT MESSAGE: I apologise for the loss of the images linked. Without warning Photobucket are now asking for $399.00 USD to restore the picture links. Please bear with me while I make other arrangements to host the pictures.

     

    G'day,

     

    The current spitfire textures are outstanding. Attention to detail is absolutely amazing. So how could they stuff up the upper wing roundel??? It literally only took 2mins to clone in the needed pixels. IMHO I reckon they are just chucking a rock.

     

    Roundel_fixed.jpg

     

    No matter. Here is a temporary fix until the template comes out. (Just a few skins lined up.) Note that the scratches have been brightened slightly by the NVidia DDS export utility from Photoshop so they are a little more apparent.

     

    Standard Texture Fix

     

    http://www.mediafire.com/file/3097midoy5g64yx/RAF+Standard+Fixed.zip

     

    D-Day Standard Texture Fix

     

    http://www.mediafire.com/?c0367n4s976wc/RAF,+No.+126+Squadron,+Harrowbeer+Fixed.zip

     

     

    Cheers,

     

    Brass.

  2. Excellent post towsim. That is the crux of the problem.

     

    For the matrices to work you would need a full quadrature of pitch. Which we don't have access to just yet. The logic to extrapolate this would be a series of if-then tests. Then work out the angle quadrature. The graph below shows a near vertical loop which shows the problem with the radical change in yaw and bank.

     

    Export_Lua_Output_TestFlight_20160915b_DCS%20Pitch%20Correction%20needed.jpg

     

     

    While we have ±180° for yaw and bank, we only have ±90° for pitch at the moment as per the ADI output.

     

    Directions%20of%20Movement%20in%20SimTools%2020161016a.jpg

  3. To solve this an absolute Bank vector is needed, which is NOT affected by any Pitch/Yaw alignment!

     

    Absolutely Agreed! The forces need to be relative to the pilot in the seat!

     

    If he is pulling 5g pitch up with a -5 bank angle roll left he is NOT going to magically flip over to +5° bank angle just because he happens to pitch over at the 90° pitch up attitude. Which is what is happening now with the only available values we can access in export.lua.

     

    This is a major flaw with DCS at the moment as it stands for anyone wanting more than just VR realism.

  4. I am sure if you browse the links you will get an idea of what is involved. The basic circuit is about the same minus the opto's and disable switches. (Depending on the configuration these do come in handy).

     

    The motors are a typical car/truck wiper motor. A brushed 12/24VDC motor with a reduction worm gear assembly. The worm gear provides the necessary holding force to a seat even with the motor not energised. They are not stepper motors as such but are driven by a Pulse Width Modulation voltage to adjust the speed and polatiry to the motor.

  5. The intrinsic problem with DCS is that there is a roll and yaw inversion from export data whenever a near, to true loop, is performed, which is a problem for some seat movers who's seat frame of reference does not change during the inversion.

     

    It is not a problem with Simtools, it works well, it just drives to what it is given.

     

    @mrsparks

     

    Can I ask where you are getting your DCS pitch, bank and yaw values from please?

     

    @Frusheen

     

    Sorry for not getting back to you. I had a total Hard Disk Drive failure with corrupted backups. Thought I had lost the entire lot for a few days there!. Back on the job now.

  6. Forget stepper motors for FFB applications. They depend on cogging which is not what you want where you want smooth input command feel for a joystick interface. They have low torque, and because of that loose command steps if stalled.

     

    DC brushed motors cog as well. This is not what you want for a joystick interface where you want smooth input command feel. But this will do for basic principle testing.

     

    Toothed belts are not good as they can cog as well. V belts slip under torque. Good quality gears is best.

     

    (Even MSFFB2 cogs!)

  7. I like where this is going. (And excellent post Drakoz!)

     

    For best results use "zero cogging" DC motors. A reasonable gear ratio is needed to counter joystick lever forces (human input) while not drawing excessive stall currents on the motor and driver circuit. And as you've noted MetalGear_Honk and Drakoz, a good PID is essential for an Arduino to control the motors. I've got the hardware sorted but not the software driver.

  8. Excellent Idea MacThai_75.

     

    I've found Simtools tp be an excellent simulator interfacing program that is pretty straight forward to use.

     

    If you have an Arduino, a motor controller board and motor, I've found the SMC3 program by rufusdufus is definitely the way to go.

     

    X-Simulator%20Arduino%20Wiring%20Configuration%201024x944.jpg

     

     

    VR gets your eyes into the pit. With simtools you get your body into the pit!

  9. It really is killing me about the colour, I really like the thought of matt black, especially once I get all the stickers attached. Frak!

     

    A very exceptional build there X93355!

     

    If your not sure don't rush it until your convinced you have the right colour. From painting my SJU-17 MB seat with Gloss Black, Satin Black and Matt Black, from my experience Satin wins hands down.

     

    Gloss Black is Black. Most reference photo's I've seen in cockpit don't have a high gloss finish and alway appear an off black, very dark charcoal. Gloss is also very unforgiving in highlighting the slightest surface imperfection.

     

    Flat Black is close as it appears as the very dark gray required, but maybe a little too light. It holds any and every mark, scratch and greasy fingerprint.

     

    Satin works best. It matches most in-cockpit photos as it has the slightest sheen. Doesn't mark up half as bad as the Flat and cleans well. It looks good in daylight and photographs well. You won't be seeing the seat in night missions anyways so colour won't matter then.

     

    I don't have access to a full size spray gun so I am relying on paint out of a spray can. If I did have access to full size spray gun I would go Satin and lighten up the Black just the minutest amount. (Not to the Flat Black tone.)

     

    Just my point of view. Good Luck with your choice and I look forward to seeing the finished masterpiece.

     

    You can see panels painted Satin black in Part three here.

  10. Absolutely interested Frusheen! That functionality will most definitely be needed. I hope that you would be kind enough to post your script when you can.

     

    I hope you get the recompile over at XSimulator soon. They seem to have a comprehensive set of plug-ins.

  11. G'day Frusheen,

     

    The PM system doesn't allow more than 5,000 characters so I am posting here.

     

    This is my export.lau that works with X-Sim.

     

    If there are problems let us know.

     

    Cheers,

     

    Brass.

     

    (Some of the comments are for my force feedback devices.)

     

    gHost = "127.0.0.1"
    gPort = 9089
    gExportInterval = 0.067
    gExportLowTickInterval = 1
    gEveryFrameArguments = {[540]="%0.1f", [541]="%0.1f", [542]="%0.1f", [730]="%0.1f", [731]="%0.1f", [732]="%0.1f", [76]="%.4f", [77]="%.4f", [78]="%.4f", [80]="%.4f", [84]="%.4f", [85]="%.4f", [70]="%.4f", [73]="%.4f", [82]="%.4f", [83]="%.4f", [13]="%.4f", [14]="%.4f", [48]="%.4f", [12]="%.4f", [4]="%.4f", [55]="%0.1f", [17]="%.4f", [18]="%.4f", [24]="%.4f", [23]="%.4f", [25]="%0.1f", [19]="%0.1f", [26]="%0.1f", [20]="%.4f", [21]="%.4f", [27]="%.4f", [63]="%.4f", [64]="%.4f", [65]="%0.1f", [715]="%.4f", [40]="%0.1f", [32]="%0.1f", [46]="%0.1f", [34]="%.4f", [36]="%.4f", [47]="%.4f", [41]="%.4f", [33]="%.4f", [35]="%.4f", [662]="%0.1f", [663]="%0.1f", [665]="%0.1f", [664]="%0.1f", [215]="%0.1f", [216]="%0.1f", [217]="%0.1f", [404]="%0.1f", [372]="%0.1f", [373]="%0.1f", [374]="%0.1f", [654]="%1d", [659]="%0.1f", [660]="%0.1f", [661]="%0.1f", [737]="%0.1f", [653]="%.4f", [88]="%.4f", [89]="%.4f", [647]="%.4f", [648]="%.4f", [606]="%0.1f", [608]="%0.1f", [610]="%0.1f", [612]="%0.1f", [614]="%0.1f", [616]="%0.1f", [618]="%0.1f", [619]="%0.1f", [620]="%0.1f", [274]="%.4f", [604]="%.4f", [600]="%0.1f", [281]="%.4f", [289]="%1d", [480]="%0.1f", [481]="%0.1f", [482]="%0.1f", [483]="%0.1f", [484]="%0.1f", [485]="%0.1f", [486]="%0.1f", [487]="%0.1f", [488]="%0.1f", [489]="%0.1f", [490]="%0.1f", [491]="%0.1f", [492]="%0.1f", [493]="%0.1f", [494]="%0.1f", [495]="%0.1f", [496]="%0.1f", [497]="%0.1f", [498]="%0.1f", [499]="%0.1f", [500]="%0.1f", [501]="%0.1f", [502]="%0.1f", [503]="%0.1f", [504]="%0.1f", [505]="%0.1f", [506]="%0.1f", [507]="%0.1f", [508]="%0.1f", [509]="%0.1f", [510]="%0.1f", [511]="%0.1f", [512]="%0.1f", [513]="%0.1f", [514]="%0.1f", [515]="%0.1f", [516]="%0.1f", [517]="%0.1f", [518]="%0.1f", [519]="%0.1f", [520]="%0.1f", [521]="%0.1f", [522]="%0.1f", [523]="%0.1f", [524]="%0.1f", [525]="%0.1f", [526]="%0.1f", [527]="%0.1f", [260]="%0.1f", [269]="%.4f", [129]="%1d", [185]="%1d", [186]="%1d", [187]="%1d", [188]="%1d", [191]="%0.1f", [798]="%0.1f", [799]="%0.1f", [178]="%0.1f", [179]="%0.1f", [181]="%0.1f", [182]="%0.1f"}
    gArguments = {[22]="%.3f", [101]="%.1f", [102]="%1d", [103]="%1d", [104]="%1d", [105]="%1d", [300]="%.1f", [301]="%.1f", [302]="%.1f", [303]="%.1f", [304]="%.1f", [305]="%.1f", [306]="%.1f", [307]="%.1f", [308]="%.1f", [309]="%.1f", [310]="%.1f", [311]="%.1f", [312]="%.1f", [313]="%.1f", [314]="%.1f", [315]="%.1f", [316]="%.1f", [317]="%.1f", [318]="%.1f", [319]="%.1f", [320]="%1d", [321]="%1d", [322]="%1d", [323]="%1d", [324]="%1d", [325]="%0.1f", [326]="%.1f", [327]="%.1f", [328]="%.1f", [329]="%.1f", [330]="%.1f", [331]="%.1f", [332]="%.1f", [333]="%.1f", [334]="%.1f", [335]="%.1f", [336]="%.1f", [337]="%.1f", [338]="%.1f", [339]="%.1f", [340]="%.1f", [341]="%.1f", [342]="%.1f", [343]="%.1f", [344]="%.1f", [345]="%.1f", [346]="%1d", [347]="%1d", [348]="%1d", [349]="%1d", [350]="%1d", [351]="%0.1f", [385]="%.1f", [386]="%.1f", [387]="%.1f", [388]="%.1f", [389]="%.1f", [390]="%.1f", [391]="%.1f", [392]="%.1f", [393]="%.1f", [395]="%.1f", [396]="%.1f", [394]="%.1f", [397]="%.1f", [398]="%.1f", [399]="%.1f", [400]="%.1f", [401]="%.1f", [402]="%.1f", [405]="%1d", [406]="%1d", [407]="%1d", [408]="%1d", [409]="%1d", [531]="%.1f", [532]="%.1f", [533]="%.1f", [403]="%.1f", [365]="%.1f", [366]="%.1f", [369]="%.1f", [370]="%.1f", [371]="%.1f", [367]="%.3f", [368]="%.3f", [716]="%1d", [655]="%0.1f", [651]="%.1f", [375]="%0.1f", [376]="%0.1f", [377]="%0.1f", [378]="%1d", [379]="%0.1f", [380]="%1d", [381]="%1d", [382]="%1d", [383]="%1d", [384]="%0.1f", [645]="%0.1f", [646]="%.1f", [605]="%.1f", [607]="%.1f", [609]="%.1f", [611]="%.1f", [613]="%.1f", [615]="%.1f", [617]="%.1f", [621]="%1d", [711]="%.1f", [622]="%0.1f", [623]="%1d", [624]="%.3f", [626]="%.3f", [636]="%0.2f", [638]="%0.2f", [640]="%0.2f", [642]="%0.2f", [644]="%1d", [628]="%.1f", [630]="%.1f", [632]="%.1f", [634]="%.1f", [410]="%.1f", [411]="%.1f", [412]="%.1f", [413]="%.1f", [414]="%.1f", [415]="%.1f", [416]="%.1f", [417]="%.1f", [418]="%.1f", [419]="%.1f", [420]="%.1f", [421]="%.1f", [422]="%.1f", [423]="%.1f", [425]="%.1f", [426]="%.1f", [427]="%.1f", [428]="%.1f", [429]="%.1f", [430]="%.1f", [431]="%.1f", [432]="%.1f", [433]="%.1f", [434]="%.1f", [435]="%.1f", [436]="%.1f", [437]="%.1f", [438]="%.1f", [439]="%.1f", [440]="%.1f", [441]="%.1f", [442]="%.1f", [443]="%.1f", [444]="%.1f", [445]="%.1f", [446]="%.1f", [447]="%.1f", [448]="%.1f", [449]="%.1f", [450]="%.1f", [451]="%.1f", [452]="%.1f", [453]="%.1f", [454]="%.1f", [455]="%.1f", [456]="%.1f", [457]="%.1f", [458]="%.1f", [459]="%.1f", [460]="%.1f", [461]="%.1f", [462]="%.1f", [466]="%.1f", [467]="%.1f", [468]="%.1f", [470]="%.1f", [471]="%.1f", [424]="%1d", [463]="%1d", [469]="%1d", [472]="%1d", [241]="%1d", [242]="%1d", [243]="%1d", [244]="%1d", [245]="%1d", [246]="%1d", [601]="%1d", [602]="%1d", [603]="%1d", [712]="%0.2f", [352]="%.1f", [353]="%.1f", [354]="%.1f", [355]="%.1f", [356]="%1d", [357]="%.1f", [358]="%1d", [359]="%.3f", [360]="%0.1f", [361]="%0.1f", [362]="%0.1f", [363]="%0.1f", [364]="%0.1f", [275]="%.1f", [276]="%1d", [277]="%.3f", [278]="%1d", [279]="%1d", [280]="%1d", [282]="%1d", [283]="%1d", [284]="%.3f", [287]="%1d", [288]="%.3f", [290]="%.3f", [291]="%1d", [292]="%.3f", [293]="%.3f", [294]="%1d", [295]="%1d", [296]="%.3f", [297]="%.3f", [258]="%0.2f", [259]="%.1f", [261]="%.3f", [262]="%0.1f", [266]="%1d", [247]="%1d", [248]="%0.1f", [250]="%0.1f", [249]="%.3f", [251]="%0.1f", [252]="%0.1f", [270]="%1d", [273]="%1d", [272]="%1d", [271]="%.3f", [267]="%.1f", [268]="%.3f", [473]="%0.1f", [474]="%1d", [475]="%0.1f", [476]="%1d", [477]="%1d", [106]="%1d", [107]="%1d", [108]="%1d", [109]="%1d", [110]="%1d", [111]="%1d", [112]="%1d", [113]="%1d", [114]="%1d", [115]="%.1f", [117]="%1d", [118]="%1d", [119]="%1d", [120]="%1d", [121]="%1d", [116]="%.3f", [122]="%1d", [123]="%1d", [124]="%1d", [125]="%1d", [126]="%1d", [127]="%.1f", [132]="%1d", [131]="%.1f", [130]="%1d", [137]="%0.3f", [138]="%0.1f", [135]="%0.1f", [133]="%.3f", [136]="%.1f", [134]="%1d", [139]="%0.2f", [140]="%0.2f", [141]="%0.2f", [142]="%0.2f", [151]="%0.3f", [153]="%0.2f", [154]="%0.2f", [155]="%0.2f", [156]="%0.2f", [152]="%0.1f", [149]="%0.1f", [147]="%.3f", [150]="%.1f", [148]="%1d", [189]="%1d", [190]="%.1f", [192]="%.3f", [197]="%.1f", [196]="%1d", [193]="%.3f", [195]="%.3f", [194]="%0.1f", [198]="%.1f", [161]="%0.2f", [162]="%0.1f", [163]="%0.2f", [164]="%0.2f", [165]="%0.2f", [166]="%0.2f", [167]="%0.1f", [168]="%0.1f", [169]="%1d", [170]="%1d", [171]="%.3f", [172]="%.1f", [173]="%.1f", [735]="%.1f", [734]="%1d", [779]="%1d", [778]="%1d", [780]="%1d", [781]="%0.1f", [782]="%0.1f", [783]="%0.1f", [784]="%1d", [772]="%1d", [199]="%0.1f", [200]="%0.1f", [201]="%1d", [202]="%1d", [203]="%1d", [204]="%1d", [205]="%1d", [206]="%1d", [207]="%1d", [208]="%1d", [209]="%0.2f", [210]="%0.2f", [211]="%0.2f", [212]="%0.2f", [213]="%0.2f", [214]="%0.2f", [174]="%1d", [175]="%1d", [176]="%0.1f", [177]="%1d", [180]="%1d", [183]="%1d", [184]="%1d", [221]="%.3f", [222]="%1d", [223]="%.3f", [224]="%1d", [225]="%.3f", [226]="%1d", [227]="%.3f", [228]="%1d", [229]="%.3f", [230]="%1d", [231]="%.3f", [232]="%1d", [233]="%.3f", [234]="%1d", [235]="%.3f", [236]="%1d", [237]="%1d", [238]="%.3f", [239]="%0.1f", [240]="%.1f", [704]="%.3f", [705]="%.3f", [718]="%1d", [722]="%.1f", [733]="%1d"}
    
    function ProcessHighImportance(mainPanelDevice)
    -- Send Altimeter Values	
    SendData(2051, string.format("%0.4f;%0.4f;%0.5f", mainPanelDevice:get_argument_value(52), mainPanelDevice:get_argument_value(53), mainPanelDevice:get_argument_value(51)))
    SendData(2059, string.format("%0.2f;%0.2f;%0.2f;%0.3f", mainPanelDevice:get_argument_value(56), mainPanelDevice:get_argument_value(57), mainPanelDevice:get_argument_value(58), mainPanelDevice:get_argument_value(59)))		
    -- Calcuate HSI Value
    SendData(2029, string.format("%0.2f;%0.2f;%0.4f", mainPanelDevice:get_argument_value(29), mainPanelDevice:get_argument_value(30), mainPanelDevice:get_argument_value(31)))
    -- Calculate Total Fuel
    SendData(2090, string.format("%0.2f;%0.2f;%0.5f", mainPanelDevice:get_argument_value(90), mainPanelDevice:get_argument_value(91), mainPanelDevice:get_argument_value(92)))
    end
    
    function ProcessLowImportance(mainPanelDevice)
    -- Get Radio Frequencies
    local lUHFRadio = GetDevice(54)
    SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000))
    -- ILS Frequency
    --SendData(2251, string.format("%0.1f;%0.1f", mainPanelDevice:get_argument_value(251), mainPanelDevice:get_argument_value(252)))
    -- TACAN Channel
    SendData(2263, string.format("%0.2f;%0.2f;%0.2f", mainPanelDevice:get_argument_value(263), mainPanelDevice:get_argument_value(264), mainPanelDevice:get_argument_value(265)))
    end
    
    os.setlocale("ISO-8559-1", "numeric")
    
    -- Simulation id
    gSimID = string.format("%08x*",os.time())
    
    -- State data for export
    gPacketSize = 0
    gSendStrings = {}
    gLastData = {}
    
    -- Frame counter for non important data
    gTickCount = 0
    
    -- DCS Export Functions
    function LuaExportStart()
    -- Works once just before mission start.
    
    default_output_file = io.open("./Export.log", "w")
    
       -- 2) Setup udp sockets to talk to helios
       package.path  = package.path..";.\\LuaSocket\\?.lua"
       package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
      
       socket = require("socket")
       
       c = socket.udp()
    c:setsockname("*", 0)
    c:setoption('broadcast', true)
       c:settimeout(.001) -- set the timeout for reading the socket 
    
    -- Setup sockets to talk to X-SIM (x)
    host = host or "localhost"
    port = port or 8080
    x = socket.try(socket.connect(host, port)) -- connect to the listener socket
    x:setoption("tcp-nodelay",true) -- set immediate transmission mode	
    
    
    end
    
    function LuaExportBeforeNextFrame()
    ProcessInput()
    end
    
    function LuaExportAfterNextFrame()	
    local t = LoGetModelTime()
    local altBar = LoGetAltitudeAboveSeaLevel()
    local altRad = LoGetAltitudeAboveGroundLevel()
    local pitch, bank, yaw = LoGetADIPitchBankYaw()
    local vel = LoGetVerticalVelocity() -- Doesn't appear to be used.
    local angle = LoGetAngleOfAttack()  -- Okay with... Su-27. Test other aircraft.
    local accel = LoGetAccelerationUnits()
    local trueairspeed = LoGetTrueAirSpeed()
    local slipball = LoGetSlipBallPosition()
    -- local flightcontrolPitch - LoGet()
    -- local flightcontrolRoll - LoGet()
    -- local flightcontrolYaw - LoGet()
    -- get engines rpm from cockpit panel:
    --local lDevice = GetDevice(0)
    --local engineRPM = lDevice:get_argument_value(76) + lDevice:get_argument_value(77)
    local scaler = 100.0
    local user1 = accel.x*scaler
    -- local user2 = (accel.y-1)*1000.0
    local user2 = accel.y*scaler
    local user3 = accel.z*scaler
    local user4 = vel --engineRPM for Bergison Seat Shaker. Tried Vel which is the VSI component. Make Pilot Pitch Stick position
    local user5 = 5 -- Make Pilot Roll Stick position
    local user6 = 6 -- Make Pilot Rudder Pedal position
    local user7 = 7 -- added to make it work.
    
    default_output_file:write(string.format("t:, %.3f, altBar:, %.2f, altRad:, %.2f, pitch:, %.2f, bank:, %.2f, yaw:, %.2f, ACCEL:, %.2f, AOA:, %.2f, G-LOAD:, %.2f, accel.z:, %.2f, user1:, %.2f, user2:, %.2f, user3:, %.2f, user4:, %.2f, user5:, %.2f, user6:, %.2f\n", t, altBar, altRad, pitch*scaler, bank*scaler, yaw*scaler, accel.x*scaler, angle*scaler, accel.y*scaler, accel.z*scaler, user1, user2, user3, user4, user5, user6, user7))
    
    
    if x then
    
    socket.try(x:send(string.format("%.3f %.2f %.2f %.2f %.2f %.2f %.7f %.7f %.7f %.7f %.2f %.2f %.2f %.2f %.2f %.2f %.2f \n", t, 
    altRad, altBar, pitch*scaler, bank*scaler, yaw*scaler, accel.x*scaler, angle*scaler, accel.y*scaler, accel.z*scaler, 
    user1, user2, user3, user4, user5, user6, user7)))
    
    -- socket.try(x:send(string.format("user1 = %.2f, user2 = %.2f, user3 = %.2f \n", user1, user2, user3)))
    end
    
    end
    
    function LuaExportStop()
    -- Works once just after mission stop.
    c:close()
    
    if default_output_file then
    default_output_file:close()
    default_output_file = nil
    end
    
    socket.try(x:send("quit")) -- to close the listener socket
    x:close()
    
    end
    
    function ProcessInput()
       local lInput = c:receive()
       local lCommand, lCommandArgs, lDevice, lArgument, lLastValue
       
       if lInput then
    
           lCommand = string.sub(lInput,1,1)
           
    	if lCommand == "R" then
    		ResetChangeValues()
    	end
    
    	if (lCommand == "C") then
    		lCommandArgs = StrSplit(string.sub(lInput,2),",")
    		lDevice = GetDevice(lCommandArgs[1])
    		if type(lDevice) == "table" then
    			lDevice:performClickableAction(lCommandArgs[2],lCommandArgs[3])	
    		end
    	end
       end 
    end
    
    function LuaExportActivityNextEvent(t)
    t = t + gExportInterval
    
    gTickCount = gTickCount + 1
    
    local lDevice = GetDevice(0)
    if type(lDevice) == "table" then
    	lDevice:update_arguments()
    
    	ProcessArguments(lDevice, gEveryFrameArguments)
    	ProcessHighImportance(lDevice)
    
    	if gTickCount >= gExportLowTickInterval then
    		ProcessArguments(lDevice, gArguments)
    		ProcessLowImportance(lDevice)
    		gTickCount = 0
    	end
    
    	FlushData()
    end
    
    return t
    end
    
    -- Helper Functions
    function StrSplit(str, delim, maxNb)
       -- Eliminate bad cases...
       if string.find(str, delim) == nil then
           return { str }
       end
       if maxNb == nil or maxNb < 1 then
           maxNb = 0    -- No limit
       end
       local result = {}
       local pat = "(.-)" .. delim .. "()"
       local nb = 0
       local lastPos
       for part, pos in string.gfind(str, pat) do
           nb = nb + 1
           result[nb] = part
           lastPos = pos
           if nb == maxNb then break end
       end
       -- Handle the last field
       if nb ~= maxNb then
           result[nb + 1] = string.sub(str, lastPos)
       end
       return result
    end
    
    function round(num, idp)
     local mult = 10^(idp or 0)
     return math.floor(num * mult + 0.5) / mult
    end
    
    -- Status Gathering Functions
    function ProcessArguments(device, arguments)
    local lArgument , lFormat , lArgumentValue
    	
    for lArgument, lFormat in pairs(arguments) do 
    	lArgumentValue = string.format(lFormat,device:get_argument_value(lArgument))
    	SendData(lArgument, lArgumentValue)
    end
    end
    
    -- Network Functions
    function SendData(id, value)	
    if string.len(value) > 3 and value == string.sub("-0.00000000",1, string.len(value)) then
    	value = value:sub(2)
    end
    
    if gLastData[id] == nil or gLastData[id] ~= value then
    	local data =  id .. "=" .. value
    	local dataLen = string.len(data)
    
    	if dataLen + gPacketSize > 576 then
    		FlushData()
    	end
    
    	table.insert(gSendStrings, data)
    	gLastData[id] = value	
    	gPacketSize = gPacketSize + dataLen + 1
    end	
    end
    
    function FlushData()
    if #gSendStrings > 0 then
    	local packet = gSimID .. table.concat(gSendStrings, ":") .. "\n"
    	socket.try(c:sendto(packet, gHost, gPort))
    	gSendStrings = {}
    	gPacketSize = 0
    end
    end
    
    function ResetChangeValues()
    gLastData = {}
    gTickCount = 10
    end
    
    
    local Tacviewlfs=require('lfs');dofile(Tacviewlfs.writedir()..'Scripts/TacviewExportDCS.lua')
    

  12. If you can get it to work with other setups then that means the hardware is not scrambling its connection with the software driver causing the thread exception. It is then a software issue. Have they told you to do a re-install just in case a saiKa215.sys file is corrupted?

     

    I am assuming that you have the base three drivers for the throttle registered to the device?

     

    saitek_throttle_drivers.png

  13. I hope you'll be more fortunate than me then ;)

    I submitted my ticket in december (the 15th) and the support only asked for some additional information since (back in december).

    Also, thanks to the X-55 driver/software, the BSOD occured at Windows startup a few times (SaiKa215.sys involved).

    I'm starting to think the X-55 is jealous of my other devices :doh:

     

    G'day Bourrinopathe,

     

    It sounds like you might have an issue I battled with for a few weeks late last year. I had a Sai????.sys driver go AWOL on me. (Can't remember just yet which .sys one it was, one of about 8, I will look up my unresolved emails with MadCatz Customer Technical Service Support.) You will not fix it by uninstalling and reinstalling the Saitek software. (Worth a try though). The .sys drivers are added to the registry on the very first install, until you flush them out completely, and I mean completely, you cannot do a successful re-install. An uninstall did not work but you can try. Can you post what the BSOD is reporting please as this will confirm the issue.

     

    I was going to record the steps and post them back when I had the trouble but looks like I might relay the process here? MadCatz were never ever going to resolve my problem...

     

    To be sure do you have the SaiKa215.sys in your Windows\System32 directory?

     

    Also could you go to the properties of both X-55 devices in Control Panel\All Control Panel Items\Devices and Printers and post what entries are listed there under the hardware tab. Should be six entries in both.

     

    I bet you don't see a Saitek Pro Flight X-55 Rhino Throttle (HID) entry...

     

    (I've found my ticket and it was 18/04/2015 with Jared.)

×
×
  • Create New...