Karli D Posted August 19, 2021 Report Posted August 19, 2021 Today I came across a very strange behavior trying to read offsets 09D2 and 0B26 (ICAOmanufacturer and ICAOmodel). I'm not sure if it's caused by the Client DLL or FSUIPC itself. Somehow... the string seems to keep the previous value and just overwrite it partially: The code is rather simple: public partial class Form1 : Form { private Offset<string> ICAOmanufacturer = new Offset<string>("Aircraft", 0x09D2, 16); private Offset<string> ICAOModel = new Offset<string>("Aircraft", 0x0B26, 32); public Form1() { InitializeComponent(); } private void Button1_Click(object sender, EventArgs e) { // Connect to FSUIPC try { if (!FSUIPCConnection.IsOpen) { FSUIPCConnection.Open(); button1.Enabled = false; } else { FSUIPCConnection.Close(); } } catch { // NO FSUIPC running } } private void Button2_Click(object sender, EventArgs e) { try { FSUIPCConnection.Process("Aircraft"); tbOutput.AppendText($"Manufacturer: {ICAOmanufacturer.Value}\r\nModel: {ICAOModel.Value}\r\n\r\n"); } catch(Exception ex) { tbOutput.Text = $"Exception: {ex.Message}"; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { FSUIPCConnection.Close(); } } Do I oversee something?
Paul Henty Posted August 19, 2021 Report Posted August 19, 2021 Your code looks fine. These offsets are new for FSUIPC7 so it looks like a problem specific to FSUIPC7. The historic string offsets like 0x3D00 work fine. Please report this to John Dowson in the MSFS support sub-forum. https://forum.simflight.com/forum/183-fsuipc7-msfs/ It looks to me like the 0 terminator at the end of the strings isn't being written. It also looks like there are double quotes in the string which shouldn't really be there. I guess you could find the end of the string by looking for the second double quote, but that's not really how it's meant to work. There should be a 0 terminator which my DLL will handle for you. Paul
Karli D Posted August 19, 2021 Author Report Posted August 19, 2021 Thank you Paul, first I thought, that I messed up smthg in my code, as I'm working on a bigger project and there are already lots of forms, classes and stuff. I'm a pro at graphics, but not an expert programmer. Still learning new things every day, so I wasn't sure if it's not my fault. That's also the reason why I decided to go with the DLL client and not simconnect. I think it's a big help -> Can't thank you enough for making this possible btw and will definitely donate. So I'm a bit stuck at the moment, because I gotta identify the loaded aircraft and have a hard time to do that. Tried all the listed offsets private Offset<string> aircraftProfileName = new Offset<string>("AircraftID", 0x9540, 64); private Offset<string> AIRfilePathname = new Offset<string>("AircraftID", 0x3C00, 256); private Offset<string> ICAOdesignator = new Offset<string>("AircraftID", 0x0618, 16); private Offset<string> ICAOmanufacturer = new Offset<string>("AircraftID", 0x09D2, 16); private Offset<string> ICAOModel = new Offset<string>("AircraftID", 0x0B26, 32); private Offset<string> title = new Offset<string>("AircraftID", 0x3D00, 256); and found out, that the best way to identify the aircraft is 3D00. However, I gotta have a manufacturer and a model too to display it to the user. Unfortunately ASOBO, as well as third party devs don't really care much about keeping a straight line in naming their aircraft. In fact it's a totally mess! Sometimes the manufacturer name is missing completely, sometimes it's replaced by the dev name, sometimes it's at the beginning of the string, sometimes at the end. There's no structure at all in that. So I hoped the new offsets would help a bit to find a solution for that. Looking for the second double quote sadly doesn't work, as I already came across aircraft, where the second one is missing (for whatever reason). Ok, maybe it's the string length, gotta check that. Will report that to John.
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