-
Posts
260 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Everything posted by BrassEm
-
G'day, 7th October, 2018. Finally completed the textures for this Squadron. A fictional Europe scheme is next. RAAF 457 Squadron Pack Part 1 RAAF 457 Squadron Pack Part 2 Cheers, Brass. .
-
Why So Few FFB Sticks?
BrassEm replied to martinistripes's topic in PC Hardware and Related Software
My understanding of why there are no new FFB sticks being manufactured is in the patent for "Force Feedback". A company that once made a rumble motor, patented it as "Force Feedback" and proceeded to make it's revenue from litigating against other "Force Feedback" manufacturers. (Including M$.) https://www.techdirt.com/articles/20080527/1619231238.shtml -
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. 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.
-
+1! It hurts my eyes everytime I see it.
-
Lots of good F-18 stuff at Hornetpits.org, the site name says it all...
-
DCS vectors for motion simulators
BrassEm replied to vJaBoG32's topic in PC Hardware and Related Software
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. While we have ±180° for yaw and bank, we only have ±90° for pitch at the moment as per the ADI output. -
DCS vectors for motion simulators
BrassEm replied to vJaBoG32's topic in PC Hardware and Related Software
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. -
SimTools, Cockpit Motion Control Discussion Thread
BrassEm replied to MacThai_75's topic in Home Cockpits
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. -
Open Source Joystick FFB / DIY FFB Joystick
BrassEm replied to Berniyh's topic in PC Hardware and Related Software
:thumbup: CNC = cheap, fast, or accurate. -
SimTools, Cockpit Motion Control Discussion Thread
BrassEm replied to MacThai_75's topic in Home Cockpits
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. -
Open Source Joystick FFB / DIY FFB Joystick
BrassEm replied to Berniyh's topic in PC Hardware and Related Software
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!) -
They might show up here every so often... I am sure this is on your list. http://www.flighthelmet.com/mm5/merchant.mvc?Screen=CTGY&Store_Code=FHL&Category_Code=EJSP Good Hunting! (Great facebook page btw.)
-
Open Source Joystick FFB / DIY FFB Joystick
BrassEm replied to Berniyh's topic in PC Hardware and Related Software
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. -
SimTools, Cockpit Motion Control Discussion Thread
BrassEm replied to MacThai_75's topic in Home Cockpits
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. VR gets your eyes into the pit. With simtools you get your body into the pit! -
YOU WIN! :thumbup:
-
Absolutely magnificent work! Can't wait to see it painted up.
-
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.
-
That is excellent news! Learning the software is hard won, but worth it. It would be great to see an update when you get time.
-
Beautiful pics but they really hurt my eyes. What stands out like two big red dogs balls? What is the ratio of the upper roundel for the british colour scheme for this model spit? Just saying...
-
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.
-
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')
-
X-55 Rhino Hotas Issues and Problems
BrassEm replied to Raven434th's topic in PC Hardware and Related Software
Sorry to hear that Bourrinopathe (and Kobac), Just a a suggestion, is it possible to install onto a virgin PC to see if it works? (With full admin rights etc of course.) If it still doesn't work then that one will NOT be a virgin PC any more... -
X-55 Rhino Hotas Issues and Problems
BrassEm replied to Raven434th's topic in PC Hardware and Related Software
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? -
This and the announced PFM... Great days ahead.
-
X-55 Rhino Hotas Issues and Problems
BrassEm replied to Raven434th's topic in PC Hardware and Related Software
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.)