Mach Discussion > Mach SDK plugin questions and answers.
Mach4IPC.dll interop for C#
(1/1)
wz2b:
Does anybody have a Mach4IPC interop bindings library for C#?
wz2b:
I'm still trying to get real time XYZ and machine state out of my older Mach 4 and am taking another path. I watched a youtube video where somebody was doing some control by attaching to MachIPC.DLL from C#. I couldn't find any documentation on MachIPC.DLL but I did a dumpbin on it and it has many of the same symbols as MachCore.DLL including things like:
--- Code: --- _mcAxisGetMachinePos@12
_mcAxisIsHoming@12
_mcAxisIsStill@12
_mcSpindleGetMotorRPM@8
_mcAxisGetPos@12
--- End code ---
Based on nothing more than the names matching, I copied a few mappings out of one of the samples, hoping it would work the same:
--- Code: --- [DllImport("Mach4IPC.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I4)]
public static extern int mcAxisGetPos(
[param: MarshalAs(UnmanagedType.I4)] int mInst,
[param: MarshalAs(UnmanagedType.I4)] int axis,
[param: MarshalAs(UnmanagedType.R8), In(), Out()] ref double val);
[DllImport("Mach4IPC.dll", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.I4)]
public static extern int mcAxisGetMachinePos(
[param: MarshalAs(UnmanagedType.I4)] int mInst,
[param: MarshalAs(UnmanagedType.I4)] int axis,
[param: MarshalAs(UnmanagedType.R8), In(), Out()] ref double val);
--- End code ---
I don't know that is right, and I don't know that MachIPC.DLL is intended to be used this way, but based on the name it seems so. My goal here would be to create a standalone program that gets the info that I want out of running Mach4 and then sends it out over the network, probably via MQTT.
I do not know how to begin a 'session' either - mInst looks like it's some kind of handle that I need to obtain first.
Am I on the right path here?
Navigation
[0] Message Index
Go to full version