snizbatch Posted November 29, 2023 Report Posted November 29, 2023 This is a request for assistance, not an error report. I am using FSUIPC 6.1.5 with Prepar3D v5.2.22.27615 with SimConnect 5.2.0.0 I have created a custom 777 MCP using under $100 worth of components including 2 Raspberry Pi PICOs that talk to each other using i2c and communicate with the PC over USB serial. When I'm finished I'd like to share plans with everyone but I'm stuck on one thing. When attempting to write an FLT32 using my FSUIPC python wrapper (Built on pyuipc), all of my integer variables are being sent fine, but when I attempt to send the Mach, nothing happens. At one point during my fiddling with the bit shifts, I was able to get some erratic numbers but I can't figure out how to send the correct bytes to update the value. Updating IAS works: f.write([(0x3110, "L", (int(value) << 32) | base + OFFSET_IAS)]) But: f.write([(0x3110, "L", sendval << 32 | base + OFFSET_MACH)]) ^^^Does not^^^ The variable types in the python wrapper are as follows: - b: a 1-byte unsigned value, to be converted into a Python int - c: a 1-byte signed value, to be converted into a Python int - h: a 2-byte signed value, to be converted into a Python int - H: a 2-byte unsigned value, to be converted into a Python int - d: a 4-byte signed value, to be converted into a Python int - u: a 4-byte unsigned value, to be converted into a Python long - l: an 8-byte signed value, to be converted into a Python long - L: an 8-byte unsigned value, to be converted into a Python long - f: an 8-byte floating point value, to be converted into a Python double - F: a 4-byte floating point value, to be converted into a Python double And the PMDG 777 offset mapping shows: I've based my code on the following two discussions: https://github.com/tjensen/fsuipc/discussions/14 Any ideas how I can update this variable?
John Dowson Posted November 30, 2023 Report Posted November 30, 2023 10 hours ago, snizbatch said: I am using FSUIPC 6.1.5 Please update to the latest version, 6.2.0 - only the latest version is supported. Why don't you try logging the value you are sending to offset 0x3110? I am not that familiar with python, but it looks like you are sending the offset address as a parameter, whereas it should be the parameter to the control. But as I cannot tell what is being sent with that code fragment, it is hard to advise. Try logging the value that you are sending - best to to log as two 32-bit integers separately, so that you can see both the control numbers and parameters. i.e. log 'int(value)' and 'base + OFFSET_IAS' for the first statement. and 'sendval' and 'base + OFFSET_MACH' for the second. You can also log the combined value. John
John Dowson Posted November 30, 2023 Report Posted November 30, 2023 It may be better, and easier, to use FSUIPC's offset logging facilities. Log offset 0x3110 as U32, and offset 0x3114 as S32. This should show you the control numbers and parameters that are written to the offsets. If you also activate logging for Events (non-axis controls), you should also see the controls/events that are sent. John
snizbatch Posted December 2, 2023 Author Report Posted December 2, 2023 John, Thank you for recommending the logging. It certainly shows me more than I had seen in the past, but I'm still a bit confused. The reason I'm sending the address in the same variable as the parameter is because the FSUIPC for Programmers explains you need to "Write all 8 bytes for controls which use a value" This is in the section about sending controls to 0x3110 (Which is 8 bytes in size). The Python library I have only sends integers, so I need to encode the value to send as a 4 byte integer, bit shift it 32 bits << and then "OR" it with the address. Here's what I imagine it looking like as bytes: ----VALU becomes VALU---- then we add the address with a bitwise "OR": myinteger = VALU---- | ----ADDR = VALUADDR The following line does it all in one go... and it works fine for every integer value (IAS/HDG/ALT). The "L" just tells the python library to send the value as an 8 byte integer. f.write([(0x3110, "L", sendval << 32 | base + OFFSET_MACH)]) I've now gotten the MACH to change but it isn't consistent and doesn't work like the SDK documentation. The PMDG_777_EVENTS pdf file has MACH being read as: Address Bytes Type Name Notes 6540 4 FLT32 MCP_IASMach "Mach if < 10.0" The following code correctly does this: (The "F" formats the parameter as a float) f.read([(0x6540, "F")]) EVT_MCP_MACH_SET has an SDK value of 14503 and EVENT ID of 84135 and shows (*2) indicating note #2 which is: "Sets MCP MACH (if active parameter*0.01 (e.g. send 78 to set M0.78))" I've discovered that by sending an integer value between 60 and 80 the MCP changes the PMDG MACH value to somewhere close to that value but not the exact value sent for some reason, and furthermore, the MCP actually has 3 decimal places. i.e. MACH .780 can be selected. I guess I'll have to contact PMDG for an answer to this.
John Dowson Posted December 2, 2023 Report Posted December 2, 2023 4 hours ago, snizbatch said: The reason I'm sending the address in the same variable as the parameter is because the FSUIPC for Programmers explains you need to "Write all 8 bytes for controls which use a value" This is in the section about sending controls to 0x3110 (Which is 8 bytes in size). I know that and think you are misunderstanding me. I meant that it seems that the parameters to whatever controls you are sending are offset addresses ('base + OFFSET_MACH'?), which doesn't make sense, but I need to see the logging to know what controls/parameters you are writing/sending. As I said, it is difficult to know what values you are sending with code extracts. Please show me a log (or log extract) with those offsets monitored (0x3110 and 0x3114) as well as offset 0x6540 (as FLT32). 4 hours ago, snizbatch said: I've discovered that by sending an integer value between 60 and 80 the MCP changes the PMDG MACH value to somewhere close to that value but not the exact value sent for some reason Then those should set the MACH value to 0.600 and 0.800 respectively. If the correct control/value is being sent and the value in offset 0x6540 doesn't match this, then that would be a question for PMDG. 4 hours ago, snizbatch said: furthermore, the MCP actually has 3 decimal places. i.e. MACH .780 can be selected. I guess I'll have to contact PMDG for an answer to this. Well, .780 is .78.... but if you need to specify to 3 d.p. then this doesn't seem possible (as the parameter to the control is an integer and is the mach value * 100), so yes you would need to ask PMDG about this. John
snizbatch Posted December 3, 2023 Author Report Posted December 3, 2023 John, Quote I know that and think you are misunderstanding me. I meant that it seems that the parameters to whatever controls you are sending are offset addresses ('base + OFFSET_MACH'?), which doesn't make sense, but I need to see the logging to know what controls/parameters you are writing/sending. As I said, it is difficult to know what values you are sending with code extracts. Please show me a log (or log extract) with those offsets monitored (0x3110 and 0x3114) as well as offset 0x6540 (as FLT32). PMDG's MCP variables (0x6540 for MACH) are read only. Through research I discovered that it was possible to set them through offset 0x3110 by specifying the true offset in the call. The Offset isn't the parameter. It is included WITH the parameter (as the 2 HIGH BYTES) hence the 32 bit shift "<< 32". The parameter is whatever is in my sendval variable. base = 0x00011000 # integer 69632 OFFSET_MACH = 14503 14503 + 69632 = 84135 (The Event ID for EVT_MCP_MACH_SET) I took this all straight from a post by Pete Dowson explaining how to do it. I've been searching for that post again and can't seem to find where I came across it but embedding the Event ID into the integer was straight from someone else's forum post asking for similar assistance. For some reason the following didn't log in the file, but it was displayed on the sim window the entire time (it never changed): IPC 3110(U32) = 84135 Also, note the fact that the 0x3114 Parameter will increase followed by a jump back to a lower value. This occurs because the simulator MCP isn't incrementing as it should. My hardware MCP then reads 0x6540 and sees that the Mach is lower and resets itself back to the sim's value. The value doesn't even change until every 0.01 mach increment is reached since as you mentioned, it is set as a 2 digit integer. So lots of what you're going to read is me speedily scrolling to get to the next 0.01 mach. Thank you so much for your patience through this. It's been really frustrating since the rest of my project works flawlessly. I just want to get this last tidbit to work so I can share it with everyone! Here are my logs: Console Started ... [Log closed by user request, and continued in new file] 1896859 System time = 02/12/2023 21:56:26, Simulator time = 13:48:12 (20:48Z) 1896859 *** FSUIPC log file being closed Minimum frame rate was 37.6 fps, Maximum was 68.6 fps Average frame rate for running time of 1526 secs = 54.8 fps Maximum AI traffic for session was 0 aircraft Memory managed: 809 Allocs, 795 Freed ********* FSUIPC Log file closed *********** User Name="James Hunt" User Addr="*********@domain.dot" FSUIPC6 Key is provided WideFS7 Key is provided 1896859 System time = 02/12/2023 21:56:26, Simulator time = 13:48:12 (20:48Z) 1896859 FLT UNC path = "E:\Documents\Prepar3D v5 Files\" [Continuation log requested by user] Running inside Prepar3D v5 on Windows 10 Module base=7FF93A770000 1896859 LogOptions changed, now 00000000 00000001 1901890 Monitor IPC:3114 (S32) = 63 1901937 Monitor IPC:6540 (FLT32) = 0.6250 1901953 Monitor IPC:3114 (S32) = 64 1902000 Monitor IPC:6540 (FLT32) = 0.6260 1902078 Monitor IPC:3114 (S32) = 62 1902093 Monitor IPC:6540 (FLT32) = 0.6250 1903203 Monitor IPC:6540 (FLT32) = 0.6240 1903468 Monitor IPC:3114 (S32) = 63 1903500 Monitor IPC:6540 (FLT32) = 0.6250 1909796 Monitor IPC:3114 (S32) = 64 1909812 Monitor IPC:6540 (FLT32) = 0.6260 1909875 Monitor IPC:3114 (S32) = 65 1909890 Monitor IPC:6540 (FLT32) = 0.6280 1910046 Monitor IPC:6540 (FLT32) = 0.6300 1910484 Monitor IPC:6540 (FLT32) = 0.6320 1910578 Monitor IPC:3114 (S32) = 66 1910625 Monitor IPC:6540 (FLT32) = 0.6350 1910640 Monitor IPC:3114 (S32) = 67 1910703 Monitor IPC:3114 (S32) = 63 1910718 Monitor IPC:6540 (FLT32) = 0.6370 1910781 Monitor IPC:6540 (FLT32) = 0.6360 1910828 Monitor IPC:3114 (S32) = 64 1911718 Monitor IPC:3114 (S32) = 63 1911750 Monitor IPC:6540 (FLT32) = 0.6350 1911828 Monitor IPC:6540 (FLT32) = 0.6340 1912203 Monitor IPC:3114 (S32) = 64 1912203 Monitor IPC:6540 (FLT32) = 0.6350 1912750 Monitor IPC:3114 (S32) = 63 1912812 Monitor IPC:6540 (FLT32) = 0.6340 1919500 Monitor IPC:3114 (S32) = 64 1919562 Monitor IPC:6540 (FLT32) = 0.6350 1919921 Monitor IPC:3114 (S32) = 65 1919953 Monitor IPC:6540 (FLT32) = 0.6360 1920000 Monitor IPC:6540 (FLT32) = 0.6370 1920062 Monitor IPC:3114 (S32) = 66 1920078 Monitor IPC:6540 (FLT32) = 0.6390 1920125 Monitor IPC:3114 (S32) = 63 1920156 Monitor IPC:6540 (FLT32) = 0.6380 1920234 Monitor IPC:6540 (FLT32) = 0.6370 1920609 Monitor IPC:6540 (FLT32) = 0.6360 1920671 Monitor IPC:3114 (S32) = 64 1921093 Monitor IPC:3114 (S32) = 63 1921125 Monitor IPC:6540 (FLT32) = 0.6350 1921281 Monitor IPC:6540 (FLT32) = 0.6340 1921390 Monitor IPC:3114 (S32) = 64 1921437 Monitor IPC:6540 (FLT32) = 0.6350 1921468 Monitor IPC:3114 (S32) = 65 1921500 Monitor IPC:6540 (FLT32) = 0.6360 1922250 Monitor IPC:6540 (FLT32) = 0.6370 1922328 Monitor IPC:3114 (S32) = 66 1922328 Monitor IPC:6540 (FLT32) = 0.6390 1922406 Monitor IPC:6540 (FLT32) = 0.6410 1922484 Monitor IPC:6540 (FLT32) = 0.6430 1923156 Monitor IPC:3114 (S32) = 64 1945359 Monitor IPC:3114 (S32) = 63 1945359 Monitor IPC:6540 (FLT32) = 0.6420 1945421 Monitor IPC:3114 (S32) = 62 1945437 Monitor IPC:6540 (FLT32) = 0.6400 1945640 Monitor IPC:3114 (S32) = 6 1945781 Monitor IPC:3114 (S32) = 40 1949437 Monitor IPC:3114 (S32) = 41 1950531 Monitor IPC:3114 (S32) = 42 1952078 Monitor IPC:3114 (S32) = 43 1952609 Monitor IPC:3114 (S32) = 44 1953015 Monitor IPC:3114 (S32) = 45 1953171 Monitor IPC:3114 (S32) = 46 1953984 Monitor IPC:3114 (S32) = 47 1954531 Monitor IPC:3114 (S32) = 48 1954593 Monitor IPC:3114 (S32) = 49 1955156 Monitor IPC:3114 (S32) = 50 1955312 Monitor IPC:3114 (S32) = 51 1955312 Monitor IPC:3114 (S32) = 52 1955343 Monitor IPC:3114 (S32) = 53 1956093 Monitor IPC:3114 (S32) = 54 1956796 Monitor IPC:3114 (S32) = 55 1957343 Monitor IPC:3114 (S32) = 56 1957468 Monitor IPC:3114 (S32) = 57 1957484 Monitor IPC:3114 (S32) = 58 1957953 Monitor IPC:3114 (S32) = 59 1959187 Monitor IPC:3114 (S32) = 60 1959234 Monitor IPC:6540 (FLT32) = 0.6360 1959687 Monitor IPC:3114 (S32) = 63 1959687 Monitor IPC:6540 (FLT32) = 0.6350 1960828 Monitor IPC:6540 (FLT32) = 0.6340 1966125 Monitor IPC:3114 (S32) = 64 1966125 Monitor IPC:6540 (FLT32) = 0.6350 1966265 Monitor IPC:3114 (S32) = 65 1966281 Monitor IPC:6540 (FLT32) = 0.6360 1966328 Monitor IPC:3114 (S32) = 66 1966359 Monitor IPC:6540 (FLT32) = 0.6380 1967156 Monitor IPC:3114 (S32) = 63 1967187 Monitor IPC:6540 (FLT32) = 0.6370 1968234 Monitor IPC:6540 (FLT32) = 0.6360 1969281 Monitor IPC:6540 (FLT32) = 0.6350 1970406 Monitor IPC:6540 (FLT32) = 0.6340 1974250 Monitor IPC:3114 (S32) = 64 1974250 Monitor IPC:6540 (FLT32) = 0.6350 1974656 Monitor IPC:3114 (S32) = 63 1974687 Monitor IPC:6540 (FLT32) = 0.6340 1975296 Monitor IPC:3114 (S32) = 64 1975359 Monitor IPC:6540 (FLT32) = 0.6350 1975921 Monitor IPC:3114 (S32) = 65 1975953 Monitor IPC:6540 (FLT32) = 0.6360 1975984 Monitor IPC:3114 (S32) = 66 1976046 Monitor IPC:6540 (FLT32) = 0.6380 1976562 Monitor IPC:6540 (FLT32) = 0.6400 1976593 Monitor IPC:3114 (S32) = 67 1976625 Monitor IPC:6540 (FLT32) = 0.6430 1976703 Monitor IPC:6540 (FLT32) = 0.6460 1976781 Monitor IPC:6540 (FLT32) = 0.6480 1976812 Monitor IPC:3114 (S32) = 64 1976859 Monitor IPC:6540 (FLT32) = 0.6470 1977468 Monitor IPC:6540 (FLT32) = 0.6460 1977531 Monitor IPC:6540 (FLT32) = 0.6450 1977687 Monitor IPC:6540 (FLT32) = 0.6440 1977796 Monitor IPC:3114 (S32) = 65 1977828 Monitor IPC:3114 (S32) = 64 1979921 Monitor IPC:3114 (S32) = 65 1979937 Monitor IPC:6540 (FLT32) = 0.6450 1980078 Monitor IPC:3114 (S32) = 66 1980078 Monitor IPC:6540 (FLT32) = 0.6460 1981062 Monitor IPC:3114 (S32) = 64 1981062 Monitor IPC:6540 (FLT32) = 0.6450 1982187 Monitor IPC:6540 (FLT32) = 0.6440 1984156 Monitor IPC:3114 (S32) = 65 1984203 Monitor IPC:6540 (FLT32) = 0.6450 1985312 Monitor IPC:3114 (S32) = 64 1985328 Monitor IPC:6540 (FLT32) = 0.6440 1986015 Monitor IPC:3114 (S32) = 65 1986078 Monitor IPC:3114 (S32) = 66 1986078 Monitor IPC:6540 (FLT32) = 0.6460 1986390 Monitor IPC:3114 (S32) = 64 1986390 Monitor IPC:6540 (FLT32) = 0.6450 1986609 Monitor IPC:6540 (FLT32) = 0.6440 1986828 Monitor IPC:3114 (S32) = 65 1986828 Monitor IPC:6540 (FLT32) = 0.6450 1987453 Monitor IPC:3114 (S32) = 64 1987500 Monitor IPC:6540 (FLT32) = 0.6440 1987812 Monitor IPC:3114 (S32) = 65 1987812 Monitor IPC:6540 (FLT32) = 0.6450 1988656 Monitor IPC:3114 (S32) = 66 1988703 Monitor IPC:6540 (FLT32) = 0.6460 1988734 Monitor IPC:3114 (S32) = 67 1988781 Monitor IPC:6540 (FLT32) = 0.6480 1988859 Monitor IPC:6540 (FLT32) = 0.6500 1988875 Monitor IPC:3114 (S32) = 68 1988937 Monitor IPC:6540 (FLT32) = 0.6530 1989546 Monitor IPC:3114 (S32) = 65 1992984 Monitor IPC:3114 (S32) = 66 1992984 Monitor IPC:6540 (FLT32) = 0.6540 1993140 Monitor IPC:3114 (S32) = 67 1993203 Monitor IPC:6540 (FLT32) = 0.6560 1993843 Monitor IPC:3114 (S32) = 65 1993875 Monitor IPC:6540 (FLT32) = 0.6540 1994062 Monitor IPC:3114 (S32) = 66 1994125 Monitor IPC:6540 (FLT32) = 0.6550 1994281 Monitor IPC:3114 (S32) = 67 1994343 Monitor IPC:6540 (FLT32) = 0.6560 1995046 Monitor IPC:3114 (S32) = 68 1995078 Monitor IPC:6540 (FLT32) = 0.6580 1995109 Monitor IPC:3114 (S32) = 69 1995156 Monitor IPC:6540 (FLT32) = 0.6610 1995171 Monitor IPC:3114 (S32) = 70 1995234 Monitor IPC:6540 (FLT32) = 0.6650 1995328 Monitor IPC:6540 (FLT32) = 0.6680 1995468 Monitor IPC:6540 (FLT32) = 0.6710 1995625 Monitor IPC:6540 (FLT32) = 0.6740 1996000 Monitor IPC:3114 (S32) = 67 1996859 Monitor IPC:3114 (S32) = 68 1996890 Monitor IPC:6540 (FLT32) = 0.6750 1997078 Monitor IPC:3114 (S32) = 67 1997109 Monitor IPC:6540 (FLT32) = 0.6740 2000687 Monitor IPC:3114 (S32) = 68 2000718 Monitor IPC:6540 (FLT32) = 0.6750 2000953 Monitor IPC:3114 (S32) = 69 2001000 Monitor IPC:6540 (FLT32) = 0.6760 2001296 Monitor IPC:3114 (S32) = 67 2001328 Monitor IPC:6540 (FLT32) = 0.6750 2001453 Monitor IPC:6540 (FLT32) = 0.6740 2001718 Monitor IPC:3114 (S32) = 68 2001750 Monitor IPC:6540 (FLT32) = 0.6750 2002421 Monitor IPC:3114 (S32) = 67 2002437 Monitor IPC:6540 (FLT32) = 0.6740 2002578 Monitor IPC:3114 (S32) = 68 2002578 Monitor IPC:6540 (FLT32) = 0.6750 2002656 Monitor IPC:3114 (S32) = 69 2002656 Monitor IPC:6540 (FLT32) = 0.6760 2003343 Monitor IPC:6540 (FLT32) = 0.6770 2003406 Monitor IPC:6540 (FLT32) = 0.6780 2003468 Monitor IPC:3114 (S32) = 67 2003500 Monitor IPC:6540 (FLT32) = 0.6770 2003562 Monitor IPC:6540 (FLT32) = 0.6750 2003703 Monitor IPC:6540 (FLT32) = 0.6740 2004046 Monitor IPC:3114 (S32) = 68 2004078 Monitor IPC:6540 (FLT32) = 0.6750 2004453 Monitor IPC:3114 (S32) = 67 2004468 Monitor IPC:6540 (FLT32) = 0.6740 2004765 Monitor IPC:3114 (S32) = 68 2004828 Monitor IPC:3114 (S32) = 69 2004828 Monitor IPC:6540 (FLT32) = 0.6760 2004906 Monitor IPC:3114 (S32) = 70 2004921 Monitor IPC:6540 (FLT32) = 0.6780 2004953 Monitor IPC:3114 (S32) = 71 2005000 Monitor IPC:6540 (FLT32) = 0.6810 2005500 Monitor IPC:3114 (S32) = 68 2010000 Monitor IPC:3114 (S32) = 69 2010000 Monitor IPC:6540 (FLT32) = 0.6820 2010078 Monitor IPC:3114 (S32) = 70 2010078 Monitor IPC:6540 (FLT32) = 0.6840 2010515 Monitor IPC:3114 (S32) = 71 2010531 Monitor IPC:6540 (FLT32) = 0.6870 2010593 Monitor IPC:3114 (S32) = 72 2010609 Monitor IPC:6540 (FLT32) = 0.6900 2010750 Monitor IPC:3114 (S32) = 73 2010750 Monitor IPC:3114 (S32) = 74 2010750 Monitor IPC:6540 (FLT32) = 0.6990 2010796 Monitor IPC:3114 (S32) = 6 2011093 Monitor IPC:3114 (S32) = 40 2011890 Monitor IPC:3114 (S32) = 69 2011953 Monitor IPC:6540 (FLT32) = 0.6980 2012140 Monitor IPC:3114 (S32) = 70 2012203 Monitor IPC:3114 (S32) = 71 2012265 Monitor IPC:6540 (FLT32) = 0.6990 2012328 Monitor IPC:6540 (FLT32) = 0.7000 2012625 Monitor IPC:6540 (FLT32) = 0.7010 2012703 Monitor IPC:6540 (FLT32) = 0.7020 2012937 Monitor IPC:6540 (FLT32) = 0.7030 2012953 Monitor IPC:3114 (S32) = 70 2013640 Monitor IPC:3114 (S32) = 71 2013687 Monitor IPC:6540 (FLT32) = 0.7040 2014031 Monitor IPC:3114 (S32) = 70 2014312 Monitor IPC:3114 (S32) = 71 2014359 Monitor IPC:6540 (FLT32) = 0.7050 2015078 Monitor IPC:3114 (S32) = 72 2015109 Monitor IPC:6540 (FLT32) = 0.7060 2015125 Monitor IPC:3114 (S32) = 70 2015203 Monitor IPC:6540 (FLT32) = 0.7050 2015562 Monitor IPC:6540 (FLT32) = 0.7040 2015671 Monitor IPC:3114 (S32) = 71 2015703 Monitor IPC:6540 (FLT32) = 0.7050 2518390 Sim stopped: average frame rate for last 621 secs = 62.9 fps 2518390 Max AI traffic was 0 aircraft 2518390 -------------------------------------------------------------------
John Dowson Posted December 4, 2023 Report Posted December 4, 2023 On 12/3/2023 at 4:36 AM, snizbatch said: PMDG's MCP variables (0x6540 for MACH) are read only. All PMDG-specific offsets are read-only. On 12/3/2023 at 4:36 AM, snizbatch said: Through research I discovered that it was possible to set them through offset 0x3110 by specifying the true offset in the call. The Offset isn't the parameter. It is included WITH the parameter (as the 2 HIGH BYTES) hence the 32 bit shift "<< 32". The parameter is whatever is in my sendval variable. I know how offset 0x3110 works - it is a facility for sending any control/event to the FS. You do NOT specify the offset, you specify the custom control number together with the parameter to the control/event. You are NOT writing an offset address, you are writing a custom control number. I don't understand why you keep trying to explain this - I understand what you are trying to do, it is just that your terminology is misleading. Do not confuse offsets with controls/events. On 12/3/2023 at 4:36 AM, snizbatch said: For some reason the following didn't log in the file, but it was displayed on the sim window the entire time (it never changed): IPC 3110(U32) = 84135 Offsets are only logged when the value is changed, Writing the same value that the offset already holds will trigger the event, but it will not be logged as an offset value change as the value has not changed. This is why I also advised activating logging for Events, as you would then also see the event/control being sent together with the parameter. If FSUIPC is sending the correct control/event with the correct parameter, and this is not working in the aircraft, then this is a question for PMDG. I am not familiar with this aircraft (and I do not have this aircraft) and therefore cannot advise. The PMDG header file does say 'Sets MCP MACH (if active) to parameter*0.01' - so is MCP mach active? have you tried using control/event EVT_MCP_IAS_SET (84134) instead? As I said, I am not familiar with this aircraft and do not know how these MCP control work, but if FSUIPC is behaving as expected, you need to ask about this on the PMDG support forums. John
snizbatch Posted December 4, 2023 Author Report Posted December 4, 2023 John, Once again thank you for getting back to me quickly. I apologize for my ignorance to the the names of controls vs offsets. I'm completely new to all of this. My hobbies are scattered between flying real aircraft, model aircraft, building computers and electronics, 3D printing, and most importantly family. As such, I guess I haven't dedicated enough time to learning the inner workings of MSFS/Prepar3D. I've attempted to tie many of my hobbies together to create this MCP and hitting this one snag has been frustrating. I really appreciate your patience in trying to help. I know I could have turned on logging for events to capture 3110. It was so noisy that I simply elected to cut and paste the value for you as I did. It appears that everything is being sent as intended and that I simply need help from PMDG. I have posted on their forum for assistance. https://forum.pmdg.com/forum/main-forum/cockpit-builders/274538-problem-writing-mcp-mach-control-to-0x3110-on-777-prepar3d-using-fsuipc Again, thank you for your help. James Hunt
John Dowson Posted December 4, 2023 Report Posted December 4, 2023 6 minutes ago, snizbatch said: I apologize for my ignorance to the the names of controls vs offsets. I'm completely new to all of this. It is just confusing for me when you keep talking about offsets as opposed to events. Offsets are FSUIPC-specific and are just memory addresses that you can read and write to. Controls/events are the commands that you send to the FS, which are defined either by the FS (standard controls), the aircraft (custom controls) or FSUIPC (FSSUIPC added controls). 9 minutes ago, snizbatch said: I know I could have turned on logging for events to capture 3110. It was so noisy that I simply elected to cut and paste the value for you as I did. Yes, logging events can show many events that you are not interested in, and many add-on aircraft can continually emit some events which are just noise. You can ignore these by using the DontLogThese ini parameter. 11 minutes ago, snizbatch said: It appears that everything is being sent as intended and that I simply need help from PMDG. Yes, that is what I thought. Please update this thread if/when you get a response or understand why the controls are not having the desired effect. Cheers, 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