add files
This commit is contained in:
Generated
+14
@@ -0,0 +1,14 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "connect_demo"
|
||||||
|
version = "0.0.0"
|
||||||
|
dependencies = [
|
||||||
|
"open_wrapper",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "open_wrapper"
|
||||||
|
version = "0.1.0"
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
".", # keep the Tauri app in the workspace
|
||||||
|
"open_wrapper"
|
||||||
|
]
|
||||||
|
|
||||||
|
[package]
|
||||||
|
name = "connect_demo"
|
||||||
|
edition = "2021"
|
||||||
|
build = "build.rs"
|
||||||
|
|
||||||
|
[workspace.package]
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
open_wrapper = { path = "open_wrapper" }
|
||||||
@@ -0,0 +1,815 @@
|
|||||||
|
// =================================================================
|
||||||
|
// \brief This class provide API for open.dll
|
||||||
|
// \copyright Copyright (C) Siemens AG 2024 All Rights Reserved.
|
||||||
|
// Confidential
|
||||||
|
// =================================================================
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Siemens.SinumerikOne.OpenClientSample
|
||||||
|
{
|
||||||
|
public class OpenApiWrapper
|
||||||
|
{
|
||||||
|
public enum OpenReturnCodes : int
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Call was successful
|
||||||
|
/// </summary>
|
||||||
|
Ok = 0,
|
||||||
|
|
||||||
|
// --------- Application control and Connection ---------
|
||||||
|
/// <summary>
|
||||||
|
/// An internal error occurred.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInternal = -1001,
|
||||||
|
/// <summary>
|
||||||
|
/// SINUMERIK ONE install path not found in registry.
|
||||||
|
/// </summary>
|
||||||
|
ErrorVcNotFound = -1002,
|
||||||
|
/// <summary>
|
||||||
|
/// CreateProcess of SINUMERIK ONE instance failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorCreateProcess = -1003,
|
||||||
|
/// <summary>
|
||||||
|
/// An SINUMERIK ONE instance is already running.
|
||||||
|
/// </summary>
|
||||||
|
ErrorAlreadyRunning = -1004,
|
||||||
|
/// <summary>
|
||||||
|
/// SINUMERIK ONE close failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorCloseFailed = -1005,
|
||||||
|
/// <summary>
|
||||||
|
/// SINUMERIK ONE instance not found.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInstanceNotFound = -1006,
|
||||||
|
/// <summary>
|
||||||
|
/// The connection to SINUMERIK ONE is occupied.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInstanceBusy = -1007,
|
||||||
|
/// <summary>
|
||||||
|
/// No connection to SINUMERIK ONE.
|
||||||
|
/// </summary>
|
||||||
|
ErrorNoConnection = -1008,
|
||||||
|
/// <summary>
|
||||||
|
/// SINUMERIK ONE is not ready for communication.
|
||||||
|
/// </summary>
|
||||||
|
ErrorVcNotReady = -1009,
|
||||||
|
/// <summary>
|
||||||
|
/// Invalid parameter.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInvalidParameter = -1010,
|
||||||
|
/// <summary>
|
||||||
|
/// No valid license found. This code is deprecated !
|
||||||
|
/// </summary>
|
||||||
|
ErrorNoLicenseDeprecated = -1011,
|
||||||
|
/// <summary>
|
||||||
|
/// Connection to SINUMERIK ONE has been closed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorConnectionClosed = -1012,
|
||||||
|
/// <summary>
|
||||||
|
/// S7DOS simulation mode is active.
|
||||||
|
/// </summary>
|
||||||
|
ErrorS7DosSimulationActive = -1013,
|
||||||
|
/// <summary>
|
||||||
|
/// Version incompatible.
|
||||||
|
/// </summary>
|
||||||
|
ErrorVersionIncompatible = -1014,
|
||||||
|
/// <summary>
|
||||||
|
/// The called feature is not supported by the currently used backend.
|
||||||
|
/// </summary>
|
||||||
|
ErrorNotSupportedByBackend = -1015,
|
||||||
|
/// <summary>
|
||||||
|
/// At least one Window could not be embedded (blackbox mode).
|
||||||
|
/// </summary>
|
||||||
|
WarningWindowEmbedding = 1002,
|
||||||
|
/// <summary>
|
||||||
|
/// The Client has a lower(,but comnpatible) version than the Middleware.
|
||||||
|
/// </summary>
|
||||||
|
WarningVersionClientOld = 1003,
|
||||||
|
/// <summary>
|
||||||
|
/// The Middleware has a lower(but comnpatible) version than the Client.
|
||||||
|
/// </summary>
|
||||||
|
WarningVersionMiddlewareOld = 1004,
|
||||||
|
/// <summary>
|
||||||
|
/// Detected a lost client connection. Client has to reconnect.
|
||||||
|
/// </summary>
|
||||||
|
WarningConnectionCorrupted = 1005,
|
||||||
|
|
||||||
|
// --------- File handling (VCPs, startprofiles, etc.) ---------
|
||||||
|
/// <summary>
|
||||||
|
/// The file could not be found.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileNotFound = -2001,
|
||||||
|
/// <summary>
|
||||||
|
/// There is a project already open.
|
||||||
|
/// </summary>
|
||||||
|
ErrorProjectOpen = -2002,
|
||||||
|
/// <summary>
|
||||||
|
/// Loading the vcp file failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLoadFailed = -2003,
|
||||||
|
/// <summary>
|
||||||
|
/// No project open.
|
||||||
|
/// </summary>
|
||||||
|
ErrorNoProjectOpen = -2004,
|
||||||
|
/// <summary>
|
||||||
|
/// File is write protected.
|
||||||
|
/// </summary>
|
||||||
|
ErrorWriteProtected = -2005,
|
||||||
|
/// <summary>
|
||||||
|
/// Simulation is running.
|
||||||
|
/// </summary>
|
||||||
|
ErrorSimRunning = -2006,
|
||||||
|
/// <summary>
|
||||||
|
/// Saving the file failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorWriteFailed = -2007,
|
||||||
|
/// <summary>
|
||||||
|
/// Closing the project failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorVcpCloseFailed = -2008,
|
||||||
|
/// <summary>
|
||||||
|
/// The file is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInvalidFile = -2009,
|
||||||
|
/// <summary>
|
||||||
|
/// The selected cnc software is not available.
|
||||||
|
/// </summary>
|
||||||
|
ErrorCncSwUnavailable = -2010,
|
||||||
|
/// <summary>
|
||||||
|
/// The file could not be created.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileCreationFailed = -2011,
|
||||||
|
/// <summary>
|
||||||
|
/// The frontend not installed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFrontendNotInstalled = -2012,
|
||||||
|
/// <summary>
|
||||||
|
/// The no license for the frontend. This code is deprecated !
|
||||||
|
/// </summary>
|
||||||
|
ErrorFrontendNotLicensedDeprecated = -2013,
|
||||||
|
/// <summary>
|
||||||
|
/// The path to the project file is too long.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFilePathTooLong = -2014,
|
||||||
|
/// <summary>
|
||||||
|
/// The selected nck scaling is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInvalidNckscaling = -2015,
|
||||||
|
/// <summary>
|
||||||
|
/// The selected ncu number is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInvalidNcunumber = -2016,
|
||||||
|
|
||||||
|
// --------- Simulation Control ---------
|
||||||
|
/// <summary>
|
||||||
|
/// Starting the simulation failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorStartSimFailed = -3001,
|
||||||
|
/// <summary>
|
||||||
|
/// Stopping the simulation failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorStopSimFailed = -3002,
|
||||||
|
/// <summary>
|
||||||
|
/// Reseting the simulation failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorResetSimFailed = -3004,
|
||||||
|
/// <summary>
|
||||||
|
/// Reseting the simulation failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorSimSpeedInvalid = -3005,
|
||||||
|
/// <summary>
|
||||||
|
/// Simulation is not available.
|
||||||
|
/// </summary>
|
||||||
|
ErrorSimNotAvailable = -3006,
|
||||||
|
/// <summary>
|
||||||
|
/// Simulation is not running.
|
||||||
|
/// </summary>
|
||||||
|
ErrorSimNotRunning = -3007,
|
||||||
|
/// <summary>
|
||||||
|
/// Simulation is running.
|
||||||
|
/// </summary>
|
||||||
|
SimRunning = 3001,
|
||||||
|
/// <summary>
|
||||||
|
/// Simulation is not running.
|
||||||
|
/// </summary>
|
||||||
|
SimNotRunning = 3002,
|
||||||
|
|
||||||
|
// --------- Synchronized Operation ---------
|
||||||
|
/// <summary>
|
||||||
|
/// The event is unknown.
|
||||||
|
/// </summary>
|
||||||
|
ErrorEventUnknown = -4001,
|
||||||
|
/// <summary>
|
||||||
|
/// No events are registered.
|
||||||
|
/// </summary>
|
||||||
|
ErrorNoEventsRegistered = -4002,
|
||||||
|
/// <summary>
|
||||||
|
/// The simulation got interrupted.
|
||||||
|
/// </summary>
|
||||||
|
ErrorSimInterrupted = -4003,
|
||||||
|
|
||||||
|
// --------- Data Access ---------
|
||||||
|
/// <summary>
|
||||||
|
/// Unknown dictionary entry.
|
||||||
|
/// </summary>
|
||||||
|
ErrorUnknownElement = -5001,
|
||||||
|
/// <summary>
|
||||||
|
/// The dictionary id is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInvalidDictId = -5002,
|
||||||
|
/// <summary>
|
||||||
|
/// Not enough memory for the data.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInsufficientMemory = -5003,
|
||||||
|
/// <summary>
|
||||||
|
/// Elemente is not an array.
|
||||||
|
/// </summary>
|
||||||
|
ErrorNoarray = -5004,
|
||||||
|
/// <summary>
|
||||||
|
/// Wrong type for the data.
|
||||||
|
/// </summary>
|
||||||
|
ErrorWrongType = -5005,
|
||||||
|
/// <summary>
|
||||||
|
/// Wrong accesrights for the data.
|
||||||
|
/// </summary>
|
||||||
|
ErrorInsufficientRights = -5006,
|
||||||
|
/// <summary>
|
||||||
|
/// The application is not in the wait state
|
||||||
|
/// </summary>
|
||||||
|
ErrorNotInWait = -5007,
|
||||||
|
/// <summary>
|
||||||
|
/// No further data available.
|
||||||
|
/// </summary>
|
||||||
|
NoMoreData = 5001,
|
||||||
|
|
||||||
|
// --------- File Operations ---------
|
||||||
|
/// <summary>
|
||||||
|
/// The domain for file system operation is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpInvalidDomain = -6001,
|
||||||
|
/// <summary>
|
||||||
|
/// The source path for file system operation is not absolute.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpSourcePathNotAbsolute = -6002,
|
||||||
|
/// <summary>
|
||||||
|
/// The source file for file system operation does not exist.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpSourceFileNotExists = -6003,
|
||||||
|
/// <summary>
|
||||||
|
/// The destination path for file system operation is not absolute.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpDestinationPathNotAbsolute = -6004,
|
||||||
|
/// <summary>
|
||||||
|
/// The destination file or directory for file system operation already exsists.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpDestinationAlreadyExists = -6005,
|
||||||
|
/// <summary>
|
||||||
|
/// The destination directory for file system operation does not exists.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpDestinationDirectoryNotExists = -6006,
|
||||||
|
/// <summary>
|
||||||
|
/// The directory for file system operation does not exists.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpDirectoryNotExists = -6007,
|
||||||
|
/// <summary>
|
||||||
|
/// The directory for file system operation is not empty.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileOpDirectoryNotEmpty = -6008,
|
||||||
|
/// <summary>
|
||||||
|
/// A file or a part program can't select.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileSelectNotPossible = -6009,
|
||||||
|
/// <summary>
|
||||||
|
/// The channel does not exists.
|
||||||
|
/// </summary>
|
||||||
|
ErrorChannelNotExists = -6010,
|
||||||
|
/// <summary>
|
||||||
|
/// The file is in edit mode.
|
||||||
|
/// </summary>
|
||||||
|
ErrorFileUsed = -6011,
|
||||||
|
|
||||||
|
// --------- License handling ---------
|
||||||
|
/// <summary>
|
||||||
|
/// General error, licensing failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseNoLicense = -7001,
|
||||||
|
/// <summary>
|
||||||
|
/// The application mentioned in the license file, does not match any known application in the xMVM context.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseUnknownApplication = -7002,
|
||||||
|
/// <summary>
|
||||||
|
/// The frontend is not CMVM or RMVM.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseUnknownFrontend = -7003,
|
||||||
|
/// <summary>
|
||||||
|
/// The connection to the license server could not be established.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseNoConnection = -7004,
|
||||||
|
/// <summary>
|
||||||
|
/// The license handler could not be instantiated.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseNoLicenseHandler = -7005,
|
||||||
|
/// <summary>
|
||||||
|
/// The Server is busy, cant read, cant write.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseErrorAtServerSite = -7006,
|
||||||
|
/// <summary>
|
||||||
|
/// The license for a particular feature is not available.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseOptionalLicenseKeyNotAvailable = -7007,
|
||||||
|
/// <summary>
|
||||||
|
/// The license for a particular feature could not be granted.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseOptionalLicenseKeyNotGranted = -7008,
|
||||||
|
/// <summary>
|
||||||
|
/// The license for a particular feature could not be locked at the license server.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseOptionalLicenseNotAqcuired = -7009,
|
||||||
|
/// <summary>
|
||||||
|
/// The validation of the license file failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseOptionalLicenseCheckFailed = -7010,
|
||||||
|
/// <summary>
|
||||||
|
/// The acquistion of a license was not successfull.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseKeyNotAvailable = -7011,
|
||||||
|
/// <summary>
|
||||||
|
/// The main license key could not be granted.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseKeyGrantFailed = -7012,
|
||||||
|
/// <summary>
|
||||||
|
/// The main license key could not be released.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseKeyReleaseFailed = -7013,
|
||||||
|
/// <summary>
|
||||||
|
/// The main license key is invalid.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseInvalid = -7014,
|
||||||
|
/// <summary>
|
||||||
|
/// The license key is already in use.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseAlreadyInUse = -7015,
|
||||||
|
/// <summary>
|
||||||
|
/// The validation of the license key failed.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseCheckFailed = -7016,
|
||||||
|
/// <summary>
|
||||||
|
/// All licenses from the license pool are currently in use.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseAllLicensesInUse = -7017,
|
||||||
|
/// <summary>
|
||||||
|
/// The type of the used license is unknown.
|
||||||
|
/// </summary>
|
||||||
|
ErrorLicenseUnknownLicense = -7018,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenDictionaryElementType
|
||||||
|
{
|
||||||
|
Bool = 1,
|
||||||
|
Integer8Bit = 2,
|
||||||
|
UInteger8Bit = 3,
|
||||||
|
Integer16Bit = 4,
|
||||||
|
UInteger16Bit = 5,
|
||||||
|
Integer32Bit = 6,
|
||||||
|
UInteger32Bit = 7,
|
||||||
|
Integer64Bit = 8,
|
||||||
|
UInteger64Bit = 9,
|
||||||
|
Double = 10,
|
||||||
|
String = 11,
|
||||||
|
IntegerArray32Bit = 12,
|
||||||
|
UIntegerArray64Bit = 13,
|
||||||
|
BoolArray = 14,
|
||||||
|
DoubleArray = 15,
|
||||||
|
StringArray = 16,
|
||||||
|
UIntegerArray32Bit = 17,
|
||||||
|
UIntegerArray16Bit = 18,
|
||||||
|
UIntegerArray8Bit = 19,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenEventMaskDefinition : ulong
|
||||||
|
{
|
||||||
|
Unknown = 0x0000000000000000,
|
||||||
|
NckFirstIpo = 0x0000000000000008,
|
||||||
|
NckBootReady = 0x0000000000000004,
|
||||||
|
NckIpo = 0x0000000000000001,
|
||||||
|
NckChannelNewMotion = 0x0000000000000100,
|
||||||
|
NckChannelNewBlock = 0x0000000000000200,
|
||||||
|
NckChannelConfigChanged = 0x0000000000000400,
|
||||||
|
NckChannelStartPositioningMotion = 0x0000000000000800,
|
||||||
|
NckChannelEndPositioningMotion = 0x0000000000001000,
|
||||||
|
NckChannelLengthSlicePath = 0x0000000000001001,
|
||||||
|
NckChannelLengthSlicePositioning = 0x0000000000001002,
|
||||||
|
NckChannelAngleSlicePositioning = 0x0000000000001003,
|
||||||
|
NckChannelAngleSliceOrientation = 0x0000000000001004,
|
||||||
|
NckChannelStateChanged = 0x0000000000001005,
|
||||||
|
NckChannelProgramFinished = 0x0000000000001006,
|
||||||
|
PlcOb1 = 0x0000000000010000,
|
||||||
|
PlcHwConfigChanged = 0x0000000000020000,
|
||||||
|
PlcAcyclicCommunication = 0x0000000000040000,
|
||||||
|
ContentChanged = 0x0001000000000000,
|
||||||
|
ResetStarted = 0x0002000000000000,
|
||||||
|
ResetFinished = 0x0004000000000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenAxisMode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// axisMode undefined
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// interpolation mode
|
||||||
|
/// </summary>
|
||||||
|
Interpolation = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// positioning mode
|
||||||
|
/// </summary>
|
||||||
|
Positioning = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// speed mode turning left
|
||||||
|
/// </summary>
|
||||||
|
SpeedLeft = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// speed mode turning right
|
||||||
|
/// </summary>
|
||||||
|
SpeedRight = 4,
|
||||||
|
/// <summary>
|
||||||
|
/// speed mode stopped
|
||||||
|
/// </summary>
|
||||||
|
SpeedStop = 5,
|
||||||
|
/// <summary>
|
||||||
|
/// following axis - no specified type
|
||||||
|
/// </summary>
|
||||||
|
Following = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenAxisReferenceState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// reference state undefined
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// not referenced
|
||||||
|
/// </summary>
|
||||||
|
NotReferenced = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// referenced
|
||||||
|
/// </summary>
|
||||||
|
Referenced = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// referencing not required
|
||||||
|
/// </summary>
|
||||||
|
ReferenceNotRequired = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenMotionType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// value undefined / OEMIPO1 / OEMIPO2 / Involute
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// rapid motion independent from $AC_G0MODE
|
||||||
|
/// </summary>
|
||||||
|
Rapid = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// linear motion
|
||||||
|
/// </summary>
|
||||||
|
Linear = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// circle motion G2 / G3 / CIP / CT
|
||||||
|
/// </summary>
|
||||||
|
Circle = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// A/B/C-Spline / Poly
|
||||||
|
/// </summary>
|
||||||
|
Spline = 4,
|
||||||
|
/// <summary>
|
||||||
|
/// G33 / G331 / G332 / G34 / G35
|
||||||
|
/// </summary>
|
||||||
|
Thread = 5,
|
||||||
|
/// <summary>
|
||||||
|
/// involute INVCW / INVCCW
|
||||||
|
/// </summary>
|
||||||
|
Involute = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenCircleDirection
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// value undefined
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// clockwise
|
||||||
|
/// </summary>
|
||||||
|
Cw = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// counter clockwise
|
||||||
|
/// </summary>
|
||||||
|
Ccw = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenOperatingMode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// no operating mode
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// operating mode auto
|
||||||
|
/// </summary>
|
||||||
|
Auto = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// operating jog
|
||||||
|
/// </summary>
|
||||||
|
Jog = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// operating mode mda
|
||||||
|
/// </summary>
|
||||||
|
Mda = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenChannelState
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// no channel state
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// channel state activated
|
||||||
|
/// </summary>
|
||||||
|
Activated = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// channel state stopped
|
||||||
|
/// </summary>
|
||||||
|
Stopped = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// channel state reseted
|
||||||
|
/// </summary>
|
||||||
|
Reseted = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum OpenAxisType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// axisType undefined
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// linear axis
|
||||||
|
/// </summary>
|
||||||
|
Linear = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// round axis
|
||||||
|
/// </summary>
|
||||||
|
Rotatory = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// modulo axis
|
||||||
|
/// </summary>
|
||||||
|
Modulo = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// spindle axis
|
||||||
|
/// </summary>
|
||||||
|
Spindle = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public enum OpenProjectStates
|
||||||
|
{
|
||||||
|
Closed = 1,
|
||||||
|
Opening = 2,
|
||||||
|
Open = 3,
|
||||||
|
Booting = 4,
|
||||||
|
RunningOrPaused = 5,
|
||||||
|
ShuttingDown = 6,
|
||||||
|
Closing = 7,
|
||||||
|
Resetting = 8,
|
||||||
|
Saving = 9,
|
||||||
|
Error = 10,
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "startApplication", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes StartApplication(string strProfileFileName);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "stopApplication", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes StopApplication();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "connect", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes Connect();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "disconnect", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes Disconnect();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "openProject", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes OpenProject(string strFileName);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "createProject", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes CreateProject(string strFileName, string strVersion);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "createProjectWithScaling", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes CreateProjectWithScaling(string strFileName, string strVersion, string strNckScaling);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "createProjectWithScalingNCUNumber", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes CreateProjectWithScalingNCUNumber(string strFileName, string strVersion, string strNckScaling, UInt32 ncuNumber);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "saveProject", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes SaveProject();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "closeProject", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes CloseProject();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "bootController", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes BootController();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "shutdownController", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ShutdownController();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "resetController", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ResetController();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "registerForEvents", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes RegisterForEvents(UInt32 nEventListLength, IntPtr pEventList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "unregisterEvents", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes UnregisterEvents();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "waitForEvents", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WaitForEvents();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "continueSimulation", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ContinueSimulation();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getDictionaryId", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetDictionaryId(string strDictionaryElement, ref UInt32 pDictionaryId);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "registerWatch", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes RegisterWatch(UInt32 nWatchListLength, IntPtr pDictionaryIdList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "unregisterWatch", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes UnregisterWatch();
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getDictionaryElementType", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetDictionaryElementType(UInt32 nDictionaryId, ref byte pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger64BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger64BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, UInt64[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readSignedInteger32BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadSignedInteger32BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, Int32[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger32BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger32BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, UInt32[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger16BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger16BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, UInt16[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger8BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger8BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, byte[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readBoolArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadBoolArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, [Out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.I1)] bool[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readDoubleArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadDoubleArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, double[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readString", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadString(UInt32 nDictionaryId, UInt32 nStringMaxLength, IntPtr pString);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readStringArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadStringArray(UInt32 nDictionaryId, UInt32 nStringArrayMaxLength, UInt32 nStringMaxLength, IntPtr ppStringArray);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger16Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger16Bit(UInt32 nDictionaryId, ref UInt16 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readSignedInteger16Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadSignedInteger16Bit(UInt32 nDictionaryId, ref Int16 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger32Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger32Bit(UInt32 nDictionaryId, ref UInt32 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readSignedInteger32Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadSignedInteger32Bit(UInt32 nDictionaryId, ref Int32 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readUnsignedInteger64Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadUnsignedInteger64Bit(UInt32 nDictionaryId, ref UInt64 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readSignedInteger64Bit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadSignedInteger64Bit(UInt32 nDictionaryId, ref Int64 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getNumArrayElements", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetNumArrayElements(UInt32 nDictionaryId, ref UInt32 pNumArrayElements);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readBit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadBit(UInt32 nDictionaryId, ref bool pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readBool", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadBool(UInt32 nDictionaryId, ref bool pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readByte", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadByte(UInt32 nDictionaryId, ref byte pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readDouble", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadDouble(UInt32 nDictionaryId, ref double pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadWord(UInt32 nDictionaryId, ref UInt16 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readDoubleWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadDoubleWord(UInt32 nDictionaryId, ref UInt32 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readLongWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadLongWord(UInt32 nDictionaryId, ref UInt64 pValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readNextEvent", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadNextEvent(ref UInt64 pEvent);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "readNextEventWithNcuIndex", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ReadNextEventWithNcuIndex(ref UInt64 pEvent, ref Int32 pNcuIndex);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeBit", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteBit(UInt32 nDictionaryId, bool bValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeBool", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteBool(UInt32 nDictionaryId, bool bValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeByte", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteByte(UInt32 nDictionaryId, byte nValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeDouble", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteDouble(UInt32 nDictionaryId, double dValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteWord(UInt32 nDictionaryId, UInt16 nValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeDoubleWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteDoubleWord(UInt32 nDictionaryId, UInt32 nValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeLongWord", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteLongWord(UInt32 nDictionaryId, UInt64 nValue);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeBoolArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteBoolArray(UInt32 nDictionaryId, UInt32 nValueListLength, [In, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.I1)] bool[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getSimulationSpeed", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetSimulationSpeed(ref UInt32 pnPercent);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "setSimulationSpeed", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes SetSimulationSpeed(UInt32 pnPercent);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getCardPath", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetCardPath(UInt32 nCardPathMaxLength, IntPtr pCardPath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getCardPaths", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetCardPaths(UInt32 nCardPathsArrayMaxLength, UInt32 nCardPathMaxLength, IntPtr pCardPaths);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getFile", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetFile(string strSourceFilePath, string strDestinationFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "putFile", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes PutFile(string strSourceFilePath, string strDestinationFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "selectFile", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes SelectFile(string strSourceFilePath, string strChannelName);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "deleteFile", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes DeleteFile(string strFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "deleteDirectory", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes DeleteDirectory(string strDirectoryPath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "createDirectory", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes CreateDirectory(string strDirectoryPath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "listDirectory", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ListDirectory(string strDirectoryPath, string strResultFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getVersionInformation", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetVersionInformation(string strDestinationFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getProjectInformation", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetProjectInformation(string strVcpFilePath, string strDestinationFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getCurrentProjectInformation", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetCurrentProjectInformation(string strDestinationFilePath);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getCurrentProjectState", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetCurrentProjectState(ref Int32 pProjectState);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "importProjectSettings", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ImportProjectSettings(string strFileName, string strImportContentFileName);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "exportProjectSettings", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes ExportProjectSettings(string strFileName);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "writeUnsignedInteger8BitArray", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes WriteUnsignedInteger8BitArray(UInt32 nDictionaryId, UInt32 nValueListMaxLength, byte[] pValueList);
|
||||||
|
|
||||||
|
[DllImport("open.dll", EntryPoint = "getNumberOfNCUs", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern OpenReturnCodes GetNumberOfNCUs(ref UInt32 pNumberOfNCUs);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
use std::{
|
||||||
|
env,
|
||||||
|
fs,
|
||||||
|
io,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
};
|
||||||
|
|
||||||
|
fn main() -> io::Result<()> {
|
||||||
|
let manifest_dir =
|
||||||
|
PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set"));
|
||||||
|
let dll_source_dir = manifest_dir.join("open_wrapper").join("lib");
|
||||||
|
|
||||||
|
if !dll_source_dir.exists() {
|
||||||
|
println!(
|
||||||
|
"cargo:warning=DLL source directory '{}' not found. Skipping copy.",
|
||||||
|
dll_source_dir.display()
|
||||||
|
);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR not set"));
|
||||||
|
// OUT_DIR = target/{profile}/build/<pkg>/out
|
||||||
|
let profile_dir = out_dir
|
||||||
|
.ancestors()
|
||||||
|
.nth(3)
|
||||||
|
.expect("Unable to compute profile dir from OUT_DIR");
|
||||||
|
|
||||||
|
let dest_dir = Path::new(profile_dir);
|
||||||
|
fs::create_dir_all(&dest_dir)?;
|
||||||
|
|
||||||
|
for entry in fs::read_dir(&dll_source_dir)? {
|
||||||
|
let entry = entry?;
|
||||||
|
let path = entry.path();
|
||||||
|
if path.extension().map_or(false, |ext| ext.eq_ignore_ascii_case("dll")) {
|
||||||
|
let file_name = entry.file_name();
|
||||||
|
let dest_path = dest_dir.join(&file_name);
|
||||||
|
fs::copy(&path, &dest_path)?;
|
||||||
|
}
|
||||||
|
println!("cargo:rerun-if-changed={}", path.display());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[package]
|
||||||
|
name = "open_wrapper"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition.workspace = true
|
||||||
|
build = "build.rs"
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
use std::{env, path::PathBuf};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let manifest_dir =
|
||||||
|
PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR must be set"));
|
||||||
|
let lib_dir = manifest_dir.join("lib");
|
||||||
|
|
||||||
|
println!("cargo:rustc-link-search=native={}", lib_dir.display());
|
||||||
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
|
||||||
|
let open_lib = lib_dir.join("open.lib");
|
||||||
|
if open_lib.exists() {
|
||||||
|
println!("cargo:rerun-if-changed={}", open_lib.display());
|
||||||
|
} else {
|
||||||
|
println!(
|
||||||
|
"cargo:warning=Expected to find open.lib in '{}'. Copy the vendor import library there.",
|
||||||
|
lib_dir.display()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,75 @@
|
|||||||
|
LIBRARY open
|
||||||
|
EXPORTS
|
||||||
|
bootController
|
||||||
|
closeProject
|
||||||
|
connect
|
||||||
|
continueSimulation
|
||||||
|
createDirectory
|
||||||
|
createProject
|
||||||
|
createProjectWithScaling
|
||||||
|
createProjectWithScalingNCUNumber
|
||||||
|
deleteDirectory
|
||||||
|
deleteFile
|
||||||
|
disconnect
|
||||||
|
exportProjectSettings
|
||||||
|
getCardPath
|
||||||
|
getCardPaths
|
||||||
|
getCurrentProjectInformation
|
||||||
|
getCurrentProjectState
|
||||||
|
getDictionaryElementType
|
||||||
|
getDictionaryId
|
||||||
|
getFile
|
||||||
|
getNumArrayElements
|
||||||
|
getNumberOfNCUs
|
||||||
|
getProjectInformation
|
||||||
|
getSimulationSpeed
|
||||||
|
getVersionInformation
|
||||||
|
importProjectSettings
|
||||||
|
listDirectory
|
||||||
|
openProject
|
||||||
|
putFile
|
||||||
|
readBit
|
||||||
|
readBool
|
||||||
|
readBoolArray
|
||||||
|
readByte
|
||||||
|
readDouble
|
||||||
|
readDoubleArray
|
||||||
|
readDoubleWord
|
||||||
|
readLongWord
|
||||||
|
readNextEvent
|
||||||
|
readNextEventWithNcuIndex
|
||||||
|
readSignedInteger16Bit
|
||||||
|
readSignedInteger32Bit
|
||||||
|
readSignedInteger32BitArray
|
||||||
|
readSignedInteger64Bit
|
||||||
|
readString
|
||||||
|
readStringArray
|
||||||
|
readUnsignedInteger16Bit
|
||||||
|
readUnsignedInteger16BitArray
|
||||||
|
readUnsignedInteger32Bit
|
||||||
|
readUnsignedInteger32BitArray
|
||||||
|
readUnsignedInteger64Bit
|
||||||
|
readUnsignedInteger64BitArray
|
||||||
|
readUnsignedInteger8BitArray
|
||||||
|
readWord
|
||||||
|
registerForEvents
|
||||||
|
registerWatch
|
||||||
|
resetController
|
||||||
|
saveProject
|
||||||
|
selectFile
|
||||||
|
setSimulationSpeed
|
||||||
|
shutdownController
|
||||||
|
startApplication
|
||||||
|
stopApplication
|
||||||
|
unregisterEvents
|
||||||
|
unregisterWatch
|
||||||
|
waitForEvents
|
||||||
|
writeBit
|
||||||
|
writeBool
|
||||||
|
writeBoolArray
|
||||||
|
writeByte
|
||||||
|
writeDouble
|
||||||
|
writeDoubleWord
|
||||||
|
writeLongWord
|
||||||
|
writeUnsignedInteger8BitArray
|
||||||
|
writeWord
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
Dump of file C:\Users\chris\Downloads\vmx_open_api_examples_V1.5.1\11_Rust\rust_wrapper\open_wrapper\lib\open.dll
|
||||||
|
|
||||||
|
File Type: DLL
|
||||||
|
|
||||||
|
Section contains the following exports for open.dll
|
||||||
|
|
||||||
|
00000000 characteristics
|
||||||
|
FFFFFFFF time date stamp
|
||||||
|
0.00 version
|
||||||
|
1 ordinal base
|
||||||
|
73 number of functions
|
||||||
|
73 number of names
|
||||||
|
|
||||||
|
ordinal hint RVA name
|
||||||
|
|
||||||
|
1 0 00002990 bootController
|
||||||
|
2 1 00002720 closeProject
|
||||||
|
72 2 000015A0 connect
|
||||||
|
3 3 00003850 continueSimulation
|
||||||
|
4 4 0000CCA0 createDirectory
|
||||||
|
5 5 00001CF0 createProject
|
||||||
|
6 6 00001F80 createProjectWithScaling
|
||||||
|
7 7 00002210 createProjectWithScalingNCUNumber
|
||||||
|
8 8 0000CA30 deleteDirectory
|
||||||
|
9 9 0000C7C0 deleteFile
|
||||||
|
10 A 00001810 disconnect
|
||||||
|
11 B 0000DE30 exportProjectSettings
|
||||||
|
12 C 0000BAF0 getCardPath
|
||||||
|
13 D 0000BD80 getCardPaths
|
||||||
|
14 E 0000D6C0 getCurrentProjectInformation
|
||||||
|
15 F 0000D930 getCurrentProjectState
|
||||||
|
16 10 00004250 getDictionaryElementType
|
||||||
|
17 11 00003AC0 getDictionaryId
|
||||||
|
18 12 0000C010 getFile
|
||||||
|
19 13 00007FE0 getNumArrayElements
|
||||||
|
20 14 0000E430 getNumberOfNCUs
|
||||||
|
21 15 0000D430 getProjectInformation
|
||||||
|
22 16 0000B610 getSimulationSpeed
|
||||||
|
23 17 0000D1A0 getVersionInformation
|
||||||
|
24 18 0000DBA0 importProjectSettings
|
||||||
|
25 19 0000CF10 listDirectory
|
||||||
|
26 1A 00001A80 openProject
|
||||||
|
27 1B 0000C2A0 putFile
|
||||||
|
28 1C 00008270 readBit
|
||||||
|
29 1D 000085E0 readBool
|
||||||
|
30 1E 000057A0 readBoolArray
|
||||||
|
31 1F 00008950 readByte
|
||||||
|
32 20 00008D70 readDouble
|
||||||
|
33 21 00005B60 readDoubleArray
|
||||||
|
34 22 00009410 readDoubleWord
|
||||||
|
35 23 000096A0 readLongWord
|
||||||
|
36 24 00009930 readNextEvent
|
||||||
|
37 25 00009BA0 readNextEventWithNcuIndex
|
||||||
|
38 26 00006B40 readSignedInteger16Bit
|
||||||
|
39 27 00007380 readSignedInteger32Bit
|
||||||
|
40 28 000048A0 readSignedInteger32BitArray
|
||||||
|
41 29 00007BC0 readSignedInteger64Bit
|
||||||
|
73 2A 00005F20 readString
|
||||||
|
42 2B 000062B0 readStringArray
|
||||||
|
43 2C 00006720 readUnsignedInteger16Bit
|
||||||
|
44 2D 00005020 readUnsignedInteger16BitArray
|
||||||
|
45 2E 00006F60 readUnsignedInteger32Bit
|
||||||
|
46 2F 00004C60 readUnsignedInteger32BitArray
|
||||||
|
47 30 000077A0 readUnsignedInteger64Bit
|
||||||
|
48 31 000044E0 readUnsignedInteger64BitArray
|
||||||
|
49 32 000053E0 readUnsignedInteger8BitArray
|
||||||
|
50 33 00009180 readWord
|
||||||
|
51 34 000030E0 registerForEvents
|
||||||
|
52 35 00003D50 registerWatch
|
||||||
|
53 36 00002E70 resetController
|
||||||
|
54 37 000024B0 saveProject
|
||||||
|
55 38 0000C530 selectFile
|
||||||
|
56 39 0000B880 setSimulationSpeed
|
||||||
|
57 3A 00002C00 shutdownController
|
||||||
|
58 3B 000010C0 startApplication
|
||||||
|
59 3C 00001330 stopApplication
|
||||||
|
60 3D 00003370 unregisterEvents
|
||||||
|
61 3E 00003FE0 unregisterWatch
|
||||||
|
62 3F 000035E0 waitForEvents
|
||||||
|
63 40 00009E30 writeBit
|
||||||
|
64 41 0000A0C0 writeBool
|
||||||
|
65 42 0000B250 writeBoolArray
|
||||||
|
66 43 0000A350 writeByte
|
||||||
|
67 44 0000A6F0 writeDouble
|
||||||
|
68 45 0000AD30 writeDoubleWord
|
||||||
|
69 46 0000AFC0 writeLongWord
|
||||||
|
70 47 0000E0A0 writeUnsignedInteger8BitArray
|
||||||
|
71 48 0000AAA0 writeWord
|
||||||
|
|
||||||
|
Summary
|
||||||
|
|
||||||
|
1000 .btc
|
||||||
|
11000 .data
|
||||||
|
3000 .pdata
|
||||||
|
32000 .rdata
|
||||||
|
2000 .reloc
|
||||||
|
1000 .rsrc
|
||||||
|
52000 .text
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,545 @@
|
|||||||
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
|
/// Pointer to a UTF-16 string (wide char) terminated with `0`.
|
||||||
|
pub type PCWSTR = *const u16;
|
||||||
|
/// Mutable pointer to a UTF-16 buffer.
|
||||||
|
pub type PWSTR = *mut u16;
|
||||||
|
/// Pointer to an array of UTF-16 string pointers.
|
||||||
|
pub type PPWSTR = *mut PWSTR;
|
||||||
|
/// 32-bit boolean, mirrors the Win32 `BOOL` layout used by the C API.
|
||||||
|
pub type Bool32 = i32;
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenReturnCodes {
|
||||||
|
Ok = 0,
|
||||||
|
// --------- Application control and Connection ---------
|
||||||
|
ErrorInternal = -1001,
|
||||||
|
ErrorVcNotFound = -1002,
|
||||||
|
ErrorCreateProcess = -1003,
|
||||||
|
ErrorAlreadyRunning = -1004,
|
||||||
|
ErrorCloseFailed = -1005,
|
||||||
|
ErrorInstanceNotFound = -1006,
|
||||||
|
ErrorInstanceBusy = -1007,
|
||||||
|
ErrorNoConnection = -1008,
|
||||||
|
ErrorVcNotReady = -1009,
|
||||||
|
ErrorInvalidParameter = -1010,
|
||||||
|
ErrorNoLicenseDeprecated = -1011,
|
||||||
|
ErrorConnectionClosed = -1012,
|
||||||
|
ErrorS7DosSimulationActive = -1013,
|
||||||
|
ErrorVersionIncompatible = -1014,
|
||||||
|
ErrorNotSupportedByBackend = -1015,
|
||||||
|
WarningWindowEmbedding = 1002,
|
||||||
|
WarningVersionClientOld = 1003,
|
||||||
|
WarningVersionMiddlewareOld = 1004,
|
||||||
|
WarningConnectionCorrupted = 1005,
|
||||||
|
// --------- File handling (VCPs, startprofiles, etc.) ---------
|
||||||
|
ErrorFileNotFound = -2001,
|
||||||
|
ErrorProjectOpen = -2002,
|
||||||
|
ErrorLoadFailed = -2003,
|
||||||
|
ErrorNoProjectOpen = -2004,
|
||||||
|
ErrorWriteProtected = -2005,
|
||||||
|
ErrorSimRunning = -2006,
|
||||||
|
ErrorWriteFailed = -2007,
|
||||||
|
ErrorVcpCloseFailed = -2008,
|
||||||
|
ErrorInvalidFile = -2009,
|
||||||
|
ErrorCncSwUnavailable = -2010,
|
||||||
|
ErrorFileCreationFailed = -2011,
|
||||||
|
ErrorFrontendNotInstalled = -2012,
|
||||||
|
ErrorFrontendNotLicensedDeprecated = -2013,
|
||||||
|
ErrorFilePathTooLong = -2014,
|
||||||
|
ErrorInvalidNckscaling = -2015,
|
||||||
|
ErrorInvalidNcunumber = -2016,
|
||||||
|
// --------- Simulation Control ---------
|
||||||
|
ErrorStartSimFailed = -3001,
|
||||||
|
ErrorStopSimFailed = -3002,
|
||||||
|
ErrorResetSimFailed = -3004,
|
||||||
|
ErrorSimSpeedInvalid = -3005,
|
||||||
|
ErrorSimNotAvailable = -3006,
|
||||||
|
ErrorSimNotRunning = -3007,
|
||||||
|
SimRunning = 3001,
|
||||||
|
SimNotRunning = 3002,
|
||||||
|
// --------- Synchronized Operation ---------
|
||||||
|
ErrorEventUnknown = -4001,
|
||||||
|
ErrorNoEventsRegistered = -4002,
|
||||||
|
ErrorSimInterrupted = -4003,
|
||||||
|
// --------- Data Access ---------
|
||||||
|
ErrorUnknownElement = -5001,
|
||||||
|
ErrorInvalidDictId = -5002,
|
||||||
|
ErrorInsufficientMemory = -5003,
|
||||||
|
ErrorNoarray = -5004,
|
||||||
|
ErrorWrongType = -5005,
|
||||||
|
ErrorInsufficientRights = -5006,
|
||||||
|
ErrorNotInWait = -5007,
|
||||||
|
NoMoreData = 5001,
|
||||||
|
// --------- File Operations ---------
|
||||||
|
ErrorFileOpInvalidDomain = -6001,
|
||||||
|
ErrorFileOpSourcePathNotAbsolute = -6002,
|
||||||
|
ErrorFileOpSourceFileNotExists = -6003,
|
||||||
|
ErrorFileOpDestinationPathNotAbsolute = -6004,
|
||||||
|
ErrorFileOpDestinationAlreadyExists = -6005,
|
||||||
|
ErrorFileOpDestinationDirectoryNotExists = -6006,
|
||||||
|
ErrorFileOpDirectoryNotExists = -6007,
|
||||||
|
ErrorFileOpDirectoryNotEmpty = -6008,
|
||||||
|
ErrorFileSelectNotPossible = -6009,
|
||||||
|
ErrorChannelNotExists = -6010,
|
||||||
|
ErrorFileUsed = -6011,
|
||||||
|
// --------- License handling ---------
|
||||||
|
ErrorLicenseNoLicense = -7001,
|
||||||
|
ErrorLicenseUnknownApplication = -7002,
|
||||||
|
ErrorLicenseUnknownFrontend = -7003,
|
||||||
|
ErrorLicenseNoConnection = -7004,
|
||||||
|
ErrorLicenseNoLicenseHandler = -7005,
|
||||||
|
ErrorLicenseErrorAtServerSite = -7006,
|
||||||
|
ErrorLicenseOptionalLicenseKeyNotAvailable = -7007,
|
||||||
|
ErrorLicenseOptionalLicenseKeyNotGranted = -7008,
|
||||||
|
ErrorLicenseOptionalLicenseNotAqcuired = -7009,
|
||||||
|
ErrorLicenseOptionalLicenseCheckFailed = -7010,
|
||||||
|
ErrorLicenseKeyNotAvailable = -7011,
|
||||||
|
ErrorLicenseKeyGrantFailed = -7012,
|
||||||
|
ErrorLicenseKeyReleaseFailed = -7013,
|
||||||
|
ErrorLicenseInvalid = -7014,
|
||||||
|
ErrorLicenseAlreadyInUse = -7015,
|
||||||
|
ErrorLicenseCheckFailed = -7016,
|
||||||
|
ErrorLicenseAllLicensesInUse = -7017,
|
||||||
|
ErrorLicenseUnknownLicense = -7018,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OpenReturnCodes {
|
||||||
|
/// Convenience helper that mirrors the old `Ok` check in the C# wrapper.
|
||||||
|
pub fn is_ok(self) -> bool {
|
||||||
|
matches!(self, OpenReturnCodes::Ok)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenDictionaryElementType {
|
||||||
|
Bool = 1,
|
||||||
|
Integer8Bit = 2,
|
||||||
|
UInteger8Bit = 3,
|
||||||
|
Integer16Bit = 4,
|
||||||
|
UInteger16Bit = 5,
|
||||||
|
Integer32Bit = 6,
|
||||||
|
UInteger32Bit = 7,
|
||||||
|
Integer64Bit = 8,
|
||||||
|
UInteger64Bit = 9,
|
||||||
|
Double = 10,
|
||||||
|
String = 11,
|
||||||
|
IntegerArray32Bit = 12,
|
||||||
|
UIntegerArray64Bit = 13,
|
||||||
|
BoolArray = 14,
|
||||||
|
DoubleArray = 15,
|
||||||
|
StringArray = 16,
|
||||||
|
UIntegerArray32Bit = 17,
|
||||||
|
UIntegerArray16Bit = 18,
|
||||||
|
UIntegerArray8Bit = 19,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(u64)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenEventMaskDefinition {
|
||||||
|
Unknown = 0x0000000000000000,
|
||||||
|
NckFirstIpo = 0x0000000000000008,
|
||||||
|
NckBootReady = 0x0000000000000004,
|
||||||
|
NckIpo = 0x0000000000000001,
|
||||||
|
NckChannelNewMotion = 0x0000000000000100,
|
||||||
|
NckChannelNewBlock = 0x0000000000000200,
|
||||||
|
NckChannelConfigChanged = 0x0000000000000400,
|
||||||
|
NckChannelStartPositioningMotion = 0x0000000000000800,
|
||||||
|
NckChannelEndPositioningMotion = 0x0000000000001000,
|
||||||
|
NckChannelLengthSlicePath = 0x0000000000001001,
|
||||||
|
NckChannelLengthSlicePositioning = 0x0000000000001002,
|
||||||
|
NckChannelAngleSlicePositioning = 0x0000000000001003,
|
||||||
|
NckChannelAngleSliceOrientation = 0x0000000000001004,
|
||||||
|
NckChannelStateChanged = 0x0000000000001005,
|
||||||
|
NckChannelProgramFinished = 0x0000000000001006,
|
||||||
|
PlcOb1 = 0x0000000000010000,
|
||||||
|
PlcHwConfigChanged = 0x0000000000020000,
|
||||||
|
PlcAcyclicCommunication = 0x0000000000040000,
|
||||||
|
ContentChanged = 0x0001000000000000,
|
||||||
|
ResetStarted = 0x0002000000000000,
|
||||||
|
ResetFinished = 0x0004000000000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenAxisMode {
|
||||||
|
None = 0,
|
||||||
|
Interpolation = 1,
|
||||||
|
Positioning = 2,
|
||||||
|
SpeedLeft = 3,
|
||||||
|
SpeedRight = 4,
|
||||||
|
SpeedStop = 5,
|
||||||
|
Following = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenAxisReferenceState {
|
||||||
|
None = 0,
|
||||||
|
NotReferenced = 1,
|
||||||
|
Referenced = 2,
|
||||||
|
ReferenceNotRequired = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenMotionType {
|
||||||
|
None = 0,
|
||||||
|
Rapid = 1,
|
||||||
|
Linear = 2,
|
||||||
|
Circle = 3,
|
||||||
|
Spline = 4,
|
||||||
|
Thread = 5,
|
||||||
|
Involute = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenCircleDirection {
|
||||||
|
None = 0,
|
||||||
|
Cw = 1,
|
||||||
|
Ccw = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenOperatingMode {
|
||||||
|
None = 0,
|
||||||
|
Auto = 1,
|
||||||
|
Jog = 2,
|
||||||
|
Mda = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenChannelState {
|
||||||
|
None = 0,
|
||||||
|
Activated = 1,
|
||||||
|
Stopped = 2,
|
||||||
|
Reseted = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenAxisType {
|
||||||
|
None = 0,
|
||||||
|
Linear = 1,
|
||||||
|
Rotatory = 2,
|
||||||
|
Modulo = 3,
|
||||||
|
Spindle = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
pub enum OpenProjectStates {
|
||||||
|
Closed = 1,
|
||||||
|
Opening = 2,
|
||||||
|
Open = 3,
|
||||||
|
Booting = 4,
|
||||||
|
RunningOrPaused = 5,
|
||||||
|
ShuttingDown = 6,
|
||||||
|
Closing = 7,
|
||||||
|
Resetting = 8,
|
||||||
|
Saving = 9,
|
||||||
|
Error = 10,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[link(name = "open")]
|
||||||
|
extern "C" {
|
||||||
|
#[link_name = "startApplication"]
|
||||||
|
pub fn start_application(str_profile_file_name: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "stopApplication"]
|
||||||
|
pub fn stop_application() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "connect"]
|
||||||
|
pub fn connect() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "disconnect"]
|
||||||
|
pub fn disconnect() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "openProject"]
|
||||||
|
pub fn open_project(str_file_name: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "createProject"]
|
||||||
|
pub fn create_project(str_file_name: PCWSTR, str_version: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "createProjectWithScaling"]
|
||||||
|
pub fn create_project_with_scaling(
|
||||||
|
str_file_name: PCWSTR,
|
||||||
|
str_version: PCWSTR,
|
||||||
|
str_nck_scaling: PCWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "createProjectWithScalingNCUNumber"]
|
||||||
|
pub fn create_project_with_scaling_ncu_number(
|
||||||
|
str_file_name: PCWSTR,
|
||||||
|
str_version: PCWSTR,
|
||||||
|
str_nck_scaling: PCWSTR,
|
||||||
|
ncu_number: u32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "saveProject"]
|
||||||
|
pub fn save_project() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "closeProject"]
|
||||||
|
pub fn close_project() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "bootController"]
|
||||||
|
pub fn boot_controller() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "shutdownController"]
|
||||||
|
pub fn shutdown_controller() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "resetController"]
|
||||||
|
pub fn reset_controller() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "registerForEvents"]
|
||||||
|
pub fn register_for_events(
|
||||||
|
event_list_length: u32,
|
||||||
|
event_list: *const OpenEventMaskDefinition
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "unregisterEvents"]
|
||||||
|
pub fn unregister_events() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "waitForEvents"]
|
||||||
|
pub fn wait_for_events() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "continueSimulation"]
|
||||||
|
pub fn continue_simulation() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getDictionaryId"]
|
||||||
|
pub fn get_dictionary_id(
|
||||||
|
dictionary_element: PCWSTR,
|
||||||
|
dictionary_id: *mut u32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "registerWatch"]
|
||||||
|
pub fn register_watch(
|
||||||
|
watch_list_length: u32,
|
||||||
|
dictionary_id_list: *const u32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "unregisterWatch"]
|
||||||
|
pub fn unregister_watch() -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getDictionaryElementType"]
|
||||||
|
pub fn get_dictionary_element_type(dictionary_id: u32, value: *mut u8) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger64BitArray"]
|
||||||
|
pub fn read_unsigned_integer_64_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut u64
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readSignedInteger32BitArray"]
|
||||||
|
pub fn read_signed_integer_32_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut i32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger32BitArray"]
|
||||||
|
pub fn read_unsigned_integer_32_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut u32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger16BitArray"]
|
||||||
|
pub fn read_unsigned_integer_16_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut u16
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger8BitArray"]
|
||||||
|
pub fn read_unsigned_integer_8_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut u8
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readBoolArray"]
|
||||||
|
pub fn read_bool_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut bool
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readDoubleArray"]
|
||||||
|
pub fn read_double_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *mut f64
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readString"]
|
||||||
|
pub fn read_string(
|
||||||
|
dictionary_id: u32,
|
||||||
|
string_max_length: u32,
|
||||||
|
string_buffer: PWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readStringArray"]
|
||||||
|
pub fn read_string_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
string_array_max_length: u32,
|
||||||
|
string_max_length: u32,
|
||||||
|
string_array: PPWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger16Bit"]
|
||||||
|
pub fn read_unsigned_integer_16_bit(dictionary_id: u32, value: *mut u16) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readSignedInteger16Bit"]
|
||||||
|
pub fn read_signed_integer_16_bit(dictionary_id: u32, value: *mut i16) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger32Bit"]
|
||||||
|
pub fn read_unsigned_integer_32_bit(dictionary_id: u32, value: *mut u32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readSignedInteger32Bit"]
|
||||||
|
pub fn read_signed_integer_32_bit(dictionary_id: u32, value: *mut i32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readUnsignedInteger64Bit"]
|
||||||
|
pub fn read_unsigned_integer_64_bit(dictionary_id: u32, value: *mut u64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readSignedInteger64Bit"]
|
||||||
|
pub fn read_signed_integer_64_bit(dictionary_id: u32, value: *mut i64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getNumArrayElements"]
|
||||||
|
pub fn get_num_array_elements(
|
||||||
|
dictionary_id: u32,
|
||||||
|
num_array_elements: *mut u32
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readBit"]
|
||||||
|
pub fn read_bit(dictionary_id: u32, value: *mut Bool32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readBool"]
|
||||||
|
pub fn read_bool(dictionary_id: u32, value: *mut Bool32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readByte"]
|
||||||
|
pub fn read_byte(dictionary_id: u32, value: *mut u8) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readDouble"]
|
||||||
|
pub fn read_double(dictionary_id: u32, value: *mut f64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readWord"]
|
||||||
|
pub fn read_word(dictionary_id: u32, value: *mut u16) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readDoubleWord"]
|
||||||
|
pub fn read_double_word(dictionary_id: u32, value: *mut u32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readLongWord"]
|
||||||
|
pub fn read_long_word(dictionary_id: u32, value: *mut u64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readNextEvent"]
|
||||||
|
pub fn read_next_event(event: *mut u64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "readNextEventWithNcuIndex"]
|
||||||
|
pub fn read_next_event_with_ncu_index(event: *mut u64, ncu_index: *mut i32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeBit"]
|
||||||
|
pub fn write_bit(dictionary_id: u32, value: Bool32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeBool"]
|
||||||
|
pub fn write_bool(dictionary_id: u32, value: Bool32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeByte"]
|
||||||
|
pub fn write_byte(dictionary_id: u32, value: u8) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeDouble"]
|
||||||
|
pub fn write_double(dictionary_id: u32, value: f64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeWord"]
|
||||||
|
pub fn write_word(dictionary_id: u32, value: u16) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeDoubleWord"]
|
||||||
|
pub fn write_double_word(dictionary_id: u32, value: u32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeLongWord"]
|
||||||
|
pub fn write_long_word(dictionary_id: u32, value: u64) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeBoolArray"]
|
||||||
|
pub fn write_bool_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_length: u32,
|
||||||
|
value_list: *const bool
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getSimulationSpeed"]
|
||||||
|
pub fn get_simulation_speed(percent: *mut u32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "setSimulationSpeed"]
|
||||||
|
pub fn set_simulation_speed(percent: u32) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getCardPath"]
|
||||||
|
pub fn get_card_path(card_path_max_length: u32, card_path: PWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getCardPaths"]
|
||||||
|
pub fn get_card_paths(
|
||||||
|
card_paths_array_max_length: u32,
|
||||||
|
card_path_max_length: u32,
|
||||||
|
card_paths: PPWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getFile"]
|
||||||
|
pub fn get_file(source_file_path: PCWSTR, destination_file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "putFile"]
|
||||||
|
pub fn put_file(source_file_path: PCWSTR, destination_file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "selectFile"]
|
||||||
|
pub fn select_file(source_file_path: PCWSTR, channel_name: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "deleteFile"]
|
||||||
|
pub fn delete_file(file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "deleteDirectory"]
|
||||||
|
pub fn delete_directory(directory_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "createDirectory"]
|
||||||
|
pub fn create_directory(directory_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "listDirectory"]
|
||||||
|
pub fn list_directory(directory_path: PCWSTR, result_file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getVersionInformation"]
|
||||||
|
pub fn get_version_information(destination_file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getProjectInformation"]
|
||||||
|
pub fn get_project_information(
|
||||||
|
vcp_file_path: PCWSTR,
|
||||||
|
destination_file_path: PCWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getCurrentProjectInformation"]
|
||||||
|
pub fn get_current_project_information(destination_file_path: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getCurrentProjectState"]
|
||||||
|
pub fn get_current_project_state(project_state: *mut OpenProjectStates) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "importProjectSettings"]
|
||||||
|
pub fn import_project_settings(
|
||||||
|
file_name: PCWSTR,
|
||||||
|
import_content_file_name: PCWSTR
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "exportProjectSettings"]
|
||||||
|
pub fn export_project_settings(file_name: PCWSTR) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "writeUnsignedInteger8BitArray"]
|
||||||
|
pub fn write_unsigned_integer_8_bit_array(
|
||||||
|
dictionary_id: u32,
|
||||||
|
value_list_max_length: u32,
|
||||||
|
value_list: *const u8
|
||||||
|
) -> OpenReturnCodes;
|
||||||
|
|
||||||
|
#[link_name = "getNumberOfNCUs"]
|
||||||
|
pub fn get_number_of_ncus(number_of_ncus: *mut u32) -> OpenReturnCodes;
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
param(
|
||||||
|
[string]$DllPath = "open_wrapper/lib/open.dll",
|
||||||
|
[string]$OutputLibPath = "",
|
||||||
|
[ValidateSet("x64", "x86")]
|
||||||
|
[string]$Machine = "x64"
|
||||||
|
)
|
||||||
|
|
||||||
|
$errorActionPreference = "Stop"
|
||||||
|
|
||||||
|
function Resolve-Tool($name) {
|
||||||
|
$cmd = Get-Command $name -ErrorAction SilentlyContinue
|
||||||
|
if (-not $cmd) {
|
||||||
|
throw "Could not find '$name' on PATH. Run this script from the Visual Studio Developer Command Prompt or add $name.exe to PATH."
|
||||||
|
}
|
||||||
|
return $cmd.Path
|
||||||
|
}
|
||||||
|
|
||||||
|
$dumpbin = Resolve-Tool "dumpbin.exe"
|
||||||
|
$libExe = Resolve-Tool "lib.exe"
|
||||||
|
|
||||||
|
if (-not (Test-Path $DllPath)) {
|
||||||
|
throw "DLL not found: $DllPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
$dllFullPath = (Get-Item $DllPath).FullName
|
||||||
|
$workDir = Split-Path $dllFullPath -Parent
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($OutputLibPath)) {
|
||||||
|
$dllBase = [System.IO.Path]::GetFileNameWithoutExtension($dllFullPath)
|
||||||
|
$OutputLibPath = [System.IO.Path]::Combine($workDir, "$dllBase.lib")
|
||||||
|
}
|
||||||
|
|
||||||
|
$libName = [System.IO.Path]::GetFileNameWithoutExtension($OutputLibPath)
|
||||||
|
$exportsFile = Join-Path $workDir "$libName.exports"
|
||||||
|
$defFile = Join-Path $workDir "$libName.def"
|
||||||
|
|
||||||
|
Write-Host "Generating exports list from $dllFullPath ..."
|
||||||
|
& $dumpbin /nologo /exports $dllFullPath | Set-Content -Encoding UTF8 $exportsFile
|
||||||
|
|
||||||
|
$lines = Get-Content $exportsFile | Where-Object { $_ -match '^\s+\d+\s+[0-9A-F]+\s+[0-9A-F]+\s+\S+' }
|
||||||
|
$symbols = $lines | ForEach-Object {
|
||||||
|
($_.Trim() -split '\s+')[3]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $symbols) {
|
||||||
|
throw "Failed to parse exports from $dllFullPath. Inspect $exportsFile for details."
|
||||||
|
}
|
||||||
|
|
||||||
|
$defContent = @("LIBRARY $libName", "EXPORTS") + $symbols
|
||||||
|
$defContent | Set-Content -Encoding ASCII $defFile
|
||||||
|
|
||||||
|
Write-Host "Creating import library $OutputLibPath ..."
|
||||||
|
& $libExe /nologo /def:$defFile /machine:$Machine /out:$OutputLibPath
|
||||||
|
|
||||||
|
Write-Host "Done."
|
||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
use std::io::{ self, Write };
|
||||||
|
|
||||||
|
use open_wrapper::{ self, OpenReturnCodes };
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("Rust connect demo for open.dll");
|
||||||
|
println!("(make sure open.dll is discoverable and open.lib is linked)\n");
|
||||||
|
print_menu();
|
||||||
|
|
||||||
|
let stdin = io::stdin();
|
||||||
|
let mut state = ConnectionState::default();
|
||||||
|
|
||||||
|
loop {
|
||||||
|
print!("> ");
|
||||||
|
if io::stdout().flush().is_err() {
|
||||||
|
eprintln!("Failed to flush stdout.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut line = String::new();
|
||||||
|
if stdin.read_line(&mut line).is_err() {
|
||||||
|
eprintln!("Failed to read input, exiting.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cmd = line.trim().to_lowercase();
|
||||||
|
if cmd.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
match cmd.as_str() {
|
||||||
|
"1" | "c" | "connect" => handle_connect(&mut state),
|
||||||
|
"2" | "d" | "disconnect" => handle_disconnect(&mut state),
|
||||||
|
// "3" | "g" | "get-speed" => handle_get_speed(),
|
||||||
|
// "4" | "r" | "realtime" => handle_set_speed(100, "SetSimulationSpeed (100%)"),
|
||||||
|
// "5" | "m" | "max" => handle_set_speed(u32::MAX, "SetSimulationSpeed (u32::MAX)"),
|
||||||
|
"h" | "help" | "?" => print_menu(),
|
||||||
|
"q" | "quit" | "exit" => {
|
||||||
|
println!("Bye!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_ => println!("Unknown command. Type `help` to see the list of commands."),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
struct ConnectionState {
|
||||||
|
connected: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_connect(state: &mut ConnectionState) {
|
||||||
|
if state.connected {
|
||||||
|
println!("Already connected. Run `disconnect` first if you need a fresh session.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rc = call_and_report("Connect", || unsafe { open_wrapper::connect() });
|
||||||
|
if rc.is_ok() {
|
||||||
|
state.connected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_disconnect(state: &mut ConnectionState) {
|
||||||
|
if !state.connected {
|
||||||
|
println!("Not connected yet. Use `connect` first.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let rc = call_and_report("Disconnect", || unsafe { open_wrapper::disconnect() });
|
||||||
|
if rc.is_ok() {
|
||||||
|
state.connected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fn handle_get_speed() {
|
||||||
|
// println!("GetSimulationSpeed called ...");
|
||||||
|
// let mut sim_speed = 0u32;
|
||||||
|
// let rc = unsafe { open_wrapper::get_simulation_speed(&mut sim_speed) };
|
||||||
|
// if rc.is_ok() {
|
||||||
|
// println!("Current simulation speed: {sim_speed}%");
|
||||||
|
// }
|
||||||
|
// println!("GetSimulationSpeed returned: {rc:?}");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn handle_set_speed(value: u32, label: &str) {
|
||||||
|
// println!("{label} called ...");
|
||||||
|
// let rc = unsafe { open_wrapper::set_simulation_speed(value) };
|
||||||
|
// println!("{label} returned: {rc:?}");
|
||||||
|
// }
|
||||||
|
|
||||||
|
fn call_and_report(action: &str, mut op: impl FnMut() -> OpenReturnCodes) -> OpenReturnCodes {
|
||||||
|
println!("{action} called ...");
|
||||||
|
let rc = op();
|
||||||
|
println!("{action} returned: {rc:?}");
|
||||||
|
rc
|
||||||
|
}
|
||||||
|
|
||||||
|
fn print_menu() {
|
||||||
|
println!("Commands:");
|
||||||
|
println!(" (1) connect - connect to the running controller");
|
||||||
|
println!(" (2) disconnect - disconnect the session");
|
||||||
|
println!(" (3) get-speed - read the current simulation speed");
|
||||||
|
println!(" (4) realtime - set speed to 100%");
|
||||||
|
println!(" (5) max - set speed to u32::MAX");
|
||||||
|
println!(" (h) help - show this list");
|
||||||
|
println!(" (q) quit - exit the demo");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user