Jump to content
The simFlight Network Forums

snizbatch

new Members
  • Posts

    4
  • Joined

  • Last visited

Profile Information

  • Gender
    Male
  • Location
    Orange Park, FL

snizbatch's Achievements

Newbie

Newbie (1/14)

  • Week One Done Rare
  • Dedicated Rare
  • First Post Rare
  • Conversation Starter Rare

Recent Badges

0

Reputation

  1. 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
  2. John, 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 -------------------------------------------------------------------
  3. 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.
  4. 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?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.