Achilles Philippopoulos Posted December 30, 2009 Report Share Posted December 30, 2009 Hi Pete, I have a question regarding brakes. Left and right brake value's are at offsets 0bc4 and 0bc6. Also from keybord are 0c00 and 0c01. Offsets 3416 and 3418 are for axis input and I think that you aplly them at 0bc4 and obc6. Correct me if I am wrong until now. What I want to do is to change the brake force (without changing the brake value offsets). Is this possible? Any idea? regards, Achilles Link to comment Share on other sites More sharing options...
Pete Dowson Posted December 30, 2009 Report Share Posted December 30, 2009 I have a question regarding brakes. Left and right brake value's are at offsets 0bc4 and 0bc6. Also from keybord are 0c00 and 0c01. 0BC4 and 0BC6 are the brake axes. The 0C00 and 0C01 bytes are a remnant from FS98 days, emulated by FSUIPC since FS2002 at least, and operate the brake pressure decay when using a Brakes button or key control, rather than an axis. Without that decay time, braking would be only on or off with those controls instead of increasing when held/repeated and reducing when not. Offsets 3416 and 3418 are for axis input and I think that you aplly them at 0bc4 and obc6. Correct me if I am wrong until now. 3416 and 3418 are merely the copies for Fly-by-Wire operation, when the brakes are disconnected by using 341A. They are not control offsets, just copies for application's information. FSUIPC doesn't use them -- an FBW application would use them, or one doing its own sophisticated braking system (taking into account wet, sloping, icy runways for instance, like the Thomas Richter braking utilities). They might modify the value before writing it to 0BC4 or 0BC6 What I want to do is to change the brake force (without changing the brake value offsets). Is this possible? Any idea? Yes, as just described and documented for those offsets. disconnect the brakes via 341A, read those values at 3416/8, change them, and write them to 0BC4/6, as described. Regards Pete Link to comment Share on other sites More sharing options...
Flocki Posted February 21, 2010 Report Share Posted February 21, 2010 Hi, disconnecting the brake axis and putting my own algorithm in between as described works just fine for the pedals. But how can i influence braking using keys/buttons (e.g. '.')? In my case i want to limit the maximum brake pressure. Thanks for your help! Florian Link to comment Share on other sites More sharing options...
Pete Dowson Posted February 22, 2010 Report Share Posted February 22, 2010 But how can i influence braking using keys/buttons (e.g. '.')? In my case i want to limit the maximum brake pressure. You'd need to override the brakes somehow. Maybe by reading the braking value and writing a lower value each time it gets near your desired threshold. The brake buttons operate one of the three FS controls: Brakes (.) Brakes left (F11) and Brakes right (F12), on FS9, and those controls don't give maximum braking immediately, they accumulate by continued pressing or re-pressing, and decay when you stop, so you should have ample time to spot this and apply your limit. Regards Pete Link to comment Share on other sites More sharing options...
Flocki Posted February 22, 2010 Report Share Posted February 22, 2010 As soon as an value is written to 0bc4/0bc6 once, FSX-braking is disabled completely. (Brakes get stuck on the written value). Again no problem with pedals as I only forward an permanent stream of axis data, but a big problem with braking by key/button only. Is there a way to resume FSX the braking algorithms after applying an value to 0bc4/0bc6? Thanks! Florian Link to comment Share on other sites More sharing options...
Pete Dowson Posted February 22, 2010 Report Share Posted February 22, 2010 As soon as an value is written to 0bc4/0bc6 once, FSX-braking is disabled completely. (Brakes get stuck on the written value). Yes, because that's the same as having a brake pedal axis kept pressed at that point. You need to use the 0C00, 0C01 bytes which emulate the momentary effect of the key controls and include the decay. Regards Pete Link to comment Share on other sites More sharing options...
Flocki Posted February 22, 2010 Report Share Posted February 22, 2010 Hi again! The more i try to understand the more i get confused. Applying the same value on 0c00 und 0c01 results in very different braking pressure applied. E.g. an value of 137 results in ~11000 in 0bc4 and ~7000 in 0bc6. Is this intended? Florian Link to comment Share on other sites More sharing options...
Pete Dowson Posted February 23, 2010 Report Share Posted February 23, 2010 Applying the same value on 0c00 und 0c01 results in very different braking pressure applied. E.g. an value of 137 results in ~11000 in 0bc4 and ~7000 in 0bc6. Is this intended? It should be applying the exact same valuer in both (200 scales to the max 16k). But the value starts decaying immediately, in a proper decay curve -- ie inverse exponential, so a larger value is decreasing fast. Anyway, I used FSUIPC's monitoring facilities and here are the results, FSX first, FS9 second: ********* FSUIPC4, Version 4.593 by Pete Dowson ********* ... 271453 Monitor IPC:0C00 (U8) = 137 271453 Monitor IPC:0C01 (U8) = 137 271484 Monitor IPC:0C00 (U8) = 127 271484 Monitor IPC:0C01 (U8) = 127 271484 SimRead: 0BC4="BRAKE LEFT POSITION" <<< First response from SimConnect (async operation) FLT64: 0.684978306293 271484 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.462377429008 271515 Monitor IPC:0BC4 (U16) = 11223 271515 Monitor IPC:0BC6 (U16) = 7576 271531 Monitor IPC:0C00 (U8) = 117 271531 Monitor IPC:0C01 (U8) = 117 271531 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.41038697958 271531 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.41038697958 271562 Monitor IPC:0BC4 (U16) = 6724 271562 Monitor IPC:0BC6 (U16) = 6724 271625 Monitor IPC:0C00 (U8) = 107 271625 Monitor IPC:0C01 (U8) = 107 271625 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.358396500349 271625 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.358396500349 271640 Monitor IPC:0BC4 (U16) = 5872 271640 Monitor IPC:0BC6 (U16) = 5872 271671 Monitor IPC:0C00 (U8) = 97 271671 Monitor IPC:0C01 (U8) = 97 271671 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.306342571974 271671 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.306342571974 271703 Monitor IPC:0BC4 (U16) = 5019 271703 Monitor IPC:0BC6 (U16) = 5019 271718 Monitor IPC:0C00 (U8) = 87 271718 Monitor IPC:0C01 (U8) = 87 271718 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.258564978838 271718 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.258564978838 271750 Monitor IPC:0BC4 (U16) = 4236 271750 Monitor IPC:0BC6 (U16) = 4236 271796 Monitor IPC:0C00 (U8) = 77 271796 Monitor IPC:0C01 (U8) = 77 271796 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.220571935177 271796 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.220571935177 271828 Monitor IPC:0BC4 (U16) = 3614 271828 Monitor IPC:0BC6 (U16) = 3614 271859 Monitor IPC:0C00 (U8) = 67 271859 Monitor IPC:0C01 (U8) = 67 271859 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.182578876615 271859 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.182578876615 271875 Monitor IPC:0BC4 (U16) = 2991 271875 Monitor IPC:0BC6 (U16) = 2991 271937 Monitor IPC:0C00 (U8) = 57 271937 Monitor IPC:0C01 (U8) = 57 271937 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.144585847855 271937 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.144585847855 271968 Monitor IPC:0BC4 (U16) = 2369 271968 Monitor IPC:0BC6 (U16) = 2369 272000 Monitor IPC:0C00 (U8) = 47 272000 Monitor IPC:0C01 (U8) = 47 272000 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.106592819095 272000 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.106592819095 272031 Monitor IPC:0BC4 (U16) = 1746 272046 Monitor IPC:0BC6 (U16) = 1746 272046 Monitor IPC:0C00 (U8) = 37 272046 Monitor IPC:0C01 (U8) = 37 272046 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.0751999020576 272046 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.0751999020576 272078 Monitor IPC:0BC4 (U16) = 1232 272078 Monitor IPC:0BC6 (U16) = 1232 272109 Monitor IPC:0C00 (U8) = 27 272109 Monitor IPC:0C01 (U8) = 27 272109 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.0591833032668 272109 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.0591833032668 272140 Monitor IPC:0BC4 (U16) = 970 272140 Monitor IPC:0BC6 (U16) = 970 272171 Monitor IPC:0C00 (U8) = 17 272171 Monitor IPC:0C01 (U8) = 17 272171 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.0431862324476 272187 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.0431862324476 272203 Monitor IPC:0BC4 (U16) = 708 272218 Monitor IPC:0BC6 (U16) = 708 272234 Monitor IPC:0C00 (U8) = 7 272250 Monitor IPC:0C01 (U8) = 7 272250 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.0271891597658 272250 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.0271891597658 272281 Monitor IPC:0BC4 (U16) = 445 272281 Monitor IPC:0BC6 (U16) = 445 272312 Monitor IPC:0C00 (U8) = 0 272312 Monitor IPC:0C01 (U8) = 0 272312 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0.0111920889467 272312 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0.0111920889467 272343 Monitor IPC:0BC4 (U16) = 183 272343 Monitor IPC:0BC6 (U16) = 183 272375 SimRead: 0BC4="BRAKE LEFT POSITION" FLT64: 0 272375 SimRead: 0BC6="BRAKE RIGHT POSITION" FLT64: 0 272406 Monitor IPC:0BC4 (U16) = 0 272406 Monitor IPC:0BC6 (U16) = 0 It is odd that the inital resulting values are so different. I have no idea why. The computation code for the value to be written is the same for C00 and C01 -- only a flag tells the difference. It is something happening insiode FS. As you see above things step into line immediately afterwards. Within 100 mSecs they are even reading the exact same values on each step. I really don't think anyone will be able to detect any discrepancy even assuming there is actually a real one at the brake application level. As observers through a rather circuitous route we can't really tell, you have to try it in practice. The same test on FS9 shows a similar result, though its 0BC4/6 brake readouts are based on a max of 32767, annoyingly enough. ********* FSUIPC, Version 3.976 by Pete Dowson ********* ... 312860 Monitor IPC:0C00 (U8) = 137 312860 Monitor IPC:0C01 (U8) = 137 312907 Monitor IPC:0BC4 (U16) = 22444 312907 Monitor IPC:0BC6 (U16) = 15150 312907 Monitor IPC:0C00 (U8) = 127 312907 Monitor IPC:0C01 (U8) = 127 312954 Monitor IPC:0BC4 (U16) = 13447 312954 Monitor IPC:0BC6 (U16) = 13447 312954 Monitor IPC:0C00 (U8) = 117 312954 Monitor IPC:0C01 (U8) = 117 313000 Monitor IPC:0BC4 (U16) = 11743 313000 Monitor IPC:0BC6 (U16) = 11743 313000 Monitor IPC:0C00 (U8) = 107 313000 Monitor IPC:0C01 (U8) = 107 313063 Monitor IPC:0BC4 (U16) = 10037 313063 Monitor IPC:0BC6 (U16) = 10037 313063 Monitor IPC:0C00 (U8) = 97 313063 Monitor IPC:0C01 (U8) = 97 313110 Monitor IPC:0BC4 (U16) = 8472 313110 Monitor IPC:0BC6 (U16) = 8472 313110 Monitor IPC:0C00 (U8) = 87 313110 Monitor IPC:0C01 (U8) = 87 313157 Monitor IPC:0BC4 (U16) = 7227 313157 Monitor IPC:0BC6 (U16) = 7227 313157 Monitor IPC:0C00 (U8) = 77 313157 Monitor IPC:0C01 (U8) = 77 313204 Monitor IPC:0BC4 (U16) = 5982 313204 Monitor IPC:0BC6 (U16) = 5982 313204 Monitor IPC:0C00 (U8) = 67 313204 Monitor IPC:0C01 (U8) = 67 313266 Monitor IPC:0BC4 (U16) = 4737 313266 Monitor IPC:0BC6 (U16) = 4737 313266 Monitor IPC:0C00 (U8) = 57 313266 Monitor IPC:0C01 (U8) = 57 313360 Monitor IPC:0BC4 (U16) = 3492 313360 Monitor IPC:0BC6 (U16) = 3492 313360 Monitor IPC:0C00 (U8) = 47 313360 Monitor IPC:0C01 (U8) = 47 313407 Monitor IPC:0BC4 (U16) = 2464 313407 Monitor IPC:0BC6 (U16) = 2464 313407 Monitor IPC:0C00 (U8) = 37 313407 Monitor IPC:0C01 (U8) = 37 313469 Monitor IPC:0BC4 (U16) = 1939 313469 Monitor IPC:0BC6 (U16) = 1939 313469 Monitor IPC:0C00 (U8) = 27 313469 Monitor IPC:0C01 (U8) = 27 313500 Monitor IPC:0BC4 (U16) = 1415 313500 Monitor IPC:0BC6 (U16) = 1415 313500 Monitor IPC:0C00 (U8) = 17 313500 Monitor IPC:0C01 (U8) = 17 313563 Monitor IPC:0BC4 (U16) = 890 313563 Monitor IPC:0BC6 (U16) = 890 313563 Monitor IPC:0C00 (U8) = 7 313563 Monitor IPC:0C01 (U8) = 7 313610 Monitor IPC:0BC4 (U16) = 366 313610 Monitor IPC:0BC6 (U16) = 366 313610 Monitor IPC:0C00 (U8) = 1 313610 Monitor IPC:0C01 (U8) = 1 313657 Monitor IPC:0BC4 (U16) = 0 313657 Monitor IPC:0BC6 (U16) = 0 313657 Monitor IPC:0C00 (U8) = 0 313657 Monitor IPC:0C01 (U8) = 0 Both are in line within 100 or so milliseconds, so it shouldn't be a bother? I could investigate the innards of FS to see why the same values result in different initial pressures, but I won't have time this week. Regards Pete Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now