Jump to content
The simFlight Network Forums

PMDG 777 MCP FLT32 0x3110 variable writing challenge


Recommended Posts

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:

image.png.cca512920e744bf8196ca53ca6e15d17.png

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? 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.  

mcp.jpg

 

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 -------------------------------------------------------------------
 

 

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.