Pressing the cdu buttons. #79
-
First of all, thank you for your help here. However, now I'm facing another issue. It's quite easy to interact with switches like landing lights because they only take a value of 1 or 0. But buttons don't work like that. When I press a button, its value becomes 100, and when I release it, it becomes 0. I can do this with my node app, but it only creates a pressing animation. There's no change on the screen. const enum DefinitionID {
CDU_A,
LIVE_DATA
}
const dataToSet = new RawBuffer(0);
dataToSet.clear();
dataToSet.writeInt32(100);
handle.setDataOnSimObject(DefinitionID.CDU_A, SimConnectConstants.OBJECT_ID_USER, {
buffer: dataToSet,
arrayCount: 0,
tagged: false
}); |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
Not able to check atm, but I think all buttons in the PMDG aircraft has a dedicated event id. Perhaps you need to use those instead of the simulation variables? |
Beta Was this translation helpful? Give feedback.
-
In the PMDG SDK docs they use const PMDG_NG3_CONTROL_NAME = "PMDG_NG3_Control"
const PMDG_NG3_CONTROL_ID = 0x4E473333
const PMDG_NG3_CONTROL_DEFINITION = 0x4E473334
const dataToSet = new RawBuffer(0);
dataToSet.clear();
dataToSet.writeInt32(THIRD_PARTY_EVENT_ID_MIN + 573); // EVT_CDU_L_A found in PMDG_NG3_SDK.h
dataToSet.writeInt32(1); // 100 gave me a SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS
handle.mapClientDataNameToID(PMDG_NG3_CONTROL_NAME, PMDG_NG3_CONTROL_ID)
handle.addToClientDataDefinition(PMDG_NG3_CONTROL_DEFINITION, 0, 64, 0, 0) // 64 bits
handle.setClientData(PMDG_NG3_CONTROL_ID, PMDG_NG3_CONTROL_DEFINITION, 0, 0, 64, dataToSet.getBuffer()) // 64 bits According to the manual this will write to a "command area" which the aircraft is continuously checking for new content, and you will need to wait for this area to be cleared (by subscribing for changes) before doing a new write. However, the manual also shows how to use direct event triggering, which I was talking about. This seems like a simpler approach, but I guess it depends on your use case. I have added code for this in the PMDG sample I'm a bit curious to why |
Beta Was this translation helpful? Give feedback.
In the PMDG SDK docs they use
SimConnect_SetClientData
for writing control events. Withnode-simconnect
that would be something like this: