- Primo commit

- Tpa funzionante
This commit is contained in:
Emmanuele Sassi
2021-09-29 11:35:42 +02:00
parent 0c4d540fbe
commit 6e4645875b
50 changed files with 6761 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
# /
/revision.h
/*.aps
/*.ncb
/*.suo
/*.user
/*.sdf
/*.opensdf
/Debug32
/Release32
/Trial32
/Debug64
/Release64
/ipch
/bin
/obj
/.vs
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
+8
View File
@@ -0,0 +1,8 @@
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:EgtCOMMTest">
<Application.Resources>
<ResourceDictionary Source="Utility/Dictionary.xaml"/>
</Application.Resources>
</Application>
+14
View File
@@ -0,0 +1,14 @@
Class Application
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
' can be handled in this file.
Protected Overrides Sub OnStartup(e As StartupEventArgs)
MyBase.OnStartup(e)
ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose
' Creo la View principale
Me.MainWindow = New MainWindowV
' Mostro la View principale
Me.MainWindow.Show()
End Sub
End Class
+20
View File
@@ -0,0 +1,20 @@
<UserControl x:Class="AxesPanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:EgtCOMMTest"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<ItemsControl ItemsSource="{Binding AxesList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="3">
<TextBlock Text="{Binding nId}"/>
<TextBlock Text="{Binding sName}"/>
<TextBlock Text="{Binding dValue}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>
+3
View File
@@ -0,0 +1,3 @@
Public Class AxesPanelV
End Class
+115
View File
@@ -0,0 +1,115 @@
Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports EgtUILib
Public Class AxesPanelVM
Inherits VMBase
Private m_AxesList As New ObservableCollection(Of Axis)
Public ReadOnly Property AxesList As ObservableCollection(Of Axis)
Get
Return m_AxesList
End Get
End Property
Sub New()
' immposto riferimento in Map
Map.SetRefAxesPanelVM(Me)
' leggo assi da ini
Dim nIndex As Integer = 1
Dim Axis As Axis = GetPrivateProfileAxis(S_AXES, nIndex.ToString(), Map.refMainWindowVM.MainWindowM.sMachIniFile)
' leggo assi lineari
While Not IsNothing(Axis)
AxesList.Add(Axis)
nIndex += 1
Axis = GetPrivateProfileAxis(S_AXES, nIndex, Map.refMainWindowVM.MainWindowM.sMachIniFile)
End While
End Sub
Private Function GetPrivateProfileAxis(IpAppName As String, IpKeyName As String, IpFileName As String) As Axis
Dim sAxis As String = ""
EgtUILib.GetPrivateProfileString(IpAppName, IpKeyName, "", sAxis, IpFileName)
Dim sAxisValues() As String = sAxis.Split(","c)
If Not sAxisValues.Count >= 3 Then Return Nothing
For Each Value In sAxisValues
Value = Value.Trim()
Next
Dim nId As Integer = 0
Dim Type As Axis.AxisTypes = Axis.AxisTypes.NULL
Integer.TryParse(sAxisValues(1), nId)
Select Case sAxisValues(0).ToLower()
Case "l"
Type = Axis.AxisTypes.LINEAR
Case "r"
Type = Axis.AxisTypes.ROTATIONAL
Case Else
Type = Axis.AxisTypes.NULL
End Select
Return New Axis(nId, Type, sAxisValues(2))
End Function
Friend Sub AxisCoordinatesCallbackDlg(AxisValue As Double, AxisIndex As Integer)
Dim Axis As Axis = m_AxesList.FirstOrDefault(Function(x) x.nId = AxisIndex)
If Not IsNothing(Axis) Then
Axis.SetValue(AxisValue)
End If
End Sub
Private Sub SetAxisValue(VarName As String, VarValue As String)
Dim Axis As Axis = m_AxesList.FirstOrDefault(Function(x) x.sName = VarName)
If Not IsNothing(Axis) Then
Axis.SetValue(VarValue)
End If
End Sub
End Class
Public Class Axis
Inherits VMBase
Public Enum AxisTypes As Integer
NULL = 0
LINEAR = 1
ROTATIONAL = 2
End Enum
Private m_nId As String
Public ReadOnly Property nId As String
Get
Return m_nId
End Get
End Property
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Private m_Type As AxisTypes
Public ReadOnly Property Type As AxisTypes
Get
Return m_Type
End Get
End Property
Private m_dValue As Double
Public ReadOnly Property dValue As Double
Get
Return m_dValue
End Get
End Property
Friend Sub SetValue(value As Double)
m_dValue = value
NotifyPropertyChanged(NameOf(dValue))
End Sub
Public Sub New(nId As String, Type As AxisTypes, sName As String)
m_nId = nId
m_Type = Type
m_sName = sName
End Sub
End Class
+242
View File
@@ -0,0 +1,242 @@
Imports EgtUILib
Public Class NUMFlexiumComm
Private objDRunTimeSystem As FXServer.DRunTimeSystem
Private objDGroupManager As FXServer.DGroupManager
Private objDGeneralFunction As FXServer.DGeneralFunctions
Private objDMainCncData As FXServer.DMainCncData
Private IsFlexiumPlus As Boolean = False
Private _PartProgramNumber As Single
Private _CNCAxisChannelArray As String() = New String() {"Channel 1", "Channel 2"}
'Private Sub MainForm_Load(ByVal sender As Object, ByVal e As EventArgs)
' _comboCncAxisChannel.Items.AddRange(_CNCAxisChannelArray)
'End Sub
Private Sub InitFxServer()
objDRunTimeSystem = New FXServer.DRunTimeSystem()
objDRunTimeSystem.ServerInitializationFinished += New FXServer.IDRunTimeSystemEvents_ServerInitializationFinishedEventHandler(AddressOf objDRunTimeSystem_ServerInitializationFinished)
objDRunTimeSystem.ServerReinitializationStarted += New FXServer.IDRunTimeSystemEvents_ServerReinitializationStartedEventHandler(AddressOf objDRunTimeSystem_ServerReinitializationStarted)
objDRunTimeSystem.Init()
End Sub
Private Sub InitFxObjects()
objDGroupManager = New FXServer.DGroupManager()
objDGroupManager.ErrorHandler += New FXServer.IDGroupManagerEvents_ErrorHandlerEventHandler(AddressOf objDGroupManager_ErrorHandler)
objDGroupManager.CncNumber = 0
objDGeneralFunction = New FXServer.DGeneralFunctions()
objDGeneralFunction.ProgramActivated += New FXServer.IDGeneralFunctionsEvents_ProgramActivatedEventHandler(AddressOf objDGeneralFunction_ProgramActivated)
objDGeneralFunction.OnCncStart += New FXServer.IDGeneralFunctionsEvents_OnCncStartEventHandler(AddressOf objDGeneralFunction_OnCncStart)
objDGeneralFunction.OnCncStop += New FXServer.IDGeneralFunctionsEvents_OnCncStopEventHandler(AddressOf objDGeneralFunction_OnCncStop)
objDGeneralFunction.OnCncReset += New FXServer.IDGeneralFunctionsEvents_OnCncResetEventHandler(AddressOf objDGeneralFunction_OnCncReset)
objDGeneralFunction.CncModeWritten += New FXServer.IDGeneralFunctionsEvents_CncModeWrittenEventHandler(AddressOf objDGeneralFunction_CncModeWritten)
objDGeneralFunction.VariableWritten += New FXServer.IDGeneralFunctionsEvents_VariableWrittenEventHandler(AddressOf objDGeneralFunction_VariableWritten)
objDGeneralFunction.OnSkipLevelWritten += New FXServer.IDGeneralFunctionsEvents_OnSkipLevelWrittenEventHandler(AddressOf objDGeneralFunction_OnSkipLevelWritten)
objDGeneralFunction.Init(objDGroupManager.Handle)
objDMainCncData = New FXServer.DMainCncData()
objDMainCncData.Init(objDGroupManager.Handle)
Dim CncFxIdentifier As String = objDMainCncData.GetCncIdentifier()
EgtOutLog("CncFxIdentifier: " & CncFxIdentifier)
'_txtGetCncIdentification.Invoke(CType(Function()
' _txtGetCncIdentification.Text = CncFxIdentifier
' End Function, MethodInvoker))
If CncFxIdentifier = "Flexium 6" OrElse CncFxIdentifier = "Flexium 8" OrElse CncFxIdentifier = "Flexium 68" Then
IsFlexiumPlus = False
Else
IsFlexiumPlus = True
End If
End Sub
Private Sub CloseFxObjects()
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGroupManager)
objDGroupManager = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGeneralFunction)
objDGeneralFunction = Nothing
MessageBox.Show("CloseFxObjects")
End Sub
Private Sub GetGeneralFunctions()
Dim _GetConnectState As Int16 = objDGeneralFunction.ConnectionStatus
Select Case _GetConnectState
Case 0
_txtConnectionState.Text = "Not connected"
Case 1
_txtConnectionState.Text = " Connection error"
Case 2
_txtConnectionState.Text = "Connected"
Case Else
End Select
End Sub
Private Sub _btnRuntimeSystemStart_Click(ByVal sender As Object, ByVal e As EventArgs)
InitFxServer()
End Sub
Private Sub _btnCycleStartCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncStart()
End Sub
Private Sub _BtnFeedHoldCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncStop()
End Sub
Private Sub _btnCNCResetCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncReset()
End Sub
Private Sub _btnCncModeAuto_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(0, 0)
End Sub
Private Sub _btnCncModeMDI_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(2, 0)
End Sub
Private Sub _btnCncModeManual_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(7, 0)
End Sub
Private Sub _btnWriteVariable_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim _E80011FxStd As Int32 = 88888
Dim _FXReturn As Short = objDGeneralFunction.WriteVariable("E80011", _E80011FxStd)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteVariable:" & " " & _FXReturn.ToString())
End If
End Sub
Private Sub _btnWriteVariable2_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim _E80010FxPlus As Double = 51515.6161
Dim _FXReturn As Short = objDGeneralFunction.WriteVariable2("E80010", _E80010FxPlus)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteVariable2:" & " " & _FXReturn.ToString())
End If
End Sub
Private Sub objDRunTimeSystem_ServerInitializationFinished()
InitFxObjects()
GetGeneralFunctions()
'If IsFlexiumPlus = True Then
' _txtBlockSkipLevel.Text = "100"
' _txtBlockSkipLevel.Enabled = True
'Else
' _txtBlockSkipLevel.Text = ""
' _txtBlockSkipLevel.Enabled = True
'End If
'_txtServerInitStatus.Invoke(CType(Function()
' _txtServerInitStatus.ForeColor = Color.DarkBlue
' _txtServerInitStatus.Text = "FXServer objects initialized !"
' End Function, MethodInvoker))
'_txtServerReinitStatus.Invoke(CType(Function()
' _txtServerReinitStatus.ForeColor = Color.DarkGreen
' _txtServerReinitStatus.Text = "FXServer no objects closed !"
' End Function, MethodInvoker))
End Sub
Private Sub objDRunTimeSystem_ServerReinitializationStarted()
CloseFxObjects()
'_txtServerReinitStatus.Invoke(CType(Function()
' _txtServerReinitStatus.ForeColor = Color.Red
' _txtServerReinitStatus.Text = "FXServer objects closed !"
' End Function, MethodInvoker))
'_txtServerInitStatus.Invoke(CType(Function()
' _txtServerInitStatus.ForeColor = Color.DarkOrange
' _txtServerInitStatus.Text = "FXServer objects not initialized !"
' End Function, MethodInvoker))
End Sub
Private Sub objDGeneralFunction_ProgramActivated(ByVal nerrorCode As Short)
MessageBox.Show("Part program activated:" & " " & nerrorCode)
End Sub
Private Sub objDGeneralFunction_OnCncReset(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error CNC Reset:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_OnCncStop(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error Feed Hold:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_OnCncStart(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error Cycle Start:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_CncModeWritten(ByVal errorCode As Short)
MessageBox.Show("Error CNC Mode selection completed:" & " " & errorCode.ToString())
End Sub
Private Sub _txtPartProgramNumber_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = CChar(Keys.[Return]) Then
e.Handled = True
Dim _CncAxisChannelIndependent As Int16
_PartProgramNumber = Single.Parse(_txtPartProgramNumber.Text)
MessageBox.Show("PartProgNumber:" & " " & _PartProgramNumber.ToString())
Dim _PartProgramNumberActivate As Int32 = Convert.ToInt32(_PartProgramNumber * 10)
MessageBox.Show("PartProgNumberActivate:" & " " & _PartProgramNumberActivate.ToString())
If _checkChannelTypeState.Checked = True Then
_CncAxisChannelIndependent = 1
Else
_CncAxisChannelIndependent = 0
End If
Dim _FXReturn As Int16 = objDGeneralFunction.ActivateProgram(_PartProgramNumberActivate, _CncAxisChannelIndependent)
If _FXReturn <> 0 Then
MessageBox.Show("Error Activate Program:" & " " & _FXReturn.ToString())
End If
End If
End Sub
Private Sub objDGroupManager_ErrorHandler(ByVal sError As String, ByVal nTextNumber As Short)
MessageBox.Show("ErrorHandler message:" & " " & sError & " " & "ErrorHandler number:" & " " & nTextNumber.ToString())
End Sub
Private Sub _comboCncAxisChannel_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Select Case _comboCncAxisChannel.SelectedItem.ToString()
Case "Channel 1"
objDGroupManager.AxisGroup = 0
Case "Channel 2"
objDGroupManager.AxisGroup = 1
Case Else
End Select
End Sub
Private Sub objDGeneralFunction_VariableWritten(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error from VariableWritten:" & " " & errorCode.ToString())
Else
MessageBox.Show("VariableWritten successfully")
End If
End Sub
Private Sub _txtBlockSkipLevel_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = CChar(Keys.[Return]) Then
e.Handled = True
Dim _GetBlockSkipLevelDecimalValue As UInt32 = Convert.ToUInt32(_txtBlockSkipLevel.Text)
Dim _FXReturn As Int16 = objDGeneralFunction.WriteSkipLevel(20, _GetBlockSkipLevelDecimalValue)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteSkipLevel:" & " " & _FXReturn.ToString())
End If
End If
End Sub
Private Sub objDGeneralFunction_OnSkipLevelWritten(ByVal lHandle As Integer, ByVal errorCode As Short)
MessageBox.Show("OnSkipLevelWritten:" & "" & "Handle:" & lHandle & " " & "errorCode:" & errorCode)
End Sub
End Class
+333
View File
@@ -0,0 +1,333 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
class TPAComm
{
#region Fields
//VM
private MainWindowVM _MainWindowVM;
//Axes values
private double[] _axesVal = new double[24];
//Active command
private int _cmdActive = 0;
//Current machine operative state
private ISOCNC.Remoting.MachineOperatingState _opState = ISOCNC.Remoting.MachineOperatingState.Unspecified;
#region Remoting - Client
// Instance of the remote server object.
private ISOCNC.Remoting_Server _remObject;
public ISOCNC.Remoting_Server remObject
{
get => _remObject;
}
// Server IPC URI address
private string serverURI = "ipc://localhost:9090/IRemoteObject.rem";
//Remoting events proxy manager object
ISOCNC.Remoting.EventProxyManager eventProxy;
#endregion Remoting - Client
//RPC
private int _rpc;
//List Info
private int _prgCount;
private string _prgAtIndex;
private string[] _prgList;
private bool _prgListUpdated;
//Alarms
private string _errCycle;
private string _iso;
private string _message;
private string _errSystem;
#endregion Fields
#region Constructor
[SecurityPermission(SecurityAction.Demand)]
public TPAComm(MainWindowVM MainWindowVM)
{
//imposto VM
_MainWindowVM = MainWindowVM;
//Set up for remoting events properly
System.Collections.Hashtable properties = new System.Collections.Hashtable();
properties["name"] = "remotingClient";
properties["priority"] = "20";
properties["portName"] = "67";
BinaryClientFormatterSinkProvider clientProv = new
BinaryClientFormatterSinkProvider();
BinaryServerFormatterSinkProvider serverProv = new
BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
//// Create the IPC channel.
IpcChannel channel = new IpcChannel(properties, clientProv, serverProv);
// Register the channel.
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, false);
// Register as client for remote object.
System.Runtime.Remoting.WellKnownClientTypeEntry remoteType =
new System.Runtime.Remoting.WellKnownClientTypeEntry(typeof(ISOCNC.Remoting_Server), serverURI);
System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(remoteType);
// Create a message sink.
string objectUri;
System.Runtime.Remoting.Messaging.IMessageSink messageSink =
channel.CreateMessageSink("ipc://localhost:9090/IRemoteObject.rem", null, out objectUri);
Console.WriteLine("The URI of the message sink is {0}.", objectUri);
if (messageSink != null)
{
Console.WriteLine("The type of the message sink is {0}.",
messageSink.GetType().ToString());
}
//Event Proxy management
eventProxy = new ISOCNC.Remoting.EventProxyManager();
eventProxy.CommandExecuted += new
ISOCNC.Remoting.CommandExecutedEventHandler(RemoteObject_CommandExecuted);
eventProxy.ServerError += new
ISOCNC.Remoting.ServerErrorEventHandler(RemoteObject_ServerError);
eventProxy.AxisCoordinatesUpdate += new
ISOCNC.Remoting.AxesCoordinatesUpdateEventHandler(RemoteObject_AxisCoordinatesUpdate);
eventProxy.OpStateUpdate += new
ISOCNC.Remoting.OpStateUpdateEventHandler(RemoteObject_OpStateUpdate);
eventProxy.AlarmNotification += new
ISOCNC.Remoting.AlarmNotificationEventHandler(RemoteObject_AlarmNotification);
eventProxy.ListInfoResponse += new
ISOCNC.Remoting.ListInfoEventHandler(RemoteObject_ListInfoResponse);
eventProxy.RPCUpdate += new
ISOCNC.Remoting.RPCUpdateEventHandler(RemoteObject_RPCUpdate);
eventProxy.VariableCommandExecuted += new
ISOCNC.Remoting.VariableCommandExecutedEventHandler(RemoteObject_VariableCommandExecuted);
eventProxy.TickUpdate += new
ISOCNC.Remoting.TickUpdateEventHandler(RemoteObject_TickUpdate);
//Connection to Remote Server instance
_remObject = (ISOCNC.Remoting_Server)Activator.GetObject(typeof(ISOCNC.Remoting_Server), serverURI);
try
{
//Event management
_remObject.CommandExecuted += new
ISOCNC.Remoting.CommandExecutedEventHandler(eventProxy.LocallyHandleCommandExecuted);
_remObject.ServerError += new
ISOCNC.Remoting.ServerErrorEventHandler(eventProxy.LocallyHandleServerError);
_remObject.AxisCoordinatesUpdate += new
ISOCNC.Remoting.AxesCoordinatesUpdateEventHandler(eventProxy.LocallyHandleAxisCoordinatesUpdate);
_remObject.OpStateUpdate += new
ISOCNC.Remoting.OpStateUpdateEventHandler(eventProxy.LocallyHandleOpStateUpdate);
_remObject.AlarmNotification += new
ISOCNC.Remoting.AlarmNotificationEventHandler(eventProxy.LocallyHandleAlarmNotification);
_remObject.ListInfoResponse += new
ISOCNC.Remoting.ListInfoEventHandler(eventProxy.LocallyHandleListInfo);
_remObject.RPCUpdate += new
ISOCNC.Remoting.RPCUpdateEventHandler(eventProxy.LocallyHandleRPCUpdate);
_remObject.VariableCommandExecuted += new
ISOCNC.Remoting.VariableCommandExecutedEventHandler(eventProxy.LocallyHandleVariableCommandExecuted);
//_remObject.TickUpdate += new
//ISOCNC.Remoting.TickUpdateEventHandler(eventProxy.LocallyHandleTickUpdate)
}
catch (System.Runtime.Remoting.RemotingException ex)
{
MessageBoxResult dR = MessageBox.Show(ex.Message);
}
}
#endregion Constructor
#region Event management
#region Remoting obj events
/// <summary>
/// Notify operative state change
/// </summary>
/// <param name="newOpState">New operative state</param>
void RemoteObject_OpStateUpdate(ISOCNC.Remoting.MachineOperatingState newOpState)
{
_opState = newOpState;
_MainWindowVM.SelOPState = _opState;
if (_MainWindowVM.SelOPState == ISOCNC.Remoting.MachineOperatingState.Pending)
remObject.RemoveAllProgramsFromList();
}
/// <summary>
/// Notify the execution of a command server side
/// </summary>
/// <param name="executedCommand">Command executed index</param>
void RemoteObject_CommandExecuted(int executedCommand)
{
switch (executedCommand)
{
case (int)ISOCNC.Remoting.Commands.NoCommand:
break;
case (int)ISOCNC.Remoting.Commands.End:
break;
case (int)ISOCNC.Remoting.Commands.Error:
break;
case (int)ISOCNC.Remoting.Commands.MDI_End:
break;
case (int)ISOCNC.Remoting.Commands.MDI_Start:
break;
case (int)ISOCNC.Remoting.Commands.MDI_Stop:
break;
case (int)ISOCNC.Remoting.Commands.SetPoint:
break;
case (int)ISOCNC.Remoting.Commands.Start:
break;
case (int)ISOCNC.Remoting.Commands.Step:
break;
case (int)ISOCNC.Remoting.Commands.Stop:
break;
case (int)ISOCNC.Remoting.Commands.Start_Program_Soft:
break;
default:
break;
}
//Update internal active executed command field
_cmdActive = (int)executedCommand;
}
/// <summary>
/// Notify an error occured during the execution of a command server side
/// </summary>
/// <param name="sender"></param>
/// <param name="seEA">Error</param>
void RemoteObject_ServerError(object sender, ISOCNC.Remoting.ServerErrorEventArgs seEA)
{
MessageBoxResult dr = MessageBox.Show("Server Error: " + seEA.Error);
}
/// <summary>
/// Notify the update of an axis coordinate
/// </summary>
/// <param name="axisValue">New axis value</param>
/// <param name="axisIndex">Axis index</param>
void RemoteObject_AxisCoordinatesUpdate(double axisValue, int axisIndex)
{
_axesVal[axisIndex] = axisValue;
_MainWindowVM.AxisList[axisIndex].Value = axisValue;
_MainWindowVM.AxisList[axisIndex].NotifyPropertyChanged("Value");
}
/// <summary>
/// Notify the actual ISO line processed
/// </summary>
/// <param name="newRPC">Actual ISO Line</param>
void RemoteObject_RPCUpdate(uint newRPC)
{
_rpc = (int)newRPC;
}
/// <summary>
/// Receive program list information
/// </summary>
/// <param name="prgCount">Program count</param>
/// <param name="prgAtIndex">Program at index </param>
/// <param name="prgList">Program List</param>
void RemoteObject_ListInfoResponse(int prgCount, string prgAtIndex, string[] prgList)
{
// Program count
if (prgCount >= 0)
{
_prgCount = prgCount;
}
//Program at index
if (prgAtIndex != "")
{
_prgAtIndex = prgAtIndex;
}
//Program List
if (prgList != null && prgList.Length > 0)
{
_prgList = prgList;
_prgListUpdated = true;
}
}
/// <summary>
/// Notify the adding or removal of an alarm
/// </summary>
/// <param name="alarmOperation">Operation: Add-Remove</param>
/// <param name="alarmType">Type: Cycle, Message, System, ISO</param>
/// <param name="alarmMessage">Alarm</param>
/// <param name="alarmCode">Alarm code</param>
/// <param name="alarmDateTime">Data</param>
void RemoteObject_AlarmNotification(int alarmOperation, int alarmType, string alarmMessage, string alarmCode, string alarmDateTime)
{
switch (alarmType)
{
case (int)ISOCNC.Remoting.AlarmType.Cycle:
if (alarmOperation == (int)ISOCNC.Remoting.AlarmOperation.Addition)
_errCycle = alarmCode + ": " + alarmMessage;
else
{
//Removal
if (_errCycle != null && _errCycle != "")
{
if (_errCycle.Split(':')[0] == alarmCode)
_errCycle = "";
}
}
_MainWindowVM.UpdateErrCycle(_errCycle);
break;
case (int)ISOCNC.Remoting.AlarmType.ISO:
if (alarmOperation == (int)ISOCNC.Remoting.AlarmOperation.Addition)
_iso = alarmCode + ": " + alarmMessage;
else
{
// Removal
if (_iso != null && _iso != "")
{
if (_iso.Split(':')[0] == alarmCode)
_iso = "";
}
}
_MainWindowVM.UpdateIso(_iso);
break;
case (int)ISOCNC.Remoting.AlarmType.Message:
if (alarmOperation == (int)ISOCNC.Remoting.AlarmOperation.Addition)
_message = alarmCode + ": " + alarmMessage;
else
{
// Removal
if (_message != null && _message != "")
{
if (_message.Split(':')[0] == alarmCode)
_message = "";
}
}
_MainWindowVM.UpdateMessage(_message);
break;
case (int)ISOCNC.Remoting.AlarmType.None:
break;
case (int)ISOCNC.Remoting.AlarmType.System:
if (alarmOperation == (int)ISOCNC.Remoting.AlarmOperation.Addition)
_errSystem = alarmCode + ": " + alarmMessage;
else
{
// Removal
if (_errSystem != null && _errSystem != "")
{
if (_errSystem.Split(':')[0] == alarmCode)
_errSystem = "";
}
}
_MainWindowVM.UpdateErrSystem(_errSystem);
break;
default:
break;
}
}
/// <summary>
/// Notify info on the executed command
/// </summary>
/// <param name="executedCommand">Indice di comando eseguito</param>
/// <param name="commandExecutedCorrectly">True se il comando è stato eseguito correttamente</param>
/// <param name="varName">Nome variabile ovvero percorso in Albatros della variabile</param>
/// <param name="varValue">Valore variabile</param>
/// <param name="varType">Tipologia variabile</param>
void RemoteObject_VariableCommandExecuted(int executedCommand, bool commandExecutedCorrectly, string varName, string varValue, int varType)
{
_MainWindowVM.SetVarValue(varValue);
}
/// <summary>
/// Notify the server alive
/// </summary>
/// <param name="newTick">Tick corrente per verifica server alive</param>
void RemoteObject_TickUpdate(ulong newTick)
{
}
#endregion Event management
#endregion Remoting obj events
}
+243
View File
@@ -0,0 +1,243 @@
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Ipc
Imports System.Security.Permissions
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows
Imports ISOCNC.Remoting
Class TPAComm
' creo classe di gestione variabili
Private m_RWVariableManager As RWVariableManager
Friend ReadOnly Property RWVariableManager As RWVariableManager
Get
Return m_RWVariableManager
End Get
End Property
Private m_MachManaging As MachManaging
Friend ReadOnly Property MachManaging As MachManaging
Get
Return m_MachManaging
End Get
End Property
Private _axesVal As Double() = New Double(23) {}
Private _cmdActive As Integer = 0
Private m_opState As ISOCNC.Remoting.MachineOperatingState = ISOCNC.Remoting.MachineOperatingState.Unspecified
Public ReadOnly Property opState As ISOCNC.Remoting.MachineOperatingState
Get
Return m_opState
End Get
End Property
Private _remObject As ISOCNC.Remoting_Server
Public ReadOnly Property remObject As ISOCNC.Remoting_Server
Get
Return _remObject
End Get
End Property
Private serverURI As String = "ipc://localhost:9090/IRemoteObject.rem"
Private m_eventProxy As ISOCNC.Remoting.EventProxyManager
Friend ReadOnly Property eventProxy As ISOCNC.Remoting.EventProxyManager
Get
Return m_eventProxy
End Get
End Property
Private _rpc As Integer
Private _prgCount As Integer
Private _prgAtIndex As String
Private _prgList As String()
Private _prgListUpdated As Boolean
Private _errCycle As String
Private _iso As String
Private _message As String
Private _errSystem As String
Private m_Proxy_CommandExecutedEventHandler As New CommandExecutedEventHandler(AddressOf RemoteObject_CommandExecuted)
Private m_Proxy_ServerErrorEventHandler As New ServerErrorEventHandler(AddressOf RemoteObject_ServerError)
Private m_Proxy_AxesCoordinatesUpdateEventHandler As New AxesCoordinatesUpdateEventHandler(AddressOf RemoteObject_AxisCoordinatesUpdate)
Private m_Proxy_OpStateUpdateEventHandler As New OpStateUpdateEventHandler(AddressOf RemoteObject_OpStateUpdate)
Private m_Proxy_AlarmNotificationEventHandler As New AlarmNotificationEventHandler(AddressOf RemoteObject_AlarmNotification)
Private m_Proxy_ListInfoEventHandler As New ListInfoEventHandler(AddressOf RemoteObject_ListInfoResponse)
Private m_Proxy_RPCUpdateEventHandler As New RPCUpdateEventHandler(AddressOf RemoteObject_RPCUpdate)
Private m_Proxy_VariableCommandExecutedEventHandler As New VariableCommandExecutedEventHandler(AddressOf RemoteObject_VariableCommandExecuted)
Private m_Proxy_TickUpdateEventHandler As New TickUpdateEventHandler(AddressOf RemoteObject_TickUpdate)
Private m_Rem_CommandExecutedEventHandler As CommandExecutedEventHandler
Private m_Rem_ServerErrorEventHandler As ServerErrorEventHandler
Private m_Rem_AxesCoordinatesUpdateEventHandler As AxesCoordinatesUpdateEventHandler
Private m_Rem_OpStateUpdateEventHandler As OpStateUpdateEventHandler
Private m_Rem_AlarmNotificationEventHandler As AlarmNotificationEventHandler
Private m_Rem_ListInfoEventHandler As ListInfoEventHandler
Private m_Rem_RPCUpdateEventHandler As RPCUpdateEventHandler
Private m_Rem_VariableCommandExecutedEventHandler As VariableCommandExecutedEventHandler
<SecurityPermission(SecurityAction.Demand)>
Public Sub New(Machmanaging As MachManaging)
m_MachManaging = Machmanaging
Dim properties As System.Collections.Hashtable = New System.Collections.Hashtable()
properties("name") = "remotingClient"
properties("priority") = "20"
properties("portName") = "67"
Dim clientProv As BinaryClientFormatterSinkProvider = New BinaryClientFormatterSinkProvider()
Dim serverProv As BinaryServerFormatterSinkProvider = New BinaryServerFormatterSinkProvider()
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full
Dim channel As IpcChannel = New IpcChannel(properties, clientProv, serverProv)
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, False)
Dim remoteType As System.Runtime.Remoting.WellKnownClientTypeEntry = New System.Runtime.Remoting.WellKnownClientTypeEntry(GetType(ISOCNC.Remoting_Server), serverURI)
System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(remoteType)
Dim objectUri As String
Dim messageSink As System.Runtime.Remoting.Messaging.IMessageSink = channel.CreateMessageSink("ipc://localhost:9090/IRemoteObject.rem", Nothing, objectUri)
Console.WriteLine("The URI of the message sink is {0}.", objectUri)
If messageSink IsNot Nothing Then
Console.WriteLine("The type of the message sink is {0}.", messageSink.[GetType]().ToString())
End If
m_eventProxy = New ISOCNC.Remoting.EventProxyManager()
AddHandler m_eventProxy.CommandExecuted, m_Proxy_CommandExecutedEventHandler
AddHandler m_eventProxy.ServerError, m_Proxy_ServerErrorEventHandler
AddHandler m_eventProxy.AxisCoordinatesUpdate, m_Proxy_AxesCoordinatesUpdateEventHandler
AddHandler m_eventProxy.OpStateUpdate, m_Proxy_OpStateUpdateEventHandler
AddHandler m_eventProxy.AlarmNotification, m_Proxy_AlarmNotificationEventHandler
AddHandler m_eventProxy.ListInfoResponse, m_Proxy_ListInfoEventHandler
AddHandler m_eventProxy.RPCUpdate, m_Proxy_RPCUpdateEventHandler
AddHandler m_eventProxy.VariableCommandExecuted, m_Proxy_VariableCommandExecutedEventHandler
AddHandler m_eventProxy.TickUpdate, m_Proxy_TickUpdateEventHandler
_remObject = CType(Activator.GetObject(GetType(ISOCNC.Remoting_Server), serverURI), ISOCNC.Remoting_Server)
Try
m_Rem_CommandExecutedEventHandler = New CommandExecutedEventHandler(AddressOf m_eventProxy.LocallyHandleCommandExecuted)
m_Rem_ServerErrorEventHandler = New ServerErrorEventHandler(AddressOf m_eventProxy.LocallyHandleServerError)
m_Rem_AxesCoordinatesUpdateEventHandler = New AxesCoordinatesUpdateEventHandler(AddressOf m_eventProxy.LocallyHandleAxisCoordinatesUpdate)
m_Rem_OpStateUpdateEventHandler = New OpStateUpdateEventHandler(AddressOf m_eventProxy.LocallyHandleOpStateUpdate)
m_Rem_AlarmNotificationEventHandler = New AlarmNotificationEventHandler(AddressOf m_eventProxy.LocallyHandleAlarmNotification)
m_Rem_ListInfoEventHandler = New ListInfoEventHandler(AddressOf m_eventProxy.LocallyHandleListInfo)
m_Rem_RPCUpdateEventHandler = New RPCUpdateEventHandler(AddressOf m_eventProxy.LocallyHandleRPCUpdate)
m_Rem_VariableCommandExecutedEventHandler = New VariableCommandExecutedEventHandler(AddressOf m_eventProxy.LocallyHandleVariableCommandExecuted)
AddHandler _remObject.CommandExecuted, m_Rem_CommandExecutedEventHandler
AddHandler _remObject.ServerError, m_Rem_ServerErrorEventHandler
AddHandler _remObject.AxisCoordinatesUpdate, m_Rem_AxesCoordinatesUpdateEventHandler
AddHandler _remObject.OpStateUpdate, m_Rem_OpStateUpdateEventHandler
AddHandler _remObject.AlarmNotification, m_Rem_AlarmNotificationEventHandler
AddHandler _remObject.ListInfoResponse, m_Rem_ListInfoEventHandler
AddHandler _remObject.RPCUpdate, m_Rem_RPCUpdateEventHandler
AddHandler _remObject.VariableCommandExecuted, m_Rem_VariableCommandExecutedEventHandler
Catch ex As System.Runtime.Remoting.RemotingException
Dim dR As MessageBoxResult = MessageBox.Show(ex.Message)
End Try
' creo classe che gestisce variabili
m_RWVariableManager = RWVariableManager.CreateRWVariableManager(Me)
End Sub
Friend Sub OnDispose()
RemoveHandler _remObject.CommandExecuted, m_Rem_CommandExecutedEventHandler
RemoveHandler _remObject.ServerError, m_Rem_ServerErrorEventHandler
RemoveHandler _remObject.AxisCoordinatesUpdate, m_Rem_AxesCoordinatesUpdateEventHandler
RemoveHandler _remObject.OpStateUpdate, m_Rem_OpStateUpdateEventHandler
RemoveHandler _remObject.AlarmNotification, m_Rem_AlarmNotificationEventHandler
RemoveHandler _remObject.ListInfoResponse, m_Rem_ListInfoEventHandler
RemoveHandler _remObject.RPCUpdate, m_Rem_RPCUpdateEventHandler
RemoveHandler _remObject.VariableCommandExecuted, m_Rem_VariableCommandExecutedEventHandler
RemoveHandler m_eventProxy.CommandExecuted, m_Proxy_CommandExecutedEventHandler
RemoveHandler m_eventProxy.ServerError, m_Proxy_ServerErrorEventHandler
RemoveHandler m_eventProxy.AxisCoordinatesUpdate, m_Proxy_AxesCoordinatesUpdateEventHandler
RemoveHandler m_eventProxy.OpStateUpdate, m_Proxy_OpStateUpdateEventHandler
RemoveHandler m_eventProxy.AlarmNotification, m_Proxy_AlarmNotificationEventHandler
RemoveHandler m_eventProxy.ListInfoResponse, m_Proxy_ListInfoEventHandler
RemoveHandler m_eventProxy.RPCUpdate, m_Proxy_RPCUpdateEventHandler
RemoveHandler m_eventProxy.VariableCommandExecuted, m_Proxy_VariableCommandExecutedEventHandler
RemoveHandler m_eventProxy.TickUpdate, m_Proxy_TickUpdateEventHandler
End Sub
Private Sub RemoteObject_OpStateUpdate(ByVal newOpState As ISOCNC.Remoting.MachineOperatingState)
' resetto stato pending iniziale
If Map.refMachManaging.StartPending AndAlso newOpState = MachineOperatingState.Pending Then
MachManaging.ResetStartPending()
End If
m_opState = newOpState
m_OpStateCallbackDlg(newOpState)
End Sub
Private Sub RemoteObject_CommandExecuted(ByVal executedCommand As Integer)
Select Case executedCommand
Case CInt(ISOCNC.Remoting.Commands.NoCommand)
Case CInt(ISOCNC.Remoting.Commands.[End])
m_ResultCallbackDlg(CommandTypes.RESET, CommandStates.OK, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.[Error])
m_ResultCallbackDlg(CommandTypes.ERROR_, CommandStates.ERROR_, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.MDI_End)
Case CInt(ISOCNC.Remoting.Commands.MDI_Start)
Case CInt(ISOCNC.Remoting.Commands.MDI_Stop)
Case CInt(ISOCNC.Remoting.Commands.SetPoint)
m_ResultCallbackDlg(CommandTypes.SETPOINT, CommandStates.OK, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.Start)
m_ResultCallbackDlg(CommandTypes.START, CommandStates.OK, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.[Step])
m_ResultCallbackDlg(CommandTypes.STEP_, CommandStates.OK, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.[Stop])
m_ResultCallbackDlg(CommandTypes.STOP_, CommandStates.OK, ResultTypes.RESULT, "")
Case CInt(ISOCNC.Remoting.Commands.Start_Program_Soft)
m_ResultCallbackDlg(CommandTypes.SOFTSTART, CommandStates.OK, ResultTypes.RESULT, "")
Case Else
End Select
_cmdActive = CInt(executedCommand)
End Sub
Private Sub RemoteObject_ServerError(ByVal sender As Object, ByVal seEA As ISOCNC.Remoting.ServerErrorEventArgs)
m_ResultCallbackDlg(CommandTypes.ERROR_, CommandStates.ERROR_, ResultTypes.RESULT, "Server Error: " & seEA.[Error])
Dim dr As MessageBoxResult = MessageBox.Show("Server Error: " & seEA.[Error])
End Sub
Private Sub RemoteObject_AxisCoordinatesUpdate(ByVal axisValue As Double, ByVal axisIndex As Integer)
m_AxisCoordinatesCallbackDlg(axisValue, axisIndex)
End Sub
Private Sub RemoteObject_RPCUpdate(ByVal newRPC As UInteger)
_rpc = CInt(newRPC)
End Sub
Private Sub RemoteObject_ListInfoResponse(ByVal prgCount As Integer, ByVal prgAtIndex As String, ByVal prgList As String())
If prgCount >= 0 Then
_prgCount = prgCount
End If
If prgAtIndex <> "" Then
_prgAtIndex = prgAtIndex
End If
If prgList IsNot Nothing AndAlso prgList.Length > 0 Then
_prgList = prgList
_prgListUpdated = True
End If
End Sub
Private Sub RemoteObject_AlarmNotification(ByVal alarmOperation As Integer, ByVal alarmType As Integer, ByVal alarmMessage As String, ByVal alarmCode As String, ByVal alarmDateTime As String)
' restituisco errore ad interfaccia
m_AlarmCallbackDlg(alarmOperation, alarmType, alarmMessage, alarmCode, alarmDateTime)
End Sub
Private Sub RemoteObject_VariableCommandExecuted(ByVal executedCommand As Integer, ByVal commandExecutedCorrectly As Boolean, ByVal varName As String, ByVal varValue As String, ByVal varType As Integer)
' riporto valore variabile su array
Select Case executedCommand
Case VariableCommands.Error
Case VariableCommands.NotExecuted
Case VariableCommands.ReadVar
m_RWVariableManager.UpdateVar(commandExecutedCorrectly, varName, varValue, varType)
Case VariableCommands.WriteVar
m_ResultCallbackDlg(CommandTypes.WRITE, If(commandExecutedCorrectly, CommandStates.OK, CommandStates.ERROR_), ResultTypes.RESULT, varName & "=" & varValue)
Case VariableCommands.ReadAxis
Case VariableCommands.ReadAny
End Select
End Sub
Private Sub RemoteObject_TickUpdate(ByVal newTick As ULong)
End Sub
End Class
+32
View File
@@ -0,0 +1,32 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
'----------------------------------------------------------------------------
' File : ConstGen.vb Data : 10.04.17 Versione : 1.8d1
' Contenuto : Modulo costanti generali.
'
'
'
' Modifiche : 10.04.17 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Module ConstCommVa
' Assi
Public Const ASSE_X As String = "AsseX"
Public Const ASSE_Y As String = "AsseY"
Public Const ASSE_Z As String = "AsseZ"
Public Const ASSE_C As String = "AsseC"
Public Const ASSE_B As String = "AsseB"
' variabili P eventi pezzo
Public Const P_PROD As String = "P_Prod"
Public Const P_MACHGROUP As String = "P_Machgroup"
Public Const P_PART As String = "P_Part"
Public Const P_STATE As String = "P_State"
' variabile stato di reset
Public Const RESET_STATE As String = "Reset_State"
' variabili V per anticipo carico
Public Const VPAR As String = "V"
End Module
+74
View File
@@ -0,0 +1,74 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2017
'----------------------------------------------------------------------------
' File : ConstGen.vb Data : 10.04.17 Versione : 1.8d1
' Contenuto : Modulo costanti generali.
'
'
'
' Modifiche : 10.04.17 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstGen
' File con direttorio radice dei dati
Public Const DAT_FILE_NAME As String = "DataRoot.Ini"
Public Const S_DATA As String = "Data"
Public Const K_DATAROOT As String = "DataRoot"
' File con dati di licenza
Public Const LIC_FILE_NAME As String = "EgtBEAMWALL.lic"
Public Const S_LICENCE As String = "Licence"
Public Const K_KEY As String = "Key"
Public Const K_NESTKEY As String = "NestKey"
' Pagine del programma
Public Enum Pages As Integer
VIEW = 0
MACHINING = 1
SUPERVISOR = 2
CONFIG = 3
End Enum
' Abilitazioni licenza
Public Enum KEY_OPT As UInteger
BEAM = 1
WALL = 2
NESTING_AUTO = 4
SUPERVISOR = 8
NETWORK = 16
End Enum
' File di log generale
Public Const GENLOG_FILE_NAME As String = "EgtBEAMWALLLog#.txt"
' Sottodirettorio di configurazione
Public Const CONF_DIR As String = "Config"
' Sottodirettorio delle risorse
Public Const RES_DIR As String = "Resources"
' Sottodirettorio temporaneo
Public Const TEMP_DIR As String = "Temp"
' Sottodirettorio per Cam automatico
Public Const PROJS_DIR As String = "Projs"
' Sottodirettorio per Csv automatico
Public Const PRODS_DIR As String = "Prods"
' Sottodirettorio per Macro
Public Const MACRO_DIR As String = "Macro"
' Sottodirettorio per Magazzino
Public Const WAREHOUSE_DIR As String = "Warehouse"
' Sottodirettorio per lavorazioni travi
Public Const BEAM_DIR As String = "Beam"
' Sottodirettorio per lavorazioni pareti
Public Const WALL_DIR As String = "Wall"
' Sottodirettorio di default per il salvataggio con nome
Public Const SAVE_DFL_NAMEDIR As String = "MyProjects"
' Sottodirettorio di default per le macchine
Public Const MACHINES_DFL_DIR As String = "Machines"
' Sottodirettorio di default per toolmakers
Public Const TOOLMAKERS_DFL_DIR As String = "ToolMakers"
' Nome file Lua con le funzioni di attrezzaggio
Public Const SETUP_LUA As String = "SetUp.lua"
End Module
+125
View File
@@ -0,0 +1,125 @@
'----------------------------------------------------------------------------
' EgalTech 2015-2015
'----------------------------------------------------------------------------
' File : ConstIni.vb Data : 12.02.15 Versione : 1.6b3
' Contenuto : Modulo costanti sezione e chiavi per file Ini.
'
'
'
' Modifiche : 12.02.15 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
Public Module ConstIni
Public Const INI_FILE_NAME As String = "EgtCOMMTest.ini"
Public Const S_GENERAL As String = "General"
Public Const K_NCTYPE As String = "NCType"
'Public Const K_DEBUG As String = "Debug"
'Public Const K_LICENCE As String = "Licence"
'Public Const K_USERLEVEL As String = "UserLevel"
'Public Const K_MAXINST As String = "MaxInstances"
Public Const K_MAXCAMINST As String = "MaxCamInstances"
'Public Const K_INSTANCES As String = "Instances"
'Public Const K_COMMANDLOG As String = "CommandLog"
'Public Const K_MESSAGESDIR As String = "MessagesDir"
'Public Const K_MESSAGES As String = "Messages"
'Public Const K_WINPLACE As String = "WinPlace"
'Public Const K_LASTPROJ As String = "LastProj"
'Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj"
Public Const K_LASTIMPDIR As String = "LastImpDir"
Public Const K_PROJSINDEX As String = "ProjsIndex"
Public Const K_PRODSINDEX As String = "ProdsIndex"
'Public Const K_SUPPORT As String = "Support"
Public Const K_WAREHOUSE As String = "Warehouse"
'Public Const S_LANGUAGES As String = "Languages"
'Public Const K_LANGUAGE As String = "Language"
'Public Const S_LUA As String = "Lua"
'Public Const K_LIBSDIR As String = "LibsDir"
'Public Const K_BASELIB As String = "BaseLib"
'Public Const S_GEOMDB As String = "GeomDB"
'Public Const K_DEFAULTFONT As String = "DefaultFont"
'Public Const K_NFEFONTDIR As String = "NfeFontDir"
'Public Const K_DEFAULTCOLOR As String = "DefaultColor"
'Public Const K_SAVETYPE As String = "SaveType"
'Public Const S_OPENGL As String = "OpenGL"
'Public Const K_DOUBLEBUFFER As String = "DoubleBuffer"
'Public Const K_COLORBITS As String = "ColorBits"
'Public Const K_DEPTHBITS As String = "DepthBits"
'Public Const K_DRIVER As String = "Driver"
'Public Const S_SCENE As String = "Scene"
'Public Const K_BACKTOP As String = "BackTop"
'Public Const K_BACKBOTTOM As String = "BackBottom"
'Public Const K_SHOWGFRAME As String = "ShowGFrame"
'Public Const K_MARK As String = "Mark"
'Public Const K_SELSURF As String = "SelSurf"
'Public Const K_SHOWMODE As String = "ShowMode"
Public Const K_SHOWBUILDING As String = "ShowBuilding"
'Public Const K_CURVEDIR As String = "CurveDir"
'Public Const K_SHOWTRIAADV As String = "ShowTriaAdv"
'Public Const K_SHOWZMAP As String = "ShowZmap"
'Public Const K_TEXMAXLINPIX As String = "TextureMaxLinPixels"
'Public Const K_ZOOMWIN As String = "ZoomWin"
'Public Const K_DISTLINE As String = "DistLine"
'Public Const K_MMUNITS As String = "MmUnits"
'Public Const S_GRID As String = "Grid"
'Public Const K_SHOWGRID As String = "ShowGrid"
'Public Const K_SHOWFRAME As String = "ShowFrame"
'Public Const K_SNAPSTEP As String = "SnapStep"
'Public Const K_SNAPSTEPINCH As String = "SnapStepInch"
'Public Const K_MINLINESSTEP As String = "MinLineSStep"
'Public Const K_MAJLINESSTEP As String = "MajLineSStep"
'Public Const K_EXTSSTEP As String = "ExtSStep"
'Public Const K_MINLNCOLOR As String = "MinLnColor"
'Public Const K_MAJLNCOLOR As String = "MajLnColor"
Public Const S_IMPORT As String = "Import"
Public Const K_BTLFLAG As String = "BtlFlag"
Public Const K_WALLBTLFLAG As String = "WallBtlFlag"
'Public Const S_MACH As String = "Mach"
'Public Const K_MACHINESDIR As String = "MachinesDir"
'Public Const K_TOOLMAKERSDIR As String = "ToolMakersDir"
'Public Const K_CURRMACH As String = "CurrMach"
Public Const K_PASSWORD As String = "Password"
'Public Const S_SIMUL As String = "Simul"
'Public Const K_SLIDERX As String = "SliderX"
'Public Const K_SLIDERVAL As String = "SliderVal"
Public Const S_BEAM As String = "Beam"
Public Const K_CALCPATH As String = "CalcPath"
Public Const K_BEAMBASEDIR As String = "BaseDir"
Public Const K_BEAMBWEEXEC As String = "BweExec"
Public Const S_WALL As String = "Wall"
Public Const K_WALLBASEDIR As String = "BaseDir"
Public Const K_WALLBWEEXEC As String = "BweExec"
'Public Const S_NEST As String = "Nest"
Public Const K_NESTEXEC As String = "NestExec"
Public Const K_SECTIONTIME As String = "SectionTime"
Public Const K_PARTTIME As String = "PartTime"
Public Const K_RAWPARTDEF As String = "RawPartDefinition"
Public Const K_MANUALNEST As String = "ManualNest"
Public Const S_BEAMWALL As String = "BeamWall"
Public Const K_BEAMWALLENABLE As String = "BtlEnable"
Public Const K_BEAMWALLBASEDIR As String = "BaseDir"
Public Const K_BEAMWALLBUTTON As String = "Button"
Public Const S_MRUPROJFILES As String = "MruProjFiles"
Public Const S_MRUPRODFILES As String = "MruProdFiles"
Public Const S_PRINTER As String = "Printer"
Public Const K_LINK As String = "Link"
End Module
+56
View File
@@ -0,0 +1,56 @@
Public Module ConstMachComm
Public Enum ResultTypes As Integer
NULL = 0
EXECUTED = 1
RESULT = 2
End Enum
Public Enum CommandTypes As Integer
ERROR_ = 1
CONNECT = 2
DISCONNECT = 3
START = 4
SOFTSTART = 5
STOP_ = 6
RESET = 7
STEP_ = 8
SETPOINT = 9
SENDPROG = 10
REMOVEPROG = 11
REMOVEALLPROG = 12
READ = 13
WRITE = 14
DELETEALARMS = 15
SETOP = 16
End Enum
Public Enum LogCommandTypes As Integer
NULL = 0
ERROR_ = 1
CONNECT = 2
DISCONNECT = 3
START = 4
SOFTSTART = 5
STOP_ = 6
RESET = 7
STEP_ = 8
SETPOINT = 9
SENDPROG = 10
REMOVEPROG = 11
REMOVEALLPROG = 12
READ = 13
WRITE = 14
DELETEALARMS = 15
SETOP = 16
ALARM = 17
NEWOP = 18
End Enum
Public Enum CommandStates As Integer
NULL = 0
ERROR_ = 1
OK = 2
End Enum
End Module
+8
View File
@@ -0,0 +1,8 @@
Public Module ConstMachIni
Public Const MACH_INI_FILE_NAME As String = "MachData.ini"
Public Const S_AXES As String = "Axes"
Public Const S_VARIABLES As String = "Variables"
End Module
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31005.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EgtCOMMTest", "EgtCOMMTest.vbproj", "{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}.Debug|x86.ActiveCfg = Debug|x86
{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}.Debug|x86.Build.0 = Debug|x86
{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}.Release|x86.ActiveCfg = Release|x86
{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {789B56F2-F6BD-429C-8B3E-DF096D0B2C9E}
EndGlobalSection
EndGlobal
+224
View File
@@ -0,0 +1,224 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{EFD7A228-A3D4-4C0B-A7AF-655A03E33939}</ProjectGuid>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<OutputType>WinExe</OutputType>
<RootNamespace>EgtCOMMTest</RootNamespace>
<AssemblyName>EgtCOMMTest</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<MyType>Custom</MyType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>true</IncrementalBuild>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>EgtCOMMTest.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DebugSymbols>false</DebugSymbols>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<IncrementalBuild>false</IncrementalBuild>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>EgtCOMMTest.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<DocumentationFile>EgtCOMMTest.xml</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<DocumentationFile>EgtCOMMTest.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtUILib">
<HintPath>..\..\EgtProg\DllD32\EgtUILib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib5">
<HintPath>..\..\EgtProg\DllD32\EgtWPFLib5.dll</HintPath>
</Reference>
<Reference Include="Interop.FXServer">
<HintPath>..\..\CNC\NUM\FXSDK\samples\C#\FXServer\fx_DGeneralFunctions\fx_DGeneralFunctions\obj\x86\Debug\Interop.FXServer.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="ISOCNC.Remoting">
<HintPath>..\..\Albatros\Bin\ISOCNC.Remoting.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="Application.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="AxesPanel\AxesPanelV.xaml.vb">
<DependentUpon>AxesPanelV.xaml</DependentUpon>
</Compile>
<Compile Include="AxesPanel\AxesPanelVM.vb" />
<Compile Include="Constants\ConstCommVar.vb" />
<Compile Include="Constants\ConstGen.vb" />
<Compile Include="Constants\ConstIni.vb" />
<Compile Include="Constants\ConstMachComm.vb" />
<Compile Include="Constants\ConstMachIni.vb" />
<Compile Include="MachManagingThread\NewValueEventArgs.vb" />
<Compile Include="MainWindow\MainWindowM.vb" />
<Compile Include="Utility\Dictionary.xaml.vb">
<DependentUpon>Dictionary.xaml</DependentUpon>
</Compile>
<Compile Include="Utility\Map.vb" />
<Compile Include="VariablesList\VariablesListV.xaml.vb">
<DependentUpon>VariablesListV.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="VariablesList\VariablesListVM.vb" />
<Page Include="AxesPanel\AxesPanelV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MachCommandMessagePanel\MachCommandMessagePanelV.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="Application.xaml.vb">
<DependentUpon>Application.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Comms\TPAComm.vb" />
<Compile Include="MachCommandMessagePanel\MachCommandMessagePanelV.xaml.vb">
<DependentUpon>MachCommandMessagePanelV.xaml</DependentUpon>
</Compile>
<Compile Include="MachCommandMessagePanel\MachCommandMessagePanelVM.vb" />
<Compile Include="MachManagingThread\MachCommConst.vb" />
<Compile Include="MachManagingThread\MachManaging.vb" />
<Compile Include="MachManagingThread\MachManagingThread.vb" />
<Compile Include="MachManagingThread\RWVariableManager.vb" />
<Page Include="MainWindow\MainWindowV.xaml">
<SubType>Designer</SubType>
<Generator>XamlIntelliSenseFileGenerator</Generator>
</Page>
<Page Include="Utility\Dictionary.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="VariablesList\VariablesListV.xaml">
<SubType>Designer</SubType>
<Generator>XamlIntelliSenseFileGenerator</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Import Include="System.Threading.Tasks" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows" />
<Import Include="System.Windows.Controls" />
<Import Include="System.Windows.Data" />
<Import Include="System.Windows.Documents" />
<Import Include="System.Windows.Input" />
<Import Include="System.Windows.Shapes" />
<Import Include="System.Windows.Media" />
<Import Include="System.Windows.Media.Imaging" />
<Import Include="System.Windows.Navigation" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainWindow\MainWindowV.xaml.vb">
<DependentUpon>MainWindowV.xaml</DependentUpon>
</Compile>
<Compile Include="MainWindow\MainWindowVM.vb" />
<Compile Include="My Project\AssemblyInfo.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="My Project\MyExtensions\MyWpfExtension.vb">
<VBMyExtensionTemplateID>Microsoft.VisualBasic.WPF.MyExtension</VBMyExtensionTemplateID>
<VBMyExtensionTemplateVersion>1.0.0.0</VBMyExtensionTemplateVersion>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
</EmbeddedResource>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\AboutBoxImage.png" />
<Resource Include="Resources\EgtCOMMTest.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtCOMMTest\EgtCOMMTestR32.exe
IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Debug" copy $(TargetPath) c:\EgtProg\EgtCOMMTest\EgtCOMMTestD32.exe
</PostBuildEvent>
</PropertyGroup>
</Project>
@@ -0,0 +1,37 @@
<UserControl x:Class="MachCommandMessagePanelV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBlock Text="{Binding sErrCycle}"/>
<TextBlock Text="{Binding sIso}"/>
<TextBlock Text="{Binding sMessage}"/>
<TextBlock Text="{Binding sErrSystem}"/>
<Button Content="CANCELLA ALLARMI"
Command="{Binding DeleteAlarms_Command}"
Visibility="Collapsed"/>
<StackPanel Orientation="Horizontal">
<Button Content="CONNECT"
Command="{Binding Connect_Command}"
Background="{Binding Connect_Background}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="START"
Command="{Binding Start_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="STOP"
Command="{Binding Stop_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="RESET"
Command="{Binding Reset_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="STEP"
Command="{Binding Step_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="SET POINT"
Command="{Binding SetPoint_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
<Button Content="DELETE ALARMS"
Command="{Binding DeleteAlarms_Command}"
Style="{StaticResource ToolBar_TextButton}"/>
</StackPanel>
</StackPanel>
</UserControl>
@@ -0,0 +1,3 @@
Public Class MachCommandMessagePanelV
End Class
@@ -0,0 +1,485 @@
Imports System.Collections.ObjectModel
Imports System.Threading
Imports System.Windows.Threading
Imports EgtWPFLib5
Public Class MachCommandMessagePanelVM
Inherits VMBase
Public Enum MachineOperatingState
Start = 1
[Stop] = 2
[End] = 3
SetPoint = 4
Pending = 5
Unspecified = 100
End Enum
Private m_AlarmTimer As New DispatcherTimer
Private m_MachManagingThread As Thread
Public ReadOnly Property MachManagingThread As Thread
Get
Return m_MachManagingThread
End Get
End Property
Private _Connected As Boolean = False
Public ReadOnly Property Connected As Boolean
Get
Return _Connected
End Get
End Property
Public ReadOnly Property Connect_Background As SolidColorBrush
Get
Return (If(_Connected, Brushes.Green, Brushes.Red))
End Get
End Property
Private _ProgramPath As String
Public ReadOnly Property ProgramPath As String
Get
Return _ProgramPath
End Get
End Property
Private _ProgramIndex As Integer = 0
Public Property ProgramIndex As Integer
Get
Return _ProgramIndex
End Get
Set(ByVal value As Integer)
_ProgramIndex = value
End Set
End Property
Private _VarName As String
Public Property VarName As String
Get
Return _VarName
End Get
Set(ByVal value As String)
_VarName = value
End Set
End Property
Private _VarValue As String = ""
Public Property VarValue As String
Get
Return _VarValue
End Get
Set(ByVal value As String)
_VarValue = value
End Set
End Property
Public Sub SetVarValue(ByVal value As Object)
_VarValue = CStr(value)
NotifyPropertyChanged(NameOf(VarValue))
End Sub
'Private m_OPState As MachineOperatingState
'Public ReadOnly Property OPState As MachineOperatingState
' Get
' Return m_OPState
' End Get
'End Property
'Public ReadOnly Property sOPState As String
' Get
' Select Case m_OPState
' Case MachineOperatingState.Start
' Return "START"
' Case MachineOperatingState.Stop
' Return "STOP"
' Case MachineOperatingState.End
' Return "RESET"
' Case MachineOperatingState.SetPoint
' Return "SETPOINT"
' Case MachineOperatingState.Pending
' Return "PENDING"
' Case Else
' Return "UNSPECIFIED"
' End Select
' End Get
'End Property
Private m_ErrCycle As New List(Of Alarm)
Private m_ErrCycleCount As Integer = 0
Public ReadOnly Property sErrCycle As String
Get
Dim ShownErr As Alarm = If(m_ErrCycleCount < m_ErrCycle.Count, m_ErrCycle(m_ErrCycleCount), Nothing)
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
End Get
End Property
Private m_Iso As New List(Of Alarm)
Private m_IsoCount As Integer = 0
Public ReadOnly Property sIso As String
Get
Dim ShownErr As Alarm = If(m_IsoCount < m_Iso.Count, m_Iso(m_IsoCount), Nothing)
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
End Get
End Property
Private m_Message As New List(Of Alarm)
Private m_MessageCount As Integer = 0
Public ReadOnly Property sMessage As String
Get
Dim ShownErr As Alarm = If(m_MessageCount < m_Message.Count, m_Message(m_MessageCount), Nothing)
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
End Get
End Property
Private m_ErrSystem As New List(Of Alarm)
Private m_ErrSystemCount As Integer = 0
Public ReadOnly Property sErrSystem As String
Get
Dim ShownErr As Alarm = If(m_ErrSystemCount < m_ErrSystem.Count, m_ErrSystem(m_ErrSystemCount), Nothing)
Return If(Not IsNothing(ShownErr), ShownErr.sCode & ": " & ShownErr.sMessage, "")
End Get
End Property
Private m_cmdConnect As ICommand
Private m_cmdDisconnect As ICommand
Private m_cmdStart As ICommand
Private m_cmdStop As ICommand
Private m_cmdReset As ICommand
Private m_cmdStep As ICommand
Private m_cmdDeleteAlarms As ICommand
Private m_cmdSetPoint As ICommand
'Private m_cmdPrintLabel As ICommand
Public Sub New()
Map.SetRefMachCommandMessagePanelVM(Me)
' impostazioni timer degli allarmi
m_AlarmTimer.Interval = TimeSpan.FromMilliseconds(1500)
AddHandler m_AlarmTimer.Tick, AddressOf AlarmTimer_Tick
NotifyPropertyChanged(NameOf(Connect_Background))
End Sub
Private Sub AlarmTimer_Tick()
If m_ErrCycle.Count = 0 AndAlso m_Iso.Count = 0 AndAlso m_Message.Count = 0 AndAlso m_ErrSystem.Count = 0 Then
NotifyPropertyChanged(NameOf(sErrCycle))
NotifyPropertyChanged(NameOf(sIso))
NotifyPropertyChanged(NameOf(sMessage))
NotifyPropertyChanged(NameOf(sErrSystem))
Return
End If
If m_ErrCycle.Count > 0 Then
If m_ErrCycleCount < m_ErrCycle.Count - 1 Then
m_ErrCycleCount += 1
Else
m_ErrCycleCount = 0
End If
End If
NotifyPropertyChanged(NameOf(sErrCycle))
If m_Iso.Count > 0 Then
If m_IsoCount < m_Iso.Count - 1 Then
m_IsoCount += 1
Else
m_IsoCount = 0
End If
End If
NotifyPropertyChanged(NameOf(sIso))
If m_Message.Count > 0 Then
If m_MessageCount < m_Message.Count - 1 Then
m_MessageCount += 1
Else
m_MessageCount = 0
End If
End If
NotifyPropertyChanged(NameOf(sMessage))
If m_ErrSystem.Count > 0 Then
If m_ErrSystemCount < m_ErrSystem.Count - 1 Then
m_ErrSystemCount += 1
Else
m_ErrSystemCount = 0
End If
End If
NotifyPropertyChanged(NameOf(sErrSystem))
End Sub
Public ReadOnly Property Connect_Command As ICommand
Get
If m_cmdConnect Is Nothing Then m_cmdConnect = New Command(AddressOf Connect)
Return m_cmdConnect
End Get
End Property
Public Sub Connect(ByVal param As Object)
' creo thread gestione macchina
m_MachManagingThread = New Thread(Sub()
MachineCommThread.MachManagingThreadFunction(AddressOf ResultCallbackDlg, AddressOf CloseCallbackDlg,
AddressOf UpdateCallbackDlg, AddressOf AlarmCallbackDlg,
AddressOf AxisCoordinatesCallbackDlg, AddressOf OpStateCallbackDlg,
AddressOf ReadVarCallbackDlg)
End Sub)
' avvio thread di gestione della macchina che avvia la connessione
m_MachManagingThread.Start()
End Sub
Private Sub Init()
' inizializzo valori assi leggendoli da variabili
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ, ASSE_X))
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ, ASSE_Y))
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ, ASSE_Z))
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ, ASSE_B))
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ, ASSE_C))
End Sub
Public ReadOnly Property Disconnect_Command As ICommand
Get
If m_cmdDisconnect Is Nothing Then m_cmdDisconnect = New Command(AddressOf Disconnect)
Return m_cmdDisconnect
End Get
End Property
Public Sub Disconnect()
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT))
End Sub
Public Sub SetOPState(OpState As Integer)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETOP))
End Sub
Public ReadOnly Property Start_Command As ICommand
Get
If m_cmdStart Is Nothing Then m_cmdStart = New Command(AddressOf Start)
Return m_cmdStart
End Get
End Property
Public Sub Start(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.START))
End Sub
Public ReadOnly Property Stop_Command As ICommand
Get
If m_cmdStop Is Nothing Then m_cmdStop = New Command(AddressOf [Stop])
Return m_cmdStop
End Get
End Property
Public Sub [Stop](ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STOP_))
End Sub
Public ReadOnly Property Reset_Command As ICommand
Get
If m_cmdReset Is Nothing Then m_cmdReset = New Command(AddressOf Reset)
Return m_cmdReset
End Get
End Property
Public Sub Reset(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.RESET))
' annullo stato di pronto ad essere lavorato di tutti i programmi
' If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then Map.refProjectVM.SupervisorMachGroupPanelVM.ResetAllMachGroups()
End Sub
Public ReadOnly Property Step_Command As ICommand
Get
If m_cmdStep Is Nothing Then m_cmdStep = New Command(AddressOf [Step])
Return m_cmdStep
End Get
End Property
Public Sub [Step](ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.STEP_))
End Sub
Public ReadOnly Property SetPoint_Command As ICommand
Get
If m_cmdSetPoint Is Nothing Then m_cmdSetPoint = New Command(AddressOf SetPoint)
Return m_cmdSetPoint
End Get
End Property
Public Sub SetPoint(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETPOINT))
End Sub
'Public ReadOnly Property PrintLabel_Command As ICommand
' Get
' If m_cmdPrintLabel Is Nothing Then m_cmdPrintLabel = New Command(AddressOf PrintLabel)
' Return m_cmdPrintLabel
' End Get
'End Property
'Public Sub PrintLabel()
' 'DbControllers.m_LogMachineController.Create(MachLog.CreateResultLog(LogCommandTypes.ALARM, CommandStates.ERROR_, ResultTypes.EXECUTED, ""))
' 'DbControllers.m_LogMachineController.Create(MachLog.CreateAlarmLog(5, 7, "Allaaaaaaaarmeeeeeeeeee!!", 7645, DateTime.Now()))
' 'DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(85))
' 'DbControllers.m_LogMachineController.Create(MachLog.CreateReadLog(True, "E80048", "46"))
' 'LabelPrinter.SetTestPrintVariables(2, 34, 76)
' 'LabelPrinter.Print()
'End Sub
Public ReadOnly Property DeleteAlarms_Command As ICommand
Get
If m_cmdDeleteAlarms Is Nothing Then m_cmdDeleteAlarms = New Command(AddressOf DeleteAlarms)
Return m_cmdDeleteAlarms
End Get
End Property
Public Sub DeleteAlarms(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DELETEALARMS))
End Sub
#Region "CALLBACKS"
Friend Sub ResultCallbackDlg(CommandType As CommandTypes, CommandState As CommandStates, ResultType As ResultTypes, Params As String)
Select Case CommandType
Case CommandTypes.CONNECT
If CommandState = CommandStates.OK Then
_Connected = True
NotifyPropertyChanged(NameOf(Connect_Background))
Init()
End If
Case CommandTypes.DISCONNECT
If CommandState = CommandStates.OK Then
_Connected = False
NotifyPropertyChanged(NameOf(Connect_Background))
End If
End Select
'DbControllers.m_LogMachineController.Create(MachLog.CreateResultLog(CommandType, CommandState, ResultType, Params))
End Sub
Friend Sub CloseCallbackDlg(ByRef bCancel As Boolean)
' serve?
End Sub
Friend Sub UpdateCallbackDlg(Param As String, Params As String)
End Sub
Friend Sub AlarmCallbackDlg(ByVal AlarmOperation As Integer, ByVal AlarmType As Integer, ByVal AlarmMessage As String, ByVal AlarmCode As String, ByVal AlarmDateTime As String)
' se aggiungo allarme e non ce ne erano
If AlarmOperation = CInt(ISOCNC.Remoting.AlarmOperation.Addition) AndAlso m_ErrCycle.Count = 0 AndAlso m_Iso.Count = 0 AndAlso m_Message.Count = 0 AndAlso m_ErrSystem.Count = 0 Then
' avvio il timer degli allarmi
m_AlarmTimer.Start()
End If
' analizzo errore
Select Case AlarmType
Case CInt(ISOCNC.Remoting.AlarmType.Cycle)
If AlarmOperation = CInt(ISOCNC.Remoting.AlarmOperation.Addition) Then
m_ErrCycle.Add(Alarm.CreateAlarm(AlarmCode, AlarmMessage))
Else
m_ErrCycle.RemoveAll(Function(x) x.sCode = AlarmCode)
'Dim ToRemove As Alarm = m_ErrCycle.FirstOrDefault(Function(x) x.sCode = AlarmCode)
'If Not IsNothing(ToRemove) Then
' m_ErrCycle.Remove(ToRemove)
'End If
End If
Case CInt(ISOCNC.Remoting.AlarmType.ISO)
If AlarmOperation = CInt(ISOCNC.Remoting.AlarmOperation.Addition) Then
m_Iso.Add(Alarm.CreateAlarm(AlarmCode, AlarmMessage))
Else
m_Iso.RemoveAll(Function(x) x.sCode = AlarmCode)
'Dim ToRemove As Alarm = m_Iso.FirstOrDefault(Function(x) x.sCode = AlarmCode)
'If Not IsNothing(ToRemove) Then
' m_Iso.Remove(ToRemove)
'End If
End If
Case CInt(ISOCNC.Remoting.AlarmType.Message)
If AlarmOperation = CInt(ISOCNC.Remoting.AlarmOperation.Addition) Then
m_Message.Add(Alarm.CreateAlarm(AlarmCode, AlarmMessage))
Else
m_Message.RemoveAll(Function(x) x.sCode = AlarmCode)
'Dim ToRemove As Alarm = m_Message.FirstOrDefault(Function(x) x.sCode = AlarmCode)
'If Not IsNothing(ToRemove) Then
' m_Message.Remove(ToRemove)
'End If
End If
Case CInt(ISOCNC.Remoting.AlarmType.None)
Case CInt(ISOCNC.Remoting.AlarmType.System)
If AlarmOperation = CInt(ISOCNC.Remoting.AlarmOperation.Addition) Then
m_ErrSystem.Add(Alarm.CreateAlarm(AlarmCode, AlarmMessage))
Else
m_ErrSystem.RemoveAll(Function(x) x.sCode = AlarmCode)
'Dim ToRemove As Alarm = m_ErrSystem.FirstOrDefault(Function(x) x.sCode = AlarmCode)
'If Not IsNothing(ToRemove) Then
' m_ErrSystem.Remove(ToRemove)
'End If
End If
Case Else
End Select
' forzo aggiornamento allarmi
AlarmTimer_Tick()
' se non ci sono errori
If m_ErrCycle.Count = 0 AndAlso m_Iso.Count = 0 AndAlso m_Message.Count = 0 AndAlso m_ErrSystem.Count = 0 Then
' fermo timer degli allarmi
m_AlarmTimer.Stop()
End If
'DbControllers.m_LogMachineController.Create(MachLog.CreateAlarmLog(AlarmOperation, AlarmType, AlarmMessage, AlarmCode, AlarmDateTime))
End Sub
Friend Sub AxisCoordinatesCallbackDlg(AxisValue As Double, AxisIndex As Integer)
Map.refAxesPanelVM.AxisCoordinatesCallbackDlg(AxisValue, AxisIndex)
End Sub
Friend Sub OpStateCallbackDlg(newOpState As MachineOperatingState)
If newOpState <> MachineOperatingState.Unspecified Then
Map.refMainWindowVM.SetOPState(newOpState)
End If
' Map.refLeftPanelVM.NotifyPropertyChanged(NameOf(Map.refLeftPanelVM.sOPState))
'DbControllers.m_LogMachineController.Create(MachLog.CreateOPStateLog(newOpState))
End Sub
Friend Sub ReadVarCallbackDlg(CommandExecutedCorrectly As Boolean, VarAddress As String, VarValue As String, VarType As Integer)
Dim VarName As String = RWVariableManager.GetReadVarNameFromAddress(VarAddress)
If Not String.IsNullOrEmpty(VarName) Then
Select Case VarName
Case "AsseX", "AsseY", "AsseZ", "AsseC", "AsseB"
SetAxisValue(VarName, VarValue)
End Select
End If
'DbControllers.m_LogMachineController.Create(MachLog.CreateReadLog(CommandExecutedCorrectly, VarAddress, VarValue))
End Sub
Private Sub SetAxisValue(VarName As String, VarValue As String)
Dim Axis As Axis = Map.refAxesPanelVM.AxesList.FirstOrDefault(Function(x) x.sName = VarName)
If Not IsNothing(Axis) Then
Axis.SetValue(VarValue)
End If
End Sub
#End Region ' CALLBACKS
End Class
Class Alarm
Private m_sCode As String
Public ReadOnly Property sCode As String
Get
Return m_sCode
End Get
End Property
Private m_sMessage As String
Public ReadOnly Property sMessage As String
Get
Return m_sMessage
End Get
End Property
Protected Sub New()
End Sub
Public Shared Function CreateAlarm(Code As String, Message As String) As Alarm
Dim NewAlarm As New Alarm
NewAlarm.m_sCode = Code
NewAlarm.m_sMessage = Message
Return NewAlarm
End Function
End Class
@@ -0,0 +1,58 @@
Imports System.Collections.ObjectModel
Imports ISOCNC.Remoting
Public Class MachCommandPanelVM
Private m_AxisList As ObservableCollection(Of Axis)
Public ReadOnly Property AxisList As ObservableCollection(Of Axis)
Get
Return m_AxisList
End Get
End Property
Private m_OPState As MachineOperatingState
'Public ReadOnly Property OPState As MachineOperatingState
' Get
' Return m_OPState
' End Get
'End Property
'Public ReadOnly Property sOPState As String
' Get
' Select Case m_OPState
' Case MachineOperatingState.Start
' Return "START"
' Case MachineOperatingState.Stop
' Return "STOP"
' Case MachineOperatingState.End
' Return "RESET"
' Case MachineOperatingState.SetPoint
' Return "SETPOINT"
' Case MachineOperatingState.Pending
' Return "PENDING"
' Case Else
' Return "UNSPECIFIED"
' End Select
' End Get
'End Property
Public Sub New()
Map.SetRefMachCommandMessagePanelVM(Me)
'' impostazioni timer degli allarmi
'm_AlarmTimer.Interval = TimeSpan.FromMilliseconds(1500)
'AddHandler m_AlarmTimer.Tick, AddressOf AlarmTimer_Tick
'' impostazione assi (leggerli da conf macchina)
'm_AxisList = New ObservableCollection(Of Axis)({New Axis(ASSE_X),
' New Axis(ASSE_Y),
' New Axis(ASSE_Z),
' New Axis(ASSE_C),
' New Axis(ASSE_B)})
'' connetto stampante etichette
'LabelPrinter.ConnectPrinter()
'NotifyPropertyChanged(NameOf(Connect_Background))
End Sub
End Class
@@ -0,0 +1,57 @@
Imports EgtWPFLib5
Public Class Axis
Inherits VMBase
Private m_Name As String
Public ReadOnly Property sName As String
Get
Return m_Name
End Get
End Property
Private m_Value As Double
Public ReadOnly Property sValue As Double
Get
Return m_Value
End Get
End Property
Friend Sub SetValue(value As Double)
m_Value = value
NotifyPropertyChanged(NameOf(sValue))
End Sub
Public Sub New(Name As String)
m_Name = Name
End Sub
End Class
Class Alarm
Private m_sCode As String
Public ReadOnly Property sCode As String
Get
Return m_sCode
End Get
End Property
Private m_sMessage As String
Public ReadOnly Property sMessage As String
Get
Return m_sMessage
End Get
End Property
Protected Sub New()
End Sub
Public Shared Function CreateAlarm(Code As String, Message As String) As Alarm
Dim NewAlarm As New Alarm
NewAlarm.m_sCode = Code
NewAlarm.m_sMessage = Message
Return NewAlarm
End Function
End Class
+33
View File
@@ -0,0 +1,33 @@
Module MachCommConst
Public Enum PVars As Integer
PROD = 0
MACHGROUP = 1
PART = 2
STATE = 3
End Enum
' stati pezzo
Public Enum PartState As Integer
NULL = 0
START = 1
END_ = 2
End Enum
Public Delegate Sub ResultCallbackDlg(CommandType As CommandTypes, CommandState As CommandStates, ResultType As ResultTypes, Params As String)
Public Delegate Sub CloseCallbackDlg(ByRef bCancel As Boolean)
Public Delegate Sub UpdateCallbackDlg(Param As String, Params As String)
Public Delegate Sub AlarmCallbackDlg(ByVal AlarmOperation As Integer, ByVal AlarmType As Integer, ByVal AlarmMessage As String, ByVal AlarmCode As String, ByVal AlarmDateTime As String)
Public Delegate Sub AxisCoordinatesCallbackDlg(ByVal AxisValue As Double, ByVal AxisIndex As Integer)
Public Delegate Sub OpStateCallbackDlg(ByVal newOpState As ISOCNC.Remoting.MachineOperatingState)
Public Delegate Sub ReadVarCallbackDlg(CommandExecutedCorrectly As Boolean, VarAddress As String, VarValue As String, VarType As Integer)
Friend m_ResultCallbackDlg As ResultCallbackDlg
Friend m_CloseCallbackDlg As CloseCallbackDlg
Friend m_UpdateCallbackDlg As UpdateCallbackDlg
Friend m_AlarmCallbackDlg As AlarmCallbackDlg
Friend m_AxisCoordinatesCallbackDlg As AxisCoordinatesCallbackDlg
Friend m_OpStateCallbackDlg As OpStateCallbackDlg
Friend m_ReadVarCallbackDlg As ReadVarCallbackDlg
End Module
+371
View File
@@ -0,0 +1,371 @@
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports ISOCNC.Remoting
Imports EgtUILib
Imports EgtWPFLib5
Imports System.IO
Class MachManaging
Private m_bConnected As Boolean = False
Public ReadOnly Property bConnected As Boolean
Get
Return m_bConnected
End Get
End Property
Private m_Tpa As TPAComm = Nothing
Public ReadOnly Property Tpa As TPAComm
Get
Return m_Tpa
End Get
End Property
Private Shared WithEvents m_CommandList As New ObservableCollection(Of ThreadCommand)
Public Shared ReadOnly Property CommandList As ObservableCollection(Of ThreadCommand)
Get
Return m_CommandList
End Get
End Property
Private m_bStartPending As Boolean = False
Public ReadOnly Property StartPending As Boolean
Get
Return m_bStartPending
End Get
End Property
Friend Sub ResetStartPending()
m_bStartPending = False
End Sub
' prossima barra di cui mando i parametri di carico
Private m_NextBarId As Integer
Sub New()
' imposto in Map
Map.SetRefMachManaging(Me)
AddHandler m_CommandList.CollectionChanged, AddressOf CommandList_CollectionChanged
' mi connetto alla macchina
Connect()
End Sub
Private Sub OnDispose()
RemoveHandler m_CommandList.CollectionChanged, AddressOf CommandList_CollectionChanged
End Sub
Friend Sub Timer_Tick()
'Dim bCancel As Boolean = False
'callback(0, "Init", bCancel)
' leggo tutte le variabili
Tpa.RWVariableManager.RefreshAllVars()
' eseguo ciclo principale
Dim nReset_State As Integer
Dim nP_Prod As Integer
Dim nP_Machgroup As Integer
Dim nP_Part As Integer
Dim nP_State As Integer
Tpa.RWVariableManager.ReadVar(P_PROD, nP_Prod)
Tpa.RWVariableManager.ReadVar(P_MACHGROUP, nP_Machgroup)
Tpa.RWVariableManager.ReadVar(P_PART, nP_Part)
Tpa.RWVariableManager.ReadVar(P_STATE, nP_State)
Tpa.RWVariableManager.ReadVar(RESET_STATE, nReset_State)
'' se non ancora fatto, preparo variabili barra successiva
'If m_NextBarId = 0 Then
' SetNextBarVars()
'End If
'Dim TestOpState As Integer = Tpa.remObject.MachineOperativeStatus
'' verifico se scattato stato reset
'If nReset_State <> 0 Then
' ' resetto tutti i programmi
' If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then Map.refProjectVM.SupervisorMachGroupPanelVM.ResetAllMachGroups()
' ' resetto variabili P
' Tpa.RWVariableManager.WriteVar(P_PROD, 0)
' Tpa.RWVariableManager.WriteVar(P_MACHGROUP, 0)
' Tpa.RWVariableManager.WriteVar(P_PART, 0)
' Tpa.RWVariableManager.WriteVar(P_STATE, 0)
' ' cancello tutti i programmi da memoria CN
' 'RemoveAllProgram() toglie programma default per pending
' ' azzero variabile reset
' Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.WriteVar),
' RWVariableManager.GetReadVarFromName(RESET_STATE).sAddress, "0")
' ' resetto prossima barra e variabili V
' m_NextBarId = 0
' For Index = 1 To 6
' Tpa.RWVariableManager.WriteVar(VPAR & Index.ToString(), 0)
' Next
' Return
' ' se macchina pronta e non sta tagliando alcun pezzo
'ElseIf (nP_Prod = 0 AndAlso
' nP_Machgroup = 0 AndAlso
' nP_Part = 0 AndAlso
' nP_State = PartState.NULL) AndAlso
' Tpa.opState = MachineOperatingState.Pending AndAlso Tpa.remObject.MachineOperativeStatus = MachineOperatingState.Pending Then
' ' verifico se c'e' un programma da lanciare
' SendNextProgram()
' ' attesa per essere sicuro che abbia scritto e riletto variabili
' Threading.Thread.Sleep(300)
' ' verifico stati inizio e fine pezzi
'ElseIf nP_Prod <> 0 AndAlso
' nP_Machgroup <> 0 AndAlso
' nP_Part <> 0 Then
' If nP_State = PartState.START Then
' ' scrivo data start su Db pezzo
' Dim dtStart As DateTime = DateTime.Now()
' DbControllers.m_PartController.UpdateStart(nP_Prod, nP_Machgroup, nP_Part, dtStart)
' DbControllers.m_PartController.UpdateStatus(nP_Prod, nP_Machgroup, nP_Part, ItemState.WIP)
' ' recupero gruppo di lavorazione del pezzo
' Dim MachGroup As MyMachGroupVM = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = nP_Machgroup)
' ' recupero pezzo
' Dim Part As PartVM = MachGroup.PartVMList.FirstOrDefault(Function(x) x.nPartId = nP_Part)
' ' scrivo stato start
' Part.nProduction_State = 1
' Part.dtStartTime = dtStart
' Part.NotifyPropertyChanged(NameOf(Part.nCALC_State))
' ' azzero variabile per far ripartire macchina
' Tpa.RWVariableManager.WriteVar(P_STATE, 0)
' ' se nessun pezzo della barra diverso da quello corrente e' in start
' If Not MachGroup.PartVMList.Any(Function(x) x.nPartId <> nP_Part AndAlso x.nCALC_State = 1) Then
' ' scrivo data start su Db barra
' DbControllers.m_MachGroupController.UpdateStart(nP_Prod, nP_Machgroup, dtStart)
' DbControllers.m_MachGroupController.UpdateStatus(nP_Prod, nP_Machgroup, ItemState.WIP)
' ' scrivo stato start
' MachGroup.MyMachGroupM.SetProductionState(1)
' MachGroup.dtStartTime = dtStart
' MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nCALC_State))
' End If
' ' attesa per essere sicuro che abbia scritto e riletto variabili
' Threading.Thread.Sleep(300)
' ElseIf nP_State = PartState.END_ Then
' ' scrivo data end su Db pezzo
' Dim dtEnd As DateTime = DateTime.Now()
' DbControllers.m_PartController.UpdateEnd(nP_Prod, nP_Machgroup, nP_Part, dtEnd)
' DbControllers.m_PartController.UpdateStatus(nP_Prod, nP_Machgroup, nP_Part, ItemState.Produced)
' ' recupero gruppo di lavorazione del pezzo
' Dim MachGroup As MyMachGroupVM = Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList.FirstOrDefault(Function(x) x.Id = nP_Machgroup)
' ' recupero pezzo
' Dim Part As PartVM = MachGroup.PartVMList.FirstOrDefault(Function(x) x.nPartId = nP_Part)
' ' scrivo stato end
' Part.nProduction_State = 2
' Part.dtEndTime = dtEnd
' Part.NotifyPropertyChanged(NameOf(Part.nCALC_State))
' ' resetto stato redo
' Part.bRedo = False
' ' azzero variabile per far ripartire macchina
' Tpa.RWVariableManager.WriteVar(P_STATE, 0)
' ' se tutti i pezzi della barra sono in end
' If MachGroup.PartVMList.All(Function(x) x.nCALC_State >= 2) Then
' ' scrivo data end su Db barra
' DbControllers.m_MachGroupController.UpdateEnd(nP_Prod, nP_Machgroup, dtEnd)
' DbControllers.m_MachGroupController.UpdateStatus(nP_Prod, nP_Machgroup, ItemState.Produced)
' ' scrivo stato end
' MachGroup.MyMachGroupM.SetProductionState(2)
' MachGroup.dtEndTime = dtEnd
' MachGroup.NotifyPropertyChanged(NameOf(MachGroup.nCALC_State))
' ' azzero tutte le variabilli per iniziare barra successiva
' Tpa.RWVariableManager.WriteVar(P_PROD, 0)
' Tpa.RWVariableManager.WriteVar(P_MACHGROUP, 0)
' Tpa.RWVariableManager.WriteVar(P_PART, 0)
' Tpa.RWVariableManager.WriteVar(P_STATE, 0)
' End If
' If Map.refMachCommandMessagePanelVM.bPrinterLink Then
' LabelPrinter.SetTestPrintVariables(nP_Prod, nP_Machgroup, nP_Part)
' LabelPrinter.Print()
' End If
' ' attesa per essere sicuro che abbia scritto e riletto variabili
' Threading.Thread.Sleep(300)
' End If
'End If
End Sub
Private m_Lock_SendProgram As New Object
Private Function SetNextBarVars() As Boolean
'' verifico se c'e' un programma da lanciare
'If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then
' For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
' If Not MyMachGroup.bSentToMachine AndAlso MyMachGroup.dtStartTime = DateTime.MinValue AndAlso MyMachGroup.bReadyForMachining Then
' ' leggo valori parametri V da file
' Dim dVPars(10) As Double
' Dim Lines() As String = File.ReadAllLines(MyMachGroup.CnFilePath())
' Dim sVs() As String = Lines(0).Split(";"c)
' For VParIndex = 1 To sVs.Length - 1
' Dim VPar() As String = sVs(VParIndex).Split("="c)
' VPar(1) = VPar(1).Trim
' StringToDouble(VPar(1), dVPars(VParIndex))
' Next
' ' li scrivo nel CN
' For Index = 1 To 10
' Tpa.RWVariableManager.WriteVar(VPAR & Index.ToString(), dVPars(Index))
' Next
' m_NextBarId = MyMachGroup.Id
' Return True
' End If
' Next
'End If
'Return False
End Function
Private Function SendNextProgram() As Boolean
'Dim bSent As Boolean = False
'If Not m_bStartPending AndAlso Tpa.opState = MachineOperatingState.Pending Then ' Or Tpa.opState = MachineOperatingState.Start) Then
' ' verifico se c'e' un programma da lanciare
' If Not IsNothing(Map.refProjectVM.SupervisorMachGroupPanelVM) Then
' EgtOutLog("Start " & DateTime.Now())
' SyncLock m_Lock_SendProgram
' For Each MyMachGroup As MyMachGroupVM In Map.refProjectVM.SupervisorMachGroupPanelVM.MachGroupVMList
' If Not MyMachGroup.bSentToMachine AndAlso MyMachGroup.dtStartTime = DateTime.MinValue AndAlso MyMachGroup.bReadyForMachining Then
' ' lo lancio
' bSent = SendProgram(MyMachGroup.CnFilePath())
' EgtOutLog("Mandato " & DateTime.Now() & " " & MyMachGroup.Name & " " & bSent.ToString())
' MyMachGroup.SetSentToMachine(bSent)
' m_NextBarId = 0
' Exit For
' End If
' Next
' End SyncLock
' EgtOutLog("End " & DateTime.Now())
' End If
'End If
'Return bSent
End Function
Private Sub CommandList_CollectionChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
If Not IsNothing(e.NewItems) Then
For Each Command In e.NewItems
ExecuteCommand(DirectCast(Command, ThreadCommand))
m_CommandList.Remove(Command)
Next
End If
End Sub
Private Sub ExecuteCommand(Command As ThreadCommand)
Select Case Command.CommandType
Case CommandTypes.CONNECT
Connect()
Case CommandTypes.DISCONNECT
Disconnect()
Case CommandTypes.START
Start()
Case CommandTypes.STOP_
Stop
Case CommandTypes.RESET
Reset()
Case CommandTypes.STEP_
Step_()
Case CommandTypes.SETPOINT
SetPoint()
Case CommandTypes.SENDPROG
SendProgram(Command.sVariable)
Case CommandTypes.REMOVEPROG
RemoveProgram(Command.nVariable, Command.sVariable)
Case CommandTypes.REMOVEALLPROG
RemoveAllProgram()
Case CommandTypes.READ
Tpa.RWVariableManager.RefreshVar(Command.sVariable)
Case CommandTypes.WRITE
Tpa.RWVariableManager.WriteVar(Command.sVariable, Command.sVariables(1))
Case CommandTypes.DELETEALARMS
DeleteAlarms()
Case CommandTypes.SETOP
End Select
End Sub
Public Sub Connect()
Try
m_Tpa = New TPAComm(Me)
m_bConnected = Tpa.remObject.OnConnect()
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.OK, ResultTypes.EXECUTED, "")
' creo classe di gestione variabili
Catch ex As Exception
m_ResultCallbackDlg(CommandTypes.CONNECT, CommandStates.ERROR_, ResultTypes.EXECUTED, "Errore: impossibile connettersi!")
Return
End Try
End Sub
Public Sub Disconnect()
Dim bOk As Boolean = Tpa.remObject.OnClose()
m_bConnected = Not bOk
m_ResultCallbackDlg(CommandTypes.DISCONNECT, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
' chiudo classe Tpa
Me.OnDispose()
m_Tpa.OnDispose()
' termino thread di comunicazione
MachineCommThread.StopThread()
End Sub
Public Sub SetOPState()
End Sub
Public Sub Start()
Dim bOk As Boolean = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start))
m_bStartPending = bOk
m_ResultCallbackDlg(CommandTypes.START, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Sub [Stop]()
Dim bOk As Boolean = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[Stop]))
m_ResultCallbackDlg(CommandTypes.STOP_, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Sub Reset()
Dim bOk As Boolean = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[End]))
m_ResultCallbackDlg(CommandTypes.RESET, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Sub Step_()
Dim bOk As Boolean = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Step))
m_ResultCallbackDlg(CommandTypes.STEP_, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Sub SetPoint()
Dim bOk As Boolean = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.SetPoint))
m_ResultCallbackDlg(CommandTypes.SETPOINT, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Function SendProgram(ProgramPath As String) As Boolean
If Tpa.opState = MachineOperatingState.Pending Then
Tpa.remObject.RemoveAllProgramsFromList()
Dim bOk As Boolean = False
ProgramPath = ProgramPath.Replace("\\", "\")
bOk = Tpa.remObject.AddProgramToList(ProgramPath)
Threading.Thread.Sleep(1000)
bOk = Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start_Program_Soft))
m_ResultCallbackDlg(CommandTypes.SENDPROG, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
Return bOk
End If
Return False
End Function
Public Sub RemoveProgram(ProgramIndex As Integer, ProgramPath As String)
Dim bOk As Boolean
Dim sError As String = ""
If ProgramIndex > 0 Then
bOk = Tpa.remObject.RemoveProgramFromListAtIndex(ProgramIndex)
ElseIf Not String.IsNullOrEmpty(ProgramPath) Then
bOk = Tpa.remObject.RemoveProgramFromList(ProgramPath)
Else
bOk = False
sError = "Errore: nessun parametro passato"
End If
m_ResultCallbackDlg(CommandTypes.REMOVEPROG, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, sError)
End Sub
Public Sub RemoveAllProgram()
Dim bOk As Boolean = Tpa.remObject.RemoveAllProgramsFromList()
m_ResultCallbackDlg(CommandTypes.REMOVEALLPROG, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
Public Sub DeleteAlarms()
Dim bOk As Boolean = Tpa.remObject.DeleteAlarms(CInt(AlarmType.ISO))
bOk = Tpa.remObject.DeleteAlarms(CInt(AlarmType.Message))
bOk = Tpa.remObject.DeleteAlarms(CInt(AlarmType.Cycle))
bOk = Tpa.remObject.DeleteAlarms(CInt(AlarmType.System))
m_ResultCallbackDlg(CommandTypes.DELETEALARMS, If(bOk, CommandStates.OK, CommandStates.ERROR_), ResultTypes.EXECUTED, "")
End Sub
End Class
+127
View File
@@ -0,0 +1,127 @@
Class MachineCommThread
' variabile che ferma il ciclo
Private Shared m_Stop As Boolean = False
Friend Shared Sub StopThread()
m_Stop = True
End Sub
' variabile in cui ci sono stati inizio e fine pezzo
Private Shared sP1VarName As String = "0.FUNM.E81295"
Private Shared sP2VarName As String = "0.FUNM.E81296"
Private Shared sP3VarName As String = "0.FUNM.E81297"
Private Shared sP4VarName As String = "0.FUNM.E81298"
Private Shared sResetVarName As String = "0.FUNM.E80048"
Public Shared Sub MachManagingThreadFunction(ResultCallbackDlg As ResultCallbackDlg, CloseCallbackDlg As CloseCallbackDlg, UpdateCallbackDlg As UpdateCallbackDlg,
AlarmCallbackDlg As AlarmCallbackDlg, AxisCoordinatesCallbackDlg As AxisCoordinatesCallbackDlg,
OpStateCallbackDlg As OpStateCallbackDlg, ReadVarCallbackDlg As ReadVarCallbackDlg)
' inizializzo callback
m_ResultCallbackDlg = ResultCallbackDlg
m_CloseCallbackDlg = CloseCallbackDlg
m_UpdateCallbackDlg = UpdateCallbackDlg
m_AlarmCallbackDlg = AlarmCallbackDlg
m_AxisCoordinatesCallbackDlg = AxisCoordinatesCallbackDlg
m_OpStateCallbackDlg = OpStateCallbackDlg
m_ReadVarCallbackDlg = ReadVarCallbackDlg
' creo classe di comunicazione
Dim m_MachManaging As MachManaging = New MachManaging()
While Not m_Stop
' eseguo ciclo principale che tiene vivo il thread
m_MachManaging.Timer_Tick()
Threading.Thread.Sleep(TimeSpan.FromMilliseconds(1000))
End While
End Sub
End Class
Class ThreadCommand
Private m_CommandType As CommandTypes
Public ReadOnly Property CommandType As CommandTypes
Get
Return m_CommandType
End Get
End Property
Private m_nVariables(5) As Integer
Public ReadOnly Property nVariable As Integer
Get
Return m_nVariables(0)
End Get
End Property
Public ReadOnly Property nVariables As Integer()
Get
Return m_nVariables
End Get
End Property
Private m_dVariables(5) As Double
Public ReadOnly Property dVariable As Double
Get
Return m_dVariables(0)
End Get
End Property
Public ReadOnly Property dVariables As Double()
Get
Return m_dVariables
End Get
End Property
Private m_sVariables(5) As String
Public ReadOnly Property sVariable As String
Get
Return m_sVariables(0)
End Get
End Property
Public ReadOnly Property sVariables As String()
Get
Return m_sVariables
End Get
End Property
Protected Sub New()
End Sub
Public Shared Function CreateCommand(CommandType As CommandTypes) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandType
Return NewCommand
End Function
Public Shared Function CreateCommand(CommandType As CommandTypes, Variable As Integer) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandType
NewCommand.m_nVariables(0) = Variable
Return NewCommand
End Function
Public Shared Function CreateCommand(CommandType As CommandTypes, Variable As Double) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandType
NewCommand.m_dVariables(0) = Variable
Return NewCommand
End Function
Public Shared Function CreateCommand(CommandType As CommandTypes, Variable As String) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandType
NewCommand.m_sVariables(0) = Variable
Return NewCommand
End Function
Public Shared Function CreateCommand(CommandType As CommandTypes, nVariables() As Integer, dVariables() As Double, sVariables() As String) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandType
NewCommand.m_nVariables = nVariables
NewCommand.m_dVariables = dVariables
NewCommand.m_sVariables = sVariables
Return NewCommand
End Function
Public Shared Function CreateReadCommand(sVariable As String) As ThreadCommand
Dim NewCommand As ThreadCommand = New ThreadCommand
NewCommand.m_CommandType = CommandTypes.READ
NewCommand.m_sVariables(0) = sVariable
Return NewCommand
End Function
End Class
+18
View File
@@ -0,0 +1,18 @@
Public Class NewValueEventArgs
Inherits EventArgs
Public m_NewValue As String
Public Property NewValue As String
Get
Return m_NewValue
End Get
Private Set(value As String)
m_NewValue = value
End Set
End Property
Sub New(NewValue As String)
m_NewValue = NewValue
End Sub
End Class
+254
View File
@@ -0,0 +1,254 @@
Imports EgtUILib
Imports EgtWPFLib5
Imports ISOCNC.Remoting
Public Class RWVariableManager
Private m_Tpa As TPAComm = Nothing
Friend ReadOnly Property Tpa As TPAComm
Get
Return m_Tpa
End Get
End Property
Private m_Proxy_VariableCommandExecutedEventHandler As New VariableCommandExecutedEventHandler(AddressOf RemoteObject_VariableCommandExecuted)
' lock per Synclock
Private m_CopyLock As New Object
Private m_ReadLock As New Object
' lista variabili in lettura
Private Shared m_ReadingVars(19) As CommVar
Public Shared ReadOnly Property ReadingVars As CommVar()
Get
Return m_ReadingVars
End Get
End Property
' lista variabili lette
Public Shared m_ReadedVars(19) As String
Protected Sub New()
End Sub
Friend Sub OnDispose()
RemoveHandler m_Tpa.eventProxy.VariableCommandExecuted, m_Proxy_VariableCommandExecutedEventHandler
'RemoveHandler m_Tpa.MachManaging.Timer.Tick, AddressOf Timer_Tick
End Sub
'Friend Sub Timer_Tick(sender As Object, e As EventArgs)
' ' leggo tutte le variabili
' RefreshAllVars()
'End Sub
Friend Shared Function CreateRWVariableManager(Tpa As TPAComm)
Dim NewRWVariableManager As New RWVariableManager
NewRWVariableManager.m_Tpa = Tpa
AddHandler NewRWVariableManager.m_Tpa.eventProxy.VariableCommandExecuted, NewRWVariableManager.m_Proxy_VariableCommandExecutedEventHandler
Return NewRWVariableManager
End Function
Public Sub RefreshAllVars()
For Each Var In m_ReadingVars
' rileggo solo variabili continue
If Not IsNothing(Var) AndAlso Var.sType = CommVar.CommVarTypes.CONTINUOUS Then IntRefreshVar(Var.sAddress)
Next
End Sub
Public Shared Function InitVar(Name As String, Address As String, Type As CommVar.CommVarTypes) As Integer
Dim Index As Integer = Array.IndexOf(m_ReadingVars, Nothing)
m_ReadingVars(Index) = New CommVar(Name, Address, Type)
Return Index
End Function
Public Shared Function InitVar(nIndex As Integer) As CommVar
Dim Index As Integer = Array.IndexOf(m_ReadingVars, Nothing)
m_ReadingVars(Index) = GetPrivateProfileVariable(S_VARIABLES, nIndex, Map.refMainWindowVM.MainWindowM.sMachIniFile)
Return m_ReadingVars(Index)
End Function
Private Shared Function GetPrivateProfileVariable(IpAppName As String, IpKeyName As String, IpFileName As String) As CommVar
Dim sVariable As String = ""
EgtUILib.GetPrivateProfileString(IpAppName, IpKeyName, "", sVariable, IpFileName)
Dim sVariableValues() As String = sVariable.Split(","c)
If Not sVariableValues.Count >= 3 Then Return Nothing
For Index = 0 To sVariableValues.Count - 1
sVariableValues(Index) = sVariableValues(Index).Trim()
Next
Dim Type As CommVar.CommVarTypes
Select Case sVariableValues(2).ToLower()
Case "o"
Type = CommVar.CommVarTypes.ONETIME
Case "c"
Type = CommVar.CommVarTypes.CONTINUOUS
Case Else
Type = CommVar.CommVarTypes.NULL
End Select
Return New CommVar(sVariableValues(0), sVariableValues(1), Type)
End Function
Public Sub RefreshVar(Name As String)
Dim Var As CommVar = GetReadVarFromName(Name)
Var.ResetReading()
IntRefreshVar(Var.sAddress)
End Sub
Public Sub WriteVar(Name As String, Value As String)
IntWriteVar(GetReadVarFromName(Name).sAddress, Value)
End Sub
Private Sub IntRefreshVar(Address As String)
Tpa.remObject.SetVariableCommand(ISOCNC.Remoting.VariableCommands.ReadVar, Address, "")
End Sub
Private Sub IntWriteVar(Address As String, Value As String)
Tpa.remObject.SetVariableCommand(ISOCNC.Remoting.VariableCommands.WriteVar, Address, Value)
End Sub
Public Sub ReadVar(Name As String, ByRef Value As String)
Value = m_ReadedVars(GetIndexFromName(Name))
End Sub
Public Sub ReadVar(Name As String, ByRef Value As Integer)
Integer.TryParse(m_ReadedVars(GetIndexFromName(Name)), Value)
End Sub
Public Sub ReadVar(Name As String, ByRef Value As Double)
Value = StringToDouble(m_ReadedVars(GetIndexFromName(Name)), 5)
End Sub
Private Shared Function GetIndexFromName(Name As String) As Integer
Dim t = Array.FindIndex(m_ReadingVars, Function(x) If(Not IsNothing(x), x.sName = Name, False))
Return Array.FindIndex(m_ReadingVars, Function(x) If(Not IsNothing(x), x.sName = Name, False))
End Function
Friend Shared Function GetReadVarFromName(Name As String) As CommVar
Return m_ReadingVars(GetIndexFromName(Name))
End Function
Private Shared Function GetIndexFromAddress(Address As String) As Integer
Return Array.FindIndex(m_ReadingVars, Function(x) If(Not IsNothing(x), x.sAddress = Address, False))
End Function
Friend Shared Function GetReadVarFromAddress(Address As String) As CommVar
Return m_ReadingVars(GetIndexFromAddress(Address))
End Function
Friend Shared Function GetReadVarNameFromAddress(Address As String) As String
Dim Var As CommVar = m_ReadingVars.FirstOrDefault(Function(x) If(Not IsNothing(x), x.sAddress = Address, False))
Return If(Not IsNothing(Var), Var.sName, "")
End Function
Private Sub UpdateContinuousVars()
Dim bReaded As Boolean = True
For Each Var In m_ReadingVars
If Not IsNothing(Var) AndAlso Var.sType = CommVar.CommVarTypes.CONTINUOUS AndAlso Not Var.bReaded Then
bReaded = False
Exit For
End If
Next
' se lette tutte
If bReaded Then
' aggiorno variabili
SyncLock m_CopyLock
For VarIndex = 0 To m_ReadingVars.Count - 1
If Not IsNothing(m_ReadingVars(VarIndex)) Then
m_ReadedVars(VarIndex) = m_ReadingVars(VarIndex).sValue
End If
Next
End SyncLock
End If
End Sub
Friend Sub UpdateVar(CommandExecutedCorrectly As Boolean, VarName As String, VarValue As String, VarType As Integer)
If CommandExecutedCorrectly Then
Dim Var As CommVar = GetReadVarFromAddress(VarName)
If Not IsNothing(Var) Then
'Dim bChangedVal As Boolean = ()
Var.SetValue(VarValue)
' se variabile ripetitiva lancio update variabili ripetitive
If Var.sType = CommVar.CommVarTypes.CONTINUOUS Then
EgtOutLog(CommandExecutedCorrectly & " . " & VarName & " . " & VarValue)
EgtOutLog(Var.sName & " . " & Var.sAddress & " . " & Var.sValue & " . " & Var.bReaded)
UpdateContinuousVars()
Else
m_ReadVarCallbackDlg(CommandExecutedCorrectly, VarName, VarValue, VarType)
End If
End If
End If
End Sub
Private Sub RemoteObject_VariableCommandExecuted(ByVal executedCommand As Integer, ByVal commandExecutedCorrectly As Boolean, ByVal varName As String, ByVal varValue As String, ByVal varType As Integer)
' riporto valore variabile su array
Select Case executedCommand
Case VariableCommands.Error
Case VariableCommands.NotExecuted
Case VariableCommands.ReadVar
UpdateVar(commandExecutedCorrectly, varName, varValue, varType)
Case VariableCommands.WriteVar
m_ResultCallbackDlg(CommandTypes.WRITE, CommandStates.OK, ResultTypes.RESULT, "")
Case VariableCommands.ReadAxis
Case VariableCommands.ReadAny
End Select
End Sub
End Class
Public Class CommVar
Public Event NewValue As EventHandler(Of NewValueEventArgs)
Public Enum CommVarTypes As Integer
NULL = 0
ONETIME = 1
CONTINUOUS = 2
End Enum
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
End Set
End Property
Private m_sAddress As String
Public Property sAddress As String
Get
Return m_sAddress
End Get
Set(value As String)
m_sAddress = value
End Set
End Property
Private m_nType As CommVarTypes
Public ReadOnly Property sType As CommVarTypes
Get
Return m_nType
End Get
End Property
Private m_sValue As String
Public ReadOnly Property sValue As String
Get
Return m_sValue
End Get
End Property
Public Sub SetValue(value As String)
Dim bNewValue As Boolean = m_sValue <> value
m_sValue = value
m_bReaded = True
If bNewValue Then RaiseEvent NewValue(Me, New NewValueEventArgs(value))
End Sub
Private m_bReaded As Boolean
Public ReadOnly Property bReaded As Boolean
Get
Return m_bReaded
End Get
End Property
Sub New(Name As String, Address As String, Type As CommVarTypes)
m_sName = Name
m_sAddress = Address
m_nType = Type
End Sub
Friend Sub ResetReading()
m_bReaded = False
End Sub
End Class
+74
View File
@@ -0,0 +1,74 @@
<Window x:Class="EgtCNCPLCComm.MainWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="800" Width="400">
<StackPanel>
<Button Content="CONNECT"
Command="{Binding Connect_Command}"
Background="{Binding Connect_Background}"/>
<Button Content="DISCONNECT"
Command="{Binding Disconnect_Command}"/>
<Button Content="START"
Command="{Binding Start_Command}"/>
<Button Content="PAUSE"
Command="{Binding Stop_Command}"/>
<Button Content="END"
Command="{Binding Step_Command}"/>
<Button Content="SET POINT"
Command="{Binding SetPoint_Command}"/>
<Button Content="PRINT LABEL"
Command="{Binding PrintLabel_Command}"/>
<TextBlock Text="{Binding ErrCycle}"/>
<TextBlock Text="{Binding Iso}"/>
<TextBlock Text="{Binding Message}"/>
<TextBlock Text="{Binding ErrSystem}"/>
<Button Content="CANCELLA ALLARMI"
Command="{Binding DeleteAlarms_Command}"/>
<GroupBox Header="CNC files manager">
<StackPanel>
<TextBlock Text="{Binding ProgramPath}"/>
<Button Content="..."
Command="{Binding SearchFilePath_Command}"/>
<TextBox Text="{Binding ProgramIndex}"/>
<Button Content="Add"
Command="{Binding AddProgram_Command}"/>
<Button Content="Remove"
Command="{Binding RemoveProgram_Command}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Read/Write variables">
<StackPanel>
<TextBlock Text="Name:"/>
<TextBox Text="{Binding VarName}"/>
<TextBlock Text="Value:"/>
<TextBox Text="{Binding VarValue}"/>
<Button Content="Read"
Command="{Binding ReadVar_Command}"/>
<Button Content="Write"
Command="{Binding WriteVar_Command}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Read axis">
<ItemsControl ItemsSource="{Binding AxisList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Value}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
<GroupBox Header="OPState">
<ComboBox ItemsSource="{Binding OPStateList}"
SelectedItem="{Binding SelOPState}"/>
</GroupBox>
<StackPanel>
</StackPanel>
</StackPanel>
</Window>
+41
View File
@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace EgtCNCPLCComm
{
/// <summary>
/// Interaction logic for MainWindowV.xaml
/// </summary>
public partial class MainWindowV : Window
{
MainWindowVM _MainWindowVM;
public MainWindowV()
{
InitializeComponent();
_MainWindowVM = new MainWindowVM();
this.DataContext = _MainWindowVM;
this.Closing += MainWindowV_Closing;
}
public void MainWindowV_Closing(object sender, CancelEventArgs e)
{
// Handle closing logic, set e.Cancel as needed
if (_MainWindowVM.Connected)
_MainWindowVM.Tpa.remObject.OnClose();
}
}
}
+603
View File
@@ -0,0 +1,603 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Collections.ObjectModel;
using System.Windows.Media;
using System.Windows;
using ISOCNC.Remoting;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Device;
using Zebra.Sdk.Printer;
namespace EgtCNCPLCComm
{
class MainWindowVM : VMBase
{
#region FIELDS & PROPERTIES
// connesso
private bool _Connected = false;
public bool Connected
{
get
{
return _Connected;
}
}
public SolidColorBrush Connect_Background
{
get
{
return (_Connected ? Brushes.Green : Brushes.Red);
}
}
// istanza della classe di comunicazione del controllo
private TPAComm _Tpa = null;
public TPAComm Tpa
{
get
{
return _Tpa;
}
}
// path corrent
private string _ProgramPath;
public string ProgramPath
{
get
{
return _ProgramPath;
}
}
// indice a cui inserire o togliere il programma CNC
private int _ProgramIndex = 0;
public int ProgramIndex
{
get
{
return _ProgramIndex;
}
set
{
_ProgramIndex = value;
}
}
// nome della variabile
private string _VarName;
public string VarName
{
get
{
return _VarName;
}
set
{
_VarName = value;
}
}
// valore della variabile
private string _VarValue = "";
public string VarValue
{
get
{
return _VarValue;
}
set
{
_VarValue = value;
}
}
public void SetVarValue( object value)
{
_VarValue = (string)value;
NotifyPropertyChanged(nameof(VarValue));
}
// lista assi
private ObservableCollection<Axis> _AxisList;
public ObservableCollection<Axis> AxisList
{
get
{
return _AxisList;
}
}
private List<ISOCNC.Remoting.MachineOperatingState> _OPStateList;
public List<ISOCNC.Remoting.MachineOperatingState> OPStateList
{
get
{
return _OPStateList;
}
set
{
_OPStateList = value;
}
}
private ISOCNC.Remoting.MachineOperatingState _SelOPState;
public ISOCNC.Remoting.MachineOperatingState SelOPState
{
get
{
return _SelOPState;
}
set
{
_SelOPState = value;
}
}
private string _ErrCycle;
public string ErrCycle
{
get
{
return _ErrCycle;
}
}
public void UpdateErrCycle(string msg)
{
_ErrCycle = msg;
NotifyPropertyChanged(nameof(ErrCycle));
}
private string _Iso;
public string Iso
{
get
{
return _Iso;
}
}
public void UpdateIso(string msg)
{
_Iso = msg;
NotifyPropertyChanged(nameof(Iso));
}
private string _Message;
public string Message
{
get
{
return _Message;
}
}
public void UpdateMessage(string msg)
{
_Message = msg;
NotifyPropertyChanged(nameof(Message));
}
private string _ErrSystem;
public string ErrSystem
{
get
{
return _ErrSystem;
}
}
public void UpdateErrSystem(string msg)
{
_ErrSystem = msg;
NotifyPropertyChanged(nameof(ErrSystem));
}
// definizione comandi
ICommand m_cmdConnect;
ICommand m_cmdDisconnect;
ICommand m_cmdStart;
ICommand m_cmdStop;
ICommand m_cmdStep;
ICommand m_cmdSearchFilePath;
ICommand m_cmdAddProgram;
ICommand m_cmdRemoveProgram;
ICommand m_cmdReadVar;
ICommand m_cmdWriteVar;
ICommand m_cmdDeleteAlarms;
ICommand m_cmdSetPoint;
ICommand m_cmdPrintLabel;
#endregion FIELDS & PROPERTIES
#region CONSTRUCTOR
public MainWindowVM()
{
_AxisList = new ObservableCollection<Axis> { new Axis("X"), new Axis("Y"), new Axis("Z"), new Axis("C"), new Axis("B") };
_OPStateList = new List<MachineOperatingState> { MachineOperatingState.Start, MachineOperatingState.Stop, MachineOperatingState.End,
MachineOperatingState.SetPoint, MachineOperatingState.Pending, MachineOperatingState.Unspecified};
NotifyPropertyChanged(nameof(Connect_Background));
}
#endregion CONSTRUCTOR
#region COMMANDS
#region Connect
// Returns a command that manage the MainWindow_Unloaded command
public ICommand Connect_Command
{
get
{
if (m_cmdConnect == null)
m_cmdConnect = new Command(Connect);
return m_cmdConnect;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void Connect(Object param)
{
_Tpa = new TPAComm(this);
_Connected = Tpa.remObject.OnConnect();
NotifyPropertyChanged(nameof(Connect_Background));
if (_Connected)
Init();
}
private void Init()
{
_SelOPState = (MachineOperatingState)Tpa.remObject.MachineOperativeStatus;
NotifyPropertyChanged(nameof(SelOPState));
string sAxesValue = "";
double dAxesValue = 0;
// Tpa.remObject.SetVariableCommand((int)VariableCommands.ReadAxis, null, sAxesVal);
string sAxesName = "0.TESTA.AsseX.X";
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, sAxesName, sAxesValue);
double.TryParse(sAxesValue, out dAxesValue);
_AxisList[0].Value = dAxesValue;
sAxesName = "0.TESTA.AsseY.Y";
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, sAxesName, sAxesValue);
double.TryParse(sAxesValue, out dAxesValue);
_AxisList[1].Value = dAxesValue;
sAxesName = "0.TESTA.AsseZ.Z";
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, sAxesName, sAxesValue);
double.TryParse(sAxesValue, out dAxesValue);
_AxisList[2].Value = dAxesValue;
sAxesName = "0.TESTA.AsseC.C";
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, sAxesName, sAxesValue);
double.TryParse(sAxesValue, out dAxesValue);
_AxisList[3].Value = dAxesValue;
sAxesName = "0.TESTA.AsseB.B";
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, sAxesName, sAxesValue);
double.TryParse(sAxesValue, out dAxesValue);
_AxisList[4].Value = dAxesValue;
}
#endregion Connect
#region Disconnect
// Returns a command that manage the MainWindow_Unloaded command
public ICommand Disconnect_Command
{
get
{
if (m_cmdDisconnect == null)
m_cmdDisconnect = new Command(Disconnect);
return m_cmdDisconnect;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void Disconnect(Object param)
{
_Connected = !Tpa.remObject.OnClose();
NotifyPropertyChanged(nameof(Connect_Background));
}
#endregion Disconnect
#region Start
// Returns a command that manage the MainWindow_Unloaded command
public ICommand Start_Command
{
get
{
if (m_cmdStart == null)
m_cmdStart = new Command(Start);
return m_cmdStart;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void Start(Object param)
{
//int StartCommand;
//if (SelOPState == MachineOperatingState.Pending)
//{
// StartCommand = (int)ISOCNC.Remoting.Commands.Start_Program_Soft;
//}
//else
//{
// StartCommand = (int)ISOCNC.Remoting.Commands.Start;
//}
//Tpa.remObject.SetCommand(StartCommand);
Tpa.remObject.SetCommand((int)ISOCNC.Remoting.Commands.Start);
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.WriteVar, "0.FUNM.E80048", "0");
}
#endregion Start
#region Stop
// Returns a command that manage the MainWindow_Unloaded command
public ICommand Stop_Command
{
get
{
if (m_cmdStop == null)
m_cmdStop = new Command(Stop);
return m_cmdStop;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void Stop(Object param)
{
Tpa.remObject.SetCommand((int)ISOCNC.Remoting.Commands.Stop);
}
#endregion Stop
#region Step
// Returns a command that manage the MainWindow_Unloaded command
public ICommand Step_Command
{
get
{
if (m_cmdStep == null)
m_cmdStep = new Command(Step);
return m_cmdStep;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void Step(Object param)
{
Tpa.remObject.SetCommand((int)ISOCNC.Remoting.Commands.End);
Tpa.remObject.RemoveAllProgramsFromList();
}
#endregion Step
#region SetPoint
// Returns a command that manage the MainWindow_Unloaded command
public ICommand SetPoint_Command
{
get
{
if (m_cmdSetPoint == null)
m_cmdSetPoint = new Command(SetPoint);
return m_cmdSetPoint;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void SetPoint(Object param)
{
Tpa.remObject.SetCommand((int)ISOCNC.Remoting.Commands.SetPoint);
}
#endregion SetPoint
#region PrintLabel
// Returns a command that manage the MainWindow_Unloaded command
public ICommand PrintLabel_Command
{
get
{
if (m_cmdPrintLabel == null)
m_cmdPrintLabel = new Command(PrintLabel);
return m_cmdPrintLabel;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void PrintLabel(Object param)
{
EgtCNCPLCComm.ZebraPrinter.ZebraPrinter Test = new EgtCNCPLCComm.ZebraPrinter.ZebraPrinter();
Test.Print();
}
#endregion PrintLabel
#region SearchFilePath
// Returns a command that manage the MainWindow_Unloaded command
public ICommand SearchFilePath_Command
{
get
{
if (m_cmdSearchFilePath == null)
m_cmdSearchFilePath = new Command(SearchFilePath);
return m_cmdSearchFilePath;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void SearchFilePath(Object param)
{
Microsoft.Win32.OpenFileDialog OpenFileDialog = new Microsoft.Win32.OpenFileDialog();
if (OpenFileDialog.ShowDialog() == true)
_ProgramPath = OpenFileDialog.FileName;
NotifyPropertyChanged(nameof(ProgramPath));
}
#endregion SearchFilePath
#region AddProgram
// Returns a command that manage the MainWindow_Unloaded command
public ICommand AddProgram_Command
{
get
{
if (m_cmdAddProgram == null)
m_cmdAddProgram = new Command(AddProgram);
return m_cmdAddProgram;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void AddProgram(Object param)
{
//if (_ProgramIndex < 0)
//{
// string Path = _ProgramPath.Replace("\\\\", "\\");
// bool x = Tpa.remObject.AddProgramToList(Path);
//}
//else
// Tpa.remObject.AddProgramToListAtIndex(_ProgramPath, _ProgramIndex);
if (SelOPState == MachineOperatingState.Pending)
{
string Path = _ProgramPath.Replace("\\\\", "\\");
bool x = Tpa.remObject.AddProgramToList(Path);
Tpa.remObject.SetCommand((int)ISOCNC.Remoting.Commands.Start_Program_Soft);
}
}
#endregion AddProgram
#region RemoveProgram
// Returns a command that manage the MainWindow_Unloaded command
public ICommand RemoveProgram_Command
{
get
{
if (m_cmdRemoveProgram == null)
m_cmdRemoveProgram = new Command(RemoveProgram);
return m_cmdRemoveProgram;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void RemoveProgram(Object param)
{
if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
Tpa.remObject.RemoveAllProgramsFromList();
else if (_ProgramIndex < 0)
Tpa.remObject.RemoveProgramFromList(_ProgramPath);
else
Tpa.remObject.RemoveProgramFromListAtIndex(_ProgramIndex);
}
#endregion RemoveProgram
#region ReadVar
// Returns a command that manage the MainWindow_Unloaded command
public ICommand ReadVar_Command
{
get
{
if (m_cmdReadVar == null)
m_cmdReadVar = new Command(ReadVar);
return m_cmdReadVar;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void ReadVar(Object param)
{
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.ReadVar, _VarName, _VarValue);
}
#endregion ReadVar
#region WriteVar
// Returns a command that manage the MainWindow_Unloaded command
public ICommand WriteVar_Command
{
get
{
if (m_cmdWriteVar == null)
m_cmdWriteVar = new Command(WriteVar);
return m_cmdWriteVar;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void WriteVar(Object param)
{
Tpa.remObject.SetVariableCommand((int)ISOCNC.Remoting.VariableCommands.WriteVar, _VarName, _VarValue);
}
#endregion WriteVar
#region DeleteAlarms
// Returns a command that manage the MainWindow_Unloaded command
public ICommand DeleteAlarms_Command
{
get
{
if (m_cmdDeleteAlarms == null)
m_cmdDeleteAlarms = new Command(DeleteAlarms);
return m_cmdDeleteAlarms;
}
}
// Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
public void DeleteAlarms(Object param)
{
Tpa.remObject.DeleteAlarms((int)ISOCNC.Remoting.AlarmType.ISO);
//Tpa.remObject.GetListInfo(ISOCNC.Remoting.ListInfoRequested.ProgramList, -1);
}
#endregion DeleteAlarms
#endregion COMMANDS
}
class Axis : VMBase
{
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
private double _Value;
public double Value
{
get
{
return _Value;
}
set
{
_Value = value;
}
}
public Axis(string Name)
{
_Name = Name;
}
}
}
+348
View File
@@ -0,0 +1,348 @@
Imports System.Threading
Imports System.Math
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Public Class MainWindowM
#Region "FIELDS"
' massimo numero di istanze del programma ammesse
Const MAX_INST As Integer = 1
Private m_sDataRoot As String = String.Empty
Friend ReadOnly Property sDataRoot As String
Get
Return m_sDataRoot
End Get
End Property
Private m_sConfigDir As String = String.Empty
Public ReadOnly Property sConfigDir As String
Get
Return m_sConfigDir
End Get
End Property
Private m_nDebug As Integer = 0
Private m_objMutex As Mutex
Private m_bFirstInstance As Boolean = False
Friend ReadOnly Property bFirstInstance As Boolean
Get
Return m_bFirstInstance
End Get
End Property
Private m_nInstance As Integer = 0
Friend ReadOnly Property nInstance As Integer
Get
Return m_nInstance
End Get
End Property
Private m_nUserLevel As Integer = 1
Friend ReadOnly Property nUserLevel As Integer
Get
Return m_nUserLevel
End Get
End Property
Private m_nKeyLevel As Integer = 0
Friend ReadOnly Property nKeyLevel As Integer
Get
Return m_nKeyLevel
End Get
End Property
Private m_nKeyOptions As UInteger = 0
Friend ReadOnly Property nKeyOptions As Integer
Get
Return m_nKeyOptions
End Get
End Property
Private m_bAutoNestOption As Boolean = False
Friend ReadOnly Property AutoNestOption As Boolean
Get
Return m_bAutoNestOption
End Get
End Property
Friend ReadOnly Property sVersion As String
Get
Return My.Application.Info.Version.Major.ToString() & "." &
My.Application.Info.Version.Minor.ToString() &
(ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
My.Application.Info.Version.Revision.ToString()
End Get
End Property
Private m_sTempDir As String
Friend ReadOnly Property sTempDir As String
Get
Return m_sTempDir
End Get
End Property
Private m_sMachinesRoot As String
Friend ReadOnly Property sMachinesRoot As String
Get
Return m_sMachinesRoot
End Get
End Property
Private m_sBeamRoot As String
Friend ReadOnly Property sBeamRoot As String
Get
Return m_sBeamRoot
End Get
End Property
Private m_sWallRoot As String
Friend ReadOnly Property sWallRoot As String
Get
Return m_sWallRoot
End Get
End Property
Private m_sWarehouseRoot As String
Friend ReadOnly Property sWarehouseRoot As String
Get
Return m_sWarehouseRoot
End Get
End Property
Private m_sToolMakersDir As String
Friend ReadOnly Property sToolMakersDir As String
Get
Return m_sToolMakersDir
End Get
End Property
Private m_sResourcesRoot As String
Friend ReadOnly Property sResourcesRoot As String
Get
Return m_sResourcesRoot
End Get
End Property
Private m_sLogFile As String
Friend ReadOnly Property sLogFile As String
Get
Return m_sLogFile
End Get
End Property
Friend ReadOnly Property sProjsDir As String
Get
Return m_sDataRoot & "\" & PROJS_DIR
End Get
End Property
Friend ReadOnly Property sProdsDir As String
Get
Return m_sDataRoot & "\" & PRODS_DIR
End Get
End Property
' File ini della macchina
Private m_sMachIniFile As String = String.Empty
Public ReadOnly Property sMachIniFile As String
Get
Return m_sMachIniFile
End Get
End Property
#End Region ' FIELDS
#Region "CONSTRUCTOR"
Sub New()
InitializeEgtEnvironment()
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Private Sub InitializeEgtEnvironment()
'' Abilito drag and drop
'Me.AllowDrop = True
' Impostazione path radice per i dati
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
If EgtUILib.GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sDataRoot & "\" & DAT_FILE_NAME) = 0 Then
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory
End If
' Impostazione direttorio di configurazione
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
' Impostazione direttorio per file temporanei
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
' Impostazione path Ini file
IniFile.m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
' Impostazione direttorio per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Impostazione direttorio per toolmakers
If GetMainPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir) = 0 Then
m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_DFL_DIR
End If
' Verifico indice di istanza
'ManageInstance()
'' Imposto tipo di chiave
'EgtSetLockType(KEY_TYPE.HW)
'' Leggo e imposto chiave di protezione
'Dim sLicFileName As String = String.Empty
'GetMainPrivateProfileString(S_GENERAL, K_LICENCE, LIC_FILE_NAME, sLicFileName)
'Dim sLicFile As String = m_sConfigDir & "\" & sLicFileName
'Dim sKey As String = String.Empty
'EgtUILib.GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
'EgtSetKey(sKey)
'Dim sNestKey As String = ""
'EgtUILib.GetPrivateProfileString(S_LICENCE, K_NESTKEY, "", sNestKey, sLicFile)
'EgtSetNestKey(sNestKey)
'' Verifico abilitazione nesting automatico
'm_bAutoNestOption = Not String.IsNullOrWhiteSpace(sNestKey)
'' Recupero livello e opzioni della chiave
'Dim bKey As Boolean = EgtGetKeyLevel(5327, 2308, 1, m_nKeyLevel) And
' EgtGetKeyOptions(5327, 2308, 1, m_nKeyOptions)
'' Inizializzazione generale di EgtInterface
'm_nDebug = GetMainPrivateProfileInt(S_GENERAL, K_DEBUG, 0)
'm_sLogFile = m_sTempDir & "\" & GENLOG_FILE_NAME.Replace("#", m_nInstance.ToString())
'Dim sLogMsg As String = "User " & Environment.MachineName & "\" & Environment.UserName & " (" & m_nInstance.ToString() & ")" & vbLf &
' My.Application.Info.Title.ToString() & " ver. " &
' My.Application.Info.Version.Major.ToString() &
' "." & My.Application.Info.Version.Minor.ToString() &
' (ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() &
' My.Application.Info.Version.Revision.ToString()
'EgtInit(m_nDebug, m_sLogFile, sLogMsg)
'EgtSetTempDir(m_sTempDir)
'EgtSetIniFile(IniFile.m_sIniFile)
'' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
'Dim sMsgDir As String = String.Empty
'If GetMainPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then
' sMsgDir = m_sConfigDir
'End If
'' Leggo lingua corrente
'Dim sLanguage As String = String.Empty
'GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sLanguage)
'' Recupero nome file dei messaggi della lingua corrente
'Dim sMsgName As String = "EgalTechIta.txt"
'Dim nIndex As Integer = 1
'While True
' Dim ReadLanguage As Language = GetMainPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
' If IsNothing(ReadLanguage) Then Exit While
' If String.Compare(ReadLanguage.Name, sLanguage, True) = 0 Then
' sMsgName = ReadLanguage.FilePath
' Exit While
' End If
' nIndex += 1
'End While
'' Leggo file messaggi
'Dim sMsgFilePath As String = sMsgDir & "\" & sMsgName
'If Not EgtLoadMessages(sMsgFilePath) Then
' EgtOutLog("Error in EgtLoadMessages")
'End If
'' Leggo e imposto unità di misura per interfaccia utente
'EgtSetUiUnits(GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
' Leggo e imposto livello utilizzatore
m_nUserLevel = Math.Min(m_nKeyLevel, GetMainPrivateProfileInt(S_GENERAL, K_USERLEVEL, 1))
' Imposto dir font Nfe e font default
Dim sNfeDir As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir)
Dim sDefFont As String = String.Empty
GetMainPrivateProfileString(S_GEOMDB, K_DEFAULTFONT, "", sDefFont)
EgtSetFont(sNfeDir, sDefFont)
' imposto dir di default per libreria Lua e lancio libreria di base
Dim sLuaLibsDir As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_LIBSDIR, "", sLuaLibsDir)
EgtSetLuaLibs(sLuaLibsDir)
Dim sLuaBaseLib As String = String.Empty
GetMainPrivateProfileString(S_LUA, K_BASELIB, "EgtBase", sLuaBaseLib)
EgtLuaRequire(sLuaBaseLib)
'' Info su opzioni chiave
'EgtOutLog("KeyOptions : " & bKey.ToString() & " " & m_nKeyOptions.ToString())
End Sub
Friend Sub SetMachIniFile(sPath As String)
m_sMachIniFile = sPath
End Sub
'Private Sub ManageInstance()
' Dim bCreated As Boolean
' Try
' m_objMutex = New Mutex(False, "Global\OmagOFFICE", bCreated)
' Catch
' bCreated = False
' End Try
' m_bFirstInstance = bCreated
' If bCreated Then
' ' Prima istanza
' m_nInstance = 1
' ' Aggiorno stato istanze attive
' WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, m_nInstance.ToString())
' Else
' ' Leggo il massimo numero di istanze ammesse
' Dim nMaxInst As Integer = GetMaxInstances()
' ' Cerco il primo indice di istanza libero
' Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
' m_nInstance = 1
' Dim nMask As Integer = 1
' While (nTmp And nMask) <> 0 And m_nInstance < MAX_INST
' m_nInstance += 1
' nMask *= 2
' End While
' ' Se l'indice supera il massimo
' If m_nInstance > nMaxInst Then
' ' porto in primo piano la prima istanza
' Dim bFound As Boolean = False
' ' processi del programma a 32 bit
' Dim localProc As Process() = Process.GetProcessesByName("OmagOFFICER32")
' For Each p As Process In localProc
' If p.Id <> Process.GetCurrentProcess().Id Then
' bFound = True
' ShowWindow(p.MainWindowHandle, 1)
' Exit For
' End If
' Next
' ' se non trovati processi a 32 bit provo a 64 bit
' If Not bFound Then
' localProc = Process.GetProcessesByName("OmagOFFICER64")
' For Each p As Process In localProc
' If p.Id <> Process.GetCurrentProcess().Id Then
' bFound = True
' ShowWindow(p.MainWindowHandle, SW.RESTORE)
' Exit For
' End If
' Next
' End If
' ' esco dal programma
' End
' End If
' ' Aggiorno stato istanze attive
' nTmp += (1 << (m_nInstance - 1))
' WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
' End If
'End Sub
'Friend Function GetKeyOption(nKeyOpt As KEY_OPT) As Boolean
' Return ((m_nKeyOptions And nKeyOpt) <> 0)
'End Function
'Friend Function GetMaxInstances() As Integer
' ' Leggo il massimo numero di istanze ammesse
' Dim nMaxInst As Integer = GetMainPrivateProfileInt(S_GENERAL, K_MAXINST, 1)
' Return Max(1, Min(nMaxInst, MAX_INST))
'End Function
Friend Sub Close()
' Terminazione generale di EgtInterface
EgtExit()
' Rilascio mutex
If Not IsNothing(m_objMutex) Then m_objMutex.Close()
' Aggiorno istanze usate
Dim nTmp As Integer = GetMainPrivateProfileInt(S_GENERAL, K_INSTANCES, 0)
nTmp -= (1 << (m_nInstance - 1))
WriteMainPrivateProfileString(S_GENERAL, K_INSTANCES, nTmp.ToString())
End Sub
#End Region ' METHODS
End Class
+75
View File
@@ -0,0 +1,75 @@
<EgtWPFLib5:EgtCustomWindow x:Class="MainWindowV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtCOMMTest="clr-namespace:EgtCOMMTest"
DataContext="{StaticResource MainWindowVM}"
Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}"
Title="{Binding Title}" Icon="/Resources/EgtCOMMTest.ico"
MinHeight="700" MinWidth="800"
AboutBoxCommand="{Binding AboutBox_Command}"
CloseCommand="{Binding CloseApplication_Command,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}">
<StackPanel>
<UniformGrid Rows="1">
<RadioButton Content="Tpa"
IsChecked="{Binding Tpa_IsChecked}"
Style="{StaticResource MainMenu_ToggleButton}"/>
<RadioButton Content="Num"
IsChecked="{Binding Num_Flexium_IsChecked}"
Style="{StaticResource MainMenu_ToggleButton}"/>
</UniformGrid>
<GroupBox Header="MachCommandMessagePanel">
<EgtCOMMTest:MachCommandMessagePanelV DataContext="{StaticResource MachCommandMessagePanelVM}"/>
</GroupBox>
<!--<Button Content="CANCELLA ALLARMI"
Command="{Binding DeleteAlarms_Command}"/>-->
<GroupBox Header="CNC files manager">
<StackPanel>
<TextBlock Text="{Binding ProgramPath}"/>
<Button Content="..."
Command="{Binding SearchFilePath_Command}"/>
<TextBox Text="{Binding ProgramIndex}"/>
<Button Content="Add"
Command="{Binding AddProgram_Command}"/>
<Button Content="Remove"
Command="{Binding RemoveProgram_Command}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Read/Write variables">
<EgtCOMMTest:VariablesListV DataContext="{StaticResource VariablesListVM}"/>
<!--<StackPanel>
<TextBlock Text="Name:"/>
<TextBox Text="{Binding VarName}"/>
<TextBlock Text="Value:"/>
<TextBox Text="{Binding VarValue}"/>
<Button Content="Read"
Command="{Binding ReadVar_Command}"/>
<Button Content="Write"
Command="{Binding WriteVar_Command}"/>
</StackPanel>-->
</GroupBox>
<GroupBox Header="Axis">
<!--<ItemsControl ItemsSource="{Binding AxisList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<UniformGrid Columns="2">
<TextBlock Text="{Binding sName}"/>
<TextBlock Text="{Binding sValue}"/>
</UniformGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>-->
<EgtCOMMTest:AxesPanelV DataContext="{StaticResource AxesPanelVM}"/>
</GroupBox>
<GroupBox Header="OPState">
<ComboBox ItemsSource="{Binding OPStateList}"
SelectedItem="{Binding SelOPState}"/>
</GroupBox>
<StackPanel>
</StackPanel>
</StackPanel>
</EgtWPFLib5:EgtCustomWindow>
+46
View File
@@ -0,0 +1,46 @@
Imports EgtWPFLib5
Class MainWindowV
Private m_MainWindowVM As MainWindowVM
#Region "CONSTRUCTOR"
Sub New()
' Funzione che interpreta l'xaml
InitializeComponent()
' Assegno al riferimento locale al VM il VM preso dal DataContext
m_MainWindowVM = DirectCast(Me.DataContext, MainWindowVM)
'AddHandler Me.Loaded, AddressOf MainWindowV_Loaded
AddHandler Me.ContentRendered, AddressOf MainWindowV_ContentRendered
'AddHandler Me.Closing, AddressOf MainWindowV_Closing
'AddHandler Me.KeyDown, AddressOf MainWindowV_KeyDown
End Sub
#End Region ' CONSTRUCTOR
#Region "EVENTS"
'Private Sub MainWindowV_Loaded(sender As Object, e As RoutedEventArgs)
' ' Carico e imposto posizione finestra
' WinPosFromIniToWindow(S_GENERAL, K_WINPLACE, Me)
'End Sub
Private Sub MainWindowV_ContentRendered(sender As Object, e As EventArgs)
m_MainWindowVM.ContentRendered()
End Sub
'Private Sub MainWindowV_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
' ' Salvo posizione finestra (se non minimizzata)
' If WindowState <> WindowState.Minimized Then
' WinPosFromWindowToIni(Me, S_GENERAL, K_WINPLACE)
' End If
'End Sub
'Private Sub MainWindowV_KeyDown(sender As Object, e As KeyEventArgs)
' m_MainWindowVM.KeyDown(e.Key)
'End Sub
#End Region ' EVENTS
End Class
+343
View File
@@ -0,0 +1,343 @@
Imports System.Threading
Imports EgtCOMMTest.Core
Imports EgtCOMMTest.MachCommandMessagePanelVM
Imports EgtWPFLib5
Public Class MainWindowVM
Inherits VMBase
Public Enum NCTypes As Integer
NULL = 0
TPA = 1
NUM_FLEXIUM = 2
End Enum
' Riferimento al Model della MainWindow
Private m_MainWindowM As MainWindowM
Friend ReadOnly Property MainWindowM As MainWindowM
Get
Return m_MainWindowM
End Get
End Property
' Titolo
Private m_Title As String
Public ReadOnly Property Title As String
Get
Return m_Title
End Get
End Property
Public Property Num_Flexium_IsChecked As Boolean
Get
Return m_SelNCType = NCTypes.NUM_FLEXIUM
End Get
Set(value As Boolean)
If value Then m_SelNCType = NCTypes.NUM_FLEXIUM
End Set
End Property
Public Property Tpa_IsChecked As Boolean
Get
Return m_SelNCType = NCTypes.TPA
End Get
Set(value As Boolean)
If value Then m_SelNCType = NCTypes.TPA
End Set
End Property
Private m_SelNCType As NCTypes = NCTypes.NULL
Public Property SelNCType As Integer
Get
Return m_SelNCType
End Get
Set(value As Integer)
m_SelNCType = value
NotifyPropertyChanged(NameOf(Tpa_IsChecked))
NotifyPropertyChanged(NameOf(Num_Flexium_IsChecked))
End Set
End Property
Private m_CurrMachineName As String
Private m_ProgramPath As String
Public ReadOnly Property ProgramPath As String
Get
Return m_ProgramPath
End Get
End Property
Private m_ProgramIndex As Integer = 0
Public Property ProgramIndex As Integer
Get
Return m_ProgramIndex
End Get
Set(ByVal value As Integer)
m_ProgramIndex = value
End Set
End Property
Private m_VarName As String
Public Property VarName As String
Get
Return m_VarName
End Get
Set(ByVal value As String)
m_VarName = value
End Set
End Property
Private m_VarValue As String = ""
Public Property VarValue As String
Get
Return m_VarValue
End Get
Set(ByVal value As String)
m_VarValue = value
End Set
End Property
Public Sub SetVarValue(ByVal value As Object)
m_VarValue = CStr(value)
NotifyPropertyChanged(NameOf(VarValue))
End Sub
'Private m_OPState As MachineOperatingState
'Public ReadOnly Property OPState As MachineOperatingState
' Get
' Return m_OPState
' End Get
'End Property
'Public ReadOnly Property sOPState As String
' Get
' Select Case m_OPState
' Case MachineOperatingState.Start
' Return "START"
' Case MachineOperatingState.Stop
' Return "STOP"
' Case MachineOperatingState.End
' Return "RESET"
' Case MachineOperatingState.SetPoint
' Return "SETPOINT"
' Case MachineOperatingState.Pending
' Return "PENDING"
' Case Else
' Return "UNSPECIFIED"
' End Select
' End Get
'End Property
'Public Sub SetOPState(value As MachineOperatingState)
' m_OPState = value
' NotifyPropertyChanged(NameOf(OPState))
' NotifyPropertyChanged(NameOf(sOPState))
'End Sub
Private _OPStateList As List(Of MachineOperatingState)
Public Property OPStateList As List(Of MachineOperatingState)
Get
Return _OPStateList
End Get
Set(ByVal value As List(Of MachineOperatingState))
_OPStateList = value
End Set
End Property
Private _SelOPState As MachineOperatingState
Public Property SelOPState As MachineOperatingState
Get
Return _SelOPState
End Get
Set(ByVal value As MachineOperatingState)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SETOP, value))
_SelOPState = value
End Set
End Property
Friend Sub SetOPState(value As MachineOperatingState)
_SelOPState = value
NotifyPropertyChanged(NameOf(SelOPState))
End Sub
' Definizione comandi
Private m_cmdAboutBox As ICommand
Private m_cmdCloseApplication As ICommand
Private m_cmdSearchFilePath As ICommand
Private m_cmdAddProgram As ICommand
Private m_cmdRemoveProgram As ICommand
Private m_cmdReadVar As ICommand
Private m_cmdWriteVar As ICommand
#Region "CONSTRUCTOR"
Sub New()
' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM
Map.BeginInit(Me)
' Creo Model della MainWindow
m_MainWindowM = New MainWindowM
' leggo macchina corrente
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", m_CurrMachineName)
' Impostazione path MachIni file
MainWindowM.SetMachIniFile(MainWindowM.sMachinesRoot & "\" & m_CurrMachineName & "\" & m_CurrMachineName & ".ini")
' recupero tipo di controllo
SelNCType = GetMainPrivateProfileInt(S_GENERAL, K_NCTYPE, 0)
' carico stati della macchina
_OPStateList = New List(Of MachineOperatingState) From {
MachineOperatingState.Start,
MachineOperatingState.[Stop],
MachineOperatingState.[End],
MachineOperatingState.SetPoint,
MachineOperatingState.Pending,
MachineOperatingState.Unspecified
}
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Friend Sub SetTitle(sTitle As String)
m_Title = sTitle
NotifyPropertyChanged(NameOf(Title))
End Sub
Public Sub UpdateTitle()
m_Title = "EgtCOMMTest"
NotifyPropertyChanged(NameOf(Title))
End Sub
Friend Sub ContentRendered()
'' inizializzo thread di aggiornamento e comunicazione con DB
'' creo thread gestione macchina
'm_ViewerOptimizerCommThread = New Thread(Sub()
' ViewerOptimizerCommThread.ViewerOptimizerCommThreadFunction()
' End Sub)
'm_ViewerOptimizerCommThread.SetApartmentState(ApartmentState.STA)
'' avvio thread di gestione della macchina che avvia la connessione
'm_ViewerOptimizerCommThread.Start()
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "AboutBoxCommand"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property AboutBox_Command As ICommand
Get
If m_cmdAboutBox Is Nothing Then
m_cmdAboutBox = New Command(AddressOf AboutBox)
End If
Return m_cmdAboutBox
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub AboutBox(ByVal param As Object)
'Dim AboutBoxWindow As New AboutBoxV
'AboutBoxWindow.Owner = Application.Current.MainWindow
'AboutBoxWindow.ShowDialog()
End Sub
#End Region ' AboutBoxCommand
#Region "CloseApplication"
''' <summary>
''' Returns a command that do Exec.
''' </summary>
Public ReadOnly Property CloseApplication_Command As ICommand
Get
If m_cmdCloseApplication Is Nothing Then
m_cmdCloseApplication = New Command(AddressOf CloseApplication)
End If
Return m_cmdCloseApplication
End Get
End Property
''' <summary>
''' Execute the Exec. This method is invoked by the ExecCommand.
''' </summary>
Public Sub CloseApplication()
' disconnetto comunicazione con macchina
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.DISCONNECT))
'' termino thread di comunicazione con Db ed altri programmi
'ViewerOptimizerCommThread.StopThread()
'' Verifico modifica parametri in Configurazione e chiedo il salvataggio
'If Map.refMainMenuVM.SelPage = Pages.CONFIG Then Map.refConfigurationPageVM.VerifyConfigPageModification()
' Chiudo la finestra principale del programma
Application.Current.MainWindow.Close()
End Sub
#End Region ' CloseApplication
Public ReadOnly Property SearchFilePath_Command As ICommand
Get
If m_cmdSearchFilePath Is Nothing Then m_cmdSearchFilePath = New Command(AddressOf SearchFilePath)
Return m_cmdSearchFilePath
End Get
End Property
Public Sub SearchFilePath(ByVal param As Object)
Dim OpenFileDialog As Microsoft.Win32.OpenFileDialog = New Microsoft.Win32.OpenFileDialog()
If OpenFileDialog.ShowDialog() = True Then m_ProgramPath = OpenFileDialog.FileName
NotifyPropertyChanged(NameOf(ProgramPath))
End Sub
Public ReadOnly Property AddProgram_Command As ICommand
Get
If m_cmdAddProgram Is Nothing Then m_cmdAddProgram = New Command(AddressOf AddProgram)
Return m_cmdAddProgram
End Get
End Property
Public Sub AddProgram(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.SENDPROG, m_ProgramPath))
End Sub
Public ReadOnly Property RemoveProgram_Command As ICommand
Get
If m_cmdRemoveProgram Is Nothing Then m_cmdRemoveProgram = New Command(AddressOf RemoveProgram)
Return m_cmdRemoveProgram
End Get
End Property
Public Sub RemoveProgram(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.REMOVEPROG))
End Sub
Public ReadOnly Property ReadVar_Command As ICommand
Get
If m_cmdReadVar Is Nothing Then m_cmdReadVar = New Command(AddressOf ReadVar)
Return m_cmdReadVar
End Get
End Property
Public Sub ReadVar(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.READ))
End Sub
Public ReadOnly Property WriteVar_Command As ICommand
Get
If m_cmdWriteVar Is Nothing Then m_cmdWriteVar = New Command(AddressOf WriteVar)
Return m_cmdWriteVar
End Get
End Property
Public Sub WriteVar(ByVal param As Object)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.WRITE))
End Sub
#End Region ' COMMANDS
End Class
+59
View File
@@ -0,0 +1,59 @@
Imports System
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Runtime.InteropServices
Imports System.Windows
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("EgtCOMMTest")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("EgtCOMMTest")>
<Assembly: AssemblyCopyright("Copyright © 2021")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(false)>
'In order to begin building localizable applications, set
'<UICulture>CultureYouAreCodingWith</UICulture> in your .vbproj file
'inside a <PropertyGroup>. For example, if you are using US english
'in your source files, set the <UICulture> to "en-US". Then uncomment the
'NeutralResourceLanguage attribute below. Update the "en-US" in the line
'below to match the UICulture setting in the project file.
'<Assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
'1st parameter: where theme specific resource dictionaries are located
'(used if a resource is not found in the page,
' or application resource dictionaries)
'2nd parameter: where the generic resource dictionary is located
'(used if a resource is not found in the page,
'app, and any theme specific resource dictionaries)
<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("7fc899b0-a8ad-4288-a660-f097fe959cef")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
+121
View File
@@ -0,0 +1,121 @@
#If _MyType <> "Empty" Then
Namespace My
''' <summary>
''' Module used to define the properties that are available in the My Namespace for WPF
''' </summary>
''' <remarks></remarks>
<Global.Microsoft.VisualBasic.HideModuleName()> _
Module MyWpfExtension
Private s_Computer As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Devices.Computer)
Private s_User As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.ApplicationServices.User)
Private s_Windows As New ThreadSafeObjectProvider(Of MyWindows)
Private s_Log As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Logging.Log)
''' <summary>
''' Returns the application object for the running application
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Application() As Application
Get
Return CType(Global.System.Windows.Application.Current, Application)
End Get
End Property
''' <summary>
''' Returns information about the host computer.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Computer() As Global.Microsoft.VisualBasic.Devices.Computer
Get
Return s_Computer.GetInstance()
End Get
End Property
''' <summary>
''' Returns information for the current user. If you wish to run the application with the current
''' Windows user credentials, call My.User.InitializeWithWindowsUser().
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property User() As Global.Microsoft.VisualBasic.ApplicationServices.User
Get
Return s_User.GetInstance()
End Get
End Property
''' <summary>
''' Returns the application log. The listeners can be configured by the application's configuration file.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Log() As Global.Microsoft.VisualBasic.Logging.Log
Get
Return s_Log.GetInstance()
End Get
End Property
''' <summary>
''' Returns the collection of Windows defined in the project.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Windows() As MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return s_Windows.GetInstance()
End Get
End Property
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
<Global.Microsoft.VisualBasic.MyGroupCollection("System.Windows.Window", "Create__Instance__", "Dispose__Instance__", "My.MyWpfExtenstionModule.Windows")> _
Friend NotInheritable Class MyWindows
<Global.System.Diagnostics.DebuggerHidden()> _
Private Shared Function Create__Instance__(Of T As {New, Global.System.Windows.Window})(ByVal Instance As T) As T
If Instance Is Nothing Then
If s_WindowBeingCreated IsNot Nothing Then
If s_WindowBeingCreated.ContainsKey(GetType(T)) = True Then
Throw New Global.System.InvalidOperationException("The window cannot be accessed via My.Windows from the Window constructor.")
End If
Else
s_WindowBeingCreated = New Global.System.Collections.Hashtable()
End If
s_WindowBeingCreated.Add(GetType(T), Nothing)
Return New T()
s_WindowBeingCreated.Remove(GetType(T))
Else
Return Instance
End If
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.Diagnostics.DebuggerHidden()> _
Private Sub Dispose__Instance__(Of T As Global.System.Windows.Window)(ByRef instance As T)
instance = Nothing
End Sub
<Global.System.Diagnostics.DebuggerHidden()> _
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Public Sub New()
MyBase.New()
End Sub
<Global.System.ThreadStatic()> Private Shared s_WindowBeingCreated As Global.System.Collections.Hashtable
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function Equals(ByVal o As Object) As Boolean
Return MyBase.Equals(o)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function GetHashCode() As Integer
Return MyBase.GetHashCode
End Function
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> _
Friend Overloads Function [GetType]() As Global.System.Type
Return GetType(MyWindows)
End Function
<Global.System.ComponentModel.EditorBrowsable(Global.System.ComponentModel.EditorBrowsableState.Never)> Public Overrides Function ToString() As String
Return MyBase.ToString
End Function
End Class
End Module
End Namespace
Partial Class Application
Inherits Global.System.Windows.Application
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1822:MarkMembersAsStatic")> _
Friend ReadOnly Property Info() As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo
<Global.System.Diagnostics.DebuggerHidden()> _
Get
Return New Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(Global.System.Reflection.Assembly.GetExecutingAssembly())
End Get
End Property
End Class
#End If
+62
View File
@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:$clrversion$
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("$safeprojectname$.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace
+117
View File
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+73
View File
@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.EgtCOMMTest.My.MySettings
Get
Return Global.EgtCOMMTest.My.MySettings.Default
End Get
End Property
End Module
End Namespace
+7
View File
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

+392
View File
@@ -0,0 +1,392 @@
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Input
Imports System.Collections.ObjectModel
Imports System.Windows.Media
Imports System.Windows
Imports ISOCNC.Remoting
Imports Zebra.Sdk.Comm
Imports Zebra.Sdk.Device
Imports Zebra.Sdk.Printer
Namespace EgtCNCPLCComm
Class MainWindowVM
Inherits VMBase
Private _Connected As Boolean = False
Public ReadOnly Property Connected As Boolean
Get
Return _Connected
End Get
End Property
Public ReadOnly Property Connect_Background As SolidColorBrush
Get
Return (If(_Connected, Brushes.Green, Brushes.Red))
End Get
End Property
Private _Tpa As TPAComm = Nothing
Public ReadOnly Property Tpa As TPAComm
Get
Return _Tpa
End Get
End Property
Private _ProgramPath As String
Public ReadOnly Property ProgramPath As String
Get
Return _ProgramPath
End Get
End Property
Private _ProgramIndex As Integer = 0
Public Property ProgramIndex As Integer
Get
Return _ProgramIndex
End Get
Set(ByVal value As Integer)
_ProgramIndex = value
End Set
End Property
Private _VarName As String
Public Property VarName As String
Get
Return _VarName
End Get
Set(ByVal value As String)
_VarName = value
End Set
End Property
Private _VarValue As String = ""
Public Property VarValue As String
Get
Return _VarValue
End Get
Set(ByVal value As String)
_VarValue = value
End Set
End Property
Public Sub SetVarValue(ByVal value As Object)
_VarValue = CStr(value)
NotifyPropertyChanged(NameOf(VarValue))
End Sub
Private _AxisList As ObservableCollection(Of Axis)
Public ReadOnly Property AxisList As ObservableCollection(Of Axis)
Get
Return _AxisList
End Get
End Property
Private _OPStateList As List(Of ISOCNC.Remoting.MachineOperatingState)
Public Property OPStateList As List(Of ISOCNC.Remoting.MachineOperatingState)
Get
Return _OPStateList
End Get
Set(ByVal value As List(Of ISOCNC.Remoting.MachineOperatingState))
_OPStateList = value
End Set
End Property
Private _SelOPState As ISOCNC.Remoting.MachineOperatingState
Public Property SelOPState As ISOCNC.Remoting.MachineOperatingState
Get
Return _SelOPState
End Get
Set(ByVal value As ISOCNC.Remoting.MachineOperatingState)
_SelOPState = value
End Set
End Property
Private _ErrCycle As String
Public ReadOnly Property ErrCycle As String
Get
Return _ErrCycle
End Get
End Property
Public Sub UpdateErrCycle(ByVal msg As String)
_ErrCycle = msg
NotifyPropertyChanged(NameOf(ErrCycle))
End Sub
Private _Iso As String
Public ReadOnly Property Iso As String
Get
Return _Iso
End Get
End Property
Public Sub UpdateIso(ByVal msg As String)
_Iso = msg
NotifyPropertyChanged(NameOf(Iso))
End Sub
Private _Message As String
Public ReadOnly Property Message As String
Get
Return _Message
End Get
End Property
Public Sub UpdateMessage(ByVal msg As String)
_Message = msg
NotifyPropertyChanged(NameOf(Message))
End Sub
Private _ErrSystem As String
Public ReadOnly Property ErrSystem As String
Get
Return _ErrSystem
End Get
End Property
Public Sub UpdateErrSystem(ByVal msg As String)
_ErrSystem = msg
NotifyPropertyChanged(NameOf(ErrSystem))
End Sub
Private m_cmdConnect As ICommand
Private m_cmdDisconnect As ICommand
Private m_cmdStart As ICommand
Private m_cmdStop As ICommand
Private m_cmdStep As ICommand
Private m_cmdSearchFilePath As ICommand
Private m_cmdAddProgram As ICommand
Private m_cmdRemoveProgram As ICommand
Private m_cmdReadVar As ICommand
Private m_cmdWriteVar As ICommand
Private m_cmdDeleteAlarms As ICommand
Private m_cmdSetPoint As ICommand
Private m_cmdPrintLabel As ICommand
Public Sub New()
_AxisList = New ObservableCollection(Of Axis) From {
New Axis("X"),
New Axis("Y"),
New Axis("Z"),
New Axis("C"),
New Axis("B")
}
_OPStateList = New List(Of MachineOperatingState) From {
MachineOperatingState.Start,
MachineOperatingState.[Stop],
MachineOperatingState.[End],
MachineOperatingState.SetPoint,
MachineOperatingState.Pending,
MachineOperatingState.Unspecified
}
NotifyPropertyChanged(NameOf(Connect_Background))
End Sub
Public ReadOnly Property Connect_Command As ICommand
Get
If m_cmdConnect Is Nothing Then m_cmdConnect = New Command(AddressOf Connect)
Return m_cmdConnect
End Get
End Property
Public Sub Connect(ByVal param As Object)
_Tpa = New TPAComm(Me)
_Connected = Tpa.remObject.OnConnect()
NotifyPropertyChanged(NameOf(Connect_Background))
If _Connected Then Init()
End Sub
Private Sub Init()
_SelOPState = CType(Tpa.remObject.MachineOperativeStatus, MachineOperatingState)
NotifyPropertyChanged(NameOf(SelOPState))
Dim sAxesValue As String = ""
Dim dAxesValue As Double = 0
Dim sAxesName As String = "0.TESTA.AsseX.X"
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue)
Double.TryParse(sAxesValue, dAxesValue)
_AxisList(0).Value = dAxesValue
sAxesName = "0.TESTA.AsseY.Y"
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue)
Double.TryParse(sAxesValue, dAxesValue)
_AxisList(1).Value = dAxesValue
sAxesName = "0.TESTA.AsseZ.Z"
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue)
Double.TryParse(sAxesValue, dAxesValue)
_AxisList(2).Value = dAxesValue
sAxesName = "0.TESTA.AsseC.C"
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue)
Double.TryParse(sAxesValue, dAxesValue)
_AxisList(3).Value = dAxesValue
sAxesName = "0.TESTA.AsseB.B"
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), sAxesName, sAxesValue)
Double.TryParse(sAxesValue, dAxesValue)
_AxisList(4).Value = dAxesValue
End Sub
Public ReadOnly Property Disconnect_Command As ICommand
Get
If m_cmdDisconnect Is Nothing Then m_cmdDisconnect = New Command(AddressOf Disconnect)
Return m_cmdDisconnect
End Get
End Property
Public Sub Disconnect(ByVal param As Object)
_Connected = Not Tpa.remObject.OnClose()
NotifyPropertyChanged(NameOf(Connect_Background))
End Sub
Public ReadOnly Property Start_Command As ICommand
Get
If m_cmdStart Is Nothing Then m_cmdStart = New Command(AddressOf Start)
Return m_cmdStart
End Get
End Property
Public Sub Start(ByVal param As Object)
Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start))
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.WriteVar), "0.FUNM.E80048", "0")
End Sub
Public ReadOnly Property Stop_Command As ICommand
Get
If m_cmdStop Is Nothing Then m_cmdStop = New Command(AddressOf [Stop])
Return m_cmdStop
End Get
End Property
Public Sub [Stop](ByVal param As Object)
Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[Stop]))
End Sub
Public ReadOnly Property Step_Command As ICommand
Get
If m_cmdStep Is Nothing Then m_cmdStep = New Command(AddressOf [Step])
Return m_cmdStep
End Get
End Property
Public Sub [Step](ByVal param As Object)
Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.[End]))
Tpa.remObject.RemoveAllProgramsFromList()
End Sub
Public ReadOnly Property SetPoint_Command As ICommand
Get
If m_cmdSetPoint Is Nothing Then m_cmdSetPoint = New Command(AddressOf SetPoint)
Return m_cmdSetPoint
End Get
End Property
Public Sub SetPoint(ByVal param As Object)
Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.SetPoint))
End Sub
Public ReadOnly Property PrintLabel_Command As ICommand
Get
If m_cmdPrintLabel Is Nothing Then m_cmdPrintLabel = New Command(AddressOf PrintLabel)
Return m_cmdPrintLabel
End Get
End Property
Public Sub PrintLabel(ByVal param As Object)
Dim Test As EgtCNCPLCComm.ZebraPrinter.ZebraPrinter = New EgtCNCPLCComm.ZebraPrinter.ZebraPrinter()
Test.Print()
End Sub
Public ReadOnly Property SearchFilePath_Command As ICommand
Get
If m_cmdSearchFilePath Is Nothing Then m_cmdSearchFilePath = New Command(AddressOf SearchFilePath)
Return m_cmdSearchFilePath
End Get
End Property
Public Sub SearchFilePath(ByVal param As Object)
Dim OpenFileDialog As Microsoft.Win32.OpenFileDialog = New Microsoft.Win32.OpenFileDialog()
If OpenFileDialog.ShowDialog() = True Then _ProgramPath = OpenFileDialog.FileName
NotifyPropertyChanged(NameOf(ProgramPath))
End Sub
Public ReadOnly Property AddProgram_Command As ICommand
Get
If m_cmdAddProgram Is Nothing Then m_cmdAddProgram = New Command(AddressOf AddProgram)
Return m_cmdAddProgram
End Get
End Property
Public Sub AddProgram(ByVal param As Object)
If SelOPState = MachineOperatingState.Pending Then
Dim Path As String = _ProgramPath.Replace("\\", "\")
Dim x As Boolean = Tpa.remObject.AddProgramToList(Path)
Tpa.remObject.SetCommand(CInt(ISOCNC.Remoting.Commands.Start_Program_Soft))
End If
End Sub
Public ReadOnly Property RemoveProgram_Command As ICommand
Get
If m_cmdRemoveProgram Is Nothing Then m_cmdRemoveProgram = New Command(AddressOf RemoveProgram)
Return m_cmdRemoveProgram
End Get
End Property
Public Sub RemoveProgram(ByVal param As Object)
If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then
Tpa.remObject.RemoveAllProgramsFromList()
ElseIf _ProgramIndex < 0 Then
Tpa.remObject.RemoveProgramFromList(_ProgramPath)
Else
Tpa.remObject.RemoveProgramFromListAtIndex(_ProgramIndex)
End If
End Sub
Public ReadOnly Property ReadVar_Command As ICommand
Get
If m_cmdReadVar Is Nothing Then m_cmdReadVar = New Command(AddressOf ReadVar)
Return m_cmdReadVar
End Get
End Property
Public Sub ReadVar(ByVal param As Object)
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.ReadVar), _VarName, _VarValue)
End Sub
Public ReadOnly Property WriteVar_Command As ICommand
Get
If m_cmdWriteVar Is Nothing Then m_cmdWriteVar = New Command(AddressOf WriteVar)
Return m_cmdWriteVar
End Get
End Property
Public Sub WriteVar(ByVal param As Object)
Tpa.remObject.SetVariableCommand(CInt(ISOCNC.Remoting.VariableCommands.WriteVar), _VarName, _VarValue)
End Sub
Public ReadOnly Property DeleteAlarms_Command As ICommand
Get
If m_cmdDeleteAlarms Is Nothing Then m_cmdDeleteAlarms = New Command(AddressOf DeleteAlarms)
Return m_cmdDeleteAlarms
End Get
End Property
Public Sub DeleteAlarms(ByVal param As Object)
Tpa.remObject.DeleteAlarms(CInt(ISOCNC.Remoting.AlarmType.ISO))
End Sub
End Class
End Namespace
+253
View File
@@ -0,0 +1,253 @@
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Namespace fx_DGeneralFunctions
Partial Public Class MainForm
Inherits Form
Private objDRunTimeSystem As FXServer.DRunTimeSystem
Private objDGroupManager As FXServer.DGroupManager
Private objDGeneralFunction As FXServer.DGeneralFunctions
Private objDMainCncData As FXServer.DMainCncData
Private IsFlexiumPlus As Boolean = False
Private _PartProgramNumber As Single
Private _CNCAxisChannelArray As String() = New String() {"Channel 1", "Channel 2"}
Public Sub New()
InitializeComponent()
End Sub
Private Sub MainForm_Load(ByVal sender As Object, ByVal e As EventArgs)
_comboCncAxisChannel.Items.AddRange(_CNCAxisChannelArray)
End Sub
Private Sub InitFxServer()
objDRunTimeSystem = New FXServer.DRunTimeSystem()
objDRunTimeSystem.ServerInitializationFinished += New FXServer.IDRunTimeSystemEvents_ServerInitializationFinishedEventHandler(AddressOf objDRunTimeSystem_ServerInitializationFinished)
objDRunTimeSystem.ServerReinitializationStarted += New FXServer.IDRunTimeSystemEvents_ServerReinitializationStartedEventHandler(AddressOf objDRunTimeSystem_ServerReinitializationStarted)
objDRunTimeSystem.Init()
End Sub
Private Sub InitFxObjects()
objDGroupManager = New FXServer.DGroupManager()
objDGroupManager.ErrorHandler += New FXServer.IDGroupManagerEvents_ErrorHandlerEventHandler(AddressOf objDGroupManager_ErrorHandler)
objDGroupManager.CncNumber = 0
objDGeneralFunction = New FXServer.DGeneralFunctions()
objDGeneralFunction.ProgramActivated += New FXServer.IDGeneralFunctionsEvents_ProgramActivatedEventHandler(AddressOf objDGeneralFunction_ProgramActivated)
objDGeneralFunction.OnCncStart += New FXServer.IDGeneralFunctionsEvents_OnCncStartEventHandler(AddressOf objDGeneralFunction_OnCncStart)
objDGeneralFunction.OnCncStop += New FXServer.IDGeneralFunctionsEvents_OnCncStopEventHandler(AddressOf objDGeneralFunction_OnCncStop)
objDGeneralFunction.OnCncReset += New FXServer.IDGeneralFunctionsEvents_OnCncResetEventHandler(AddressOf objDGeneralFunction_OnCncReset)
objDGeneralFunction.CncModeWritten += New FXServer.IDGeneralFunctionsEvents_CncModeWrittenEventHandler(AddressOf objDGeneralFunction_CncModeWritten)
objDGeneralFunction.VariableWritten += New FXServer.IDGeneralFunctionsEvents_VariableWrittenEventHandler(AddressOf objDGeneralFunction_VariableWritten)
objDGeneralFunction.OnSkipLevelWritten += New FXServer.IDGeneralFunctionsEvents_OnSkipLevelWrittenEventHandler(AddressOf objDGeneralFunction_OnSkipLevelWritten)
objDGeneralFunction.Init(objDGroupManager.Handle)
objDMainCncData = New FXServer.DMainCncData()
objDMainCncData.Init(objDGroupManager.Handle)
Dim CncFxIdentifier As String = objDMainCncData.GetCncIdentifier()
_txtGetCncIdentification.Invoke(CType(Function()
_txtGetCncIdentification.Text = CncFxIdentifier
End Function, MethodInvoker))
If CncFxIdentifier = "Flexium 6" OrElse CncFxIdentifier = "Flexium 8" OrElse CncFxIdentifier = "Flexium 68" Then
IsFlexiumPlus = False
Else
IsFlexiumPlus = True
End If
End Sub
Private Sub CloseFxObjects()
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGroupManager)
objDGroupManager = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(objDGeneralFunction)
objDGeneralFunction = Nothing
MessageBox.Show("CloseFxObjects")
End Sub
Private Sub GetGeneralFunctions()
Dim _GetConnectState As Int16 = objDGeneralFunction.ConnectionStatus
Select Case _GetConnectState
Case 0
_txtConnectionState.Text = "Not connected"
Case 1
_txtConnectionState.Text = " Connection error"
Case 2
_txtConnectionState.Text = "Connected"
Case Else
End Select
End Sub
Private Sub _btnRuntimeSystemStart_Click(ByVal sender As Object, ByVal e As EventArgs)
InitFxServer()
End Sub
Private Sub _btnCycleStartCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncStart()
End Sub
Private Sub _BtnFeedHoldCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncStop()
End Sub
Private Sub _btnCNCResetCommon_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.CncReset()
End Sub
Private Sub _btnCncModeAuto_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(0, 0)
End Sub
Private Sub _btnCncModeMDI_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(2, 0)
End Sub
Private Sub _btnCncModeManual_Click(ByVal sender As Object, ByVal e As EventArgs)
objDGeneralFunction.WriteCncMode(7, 0)
End Sub
Private Sub _btnWriteVariable_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim _E80011FxStd As Int32 = 88888
Dim _FXReturn As Short = objDGeneralFunction.WriteVariable("E80011", _E80011FxStd)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteVariable:" & " " & _FXReturn.ToString())
End If
End Sub
Private Sub _btnWriteVariable2_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim _E80010FxPlus As Double = 51515.6161
Dim _FXReturn As Short = objDGeneralFunction.WriteVariable2("E80010", _E80010FxPlus)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteVariable2:" & " " & _FXReturn.ToString())
End If
End Sub
Private Sub objDRunTimeSystem_ServerInitializationFinished()
InitFxObjects()
GetGeneralFunctions()
If IsFlexiumPlus = True Then
_txtBlockSkipLevel.Text = "100"
_txtBlockSkipLevel.Enabled = True
Else
_txtBlockSkipLevel.Text = ""
_txtBlockSkipLevel.Enabled = True
End If
_txtServerInitStatus.Invoke(CType(Function()
_txtServerInitStatus.ForeColor = Color.DarkBlue
_txtServerInitStatus.Text = "FXServer objects initialized !"
End Function, MethodInvoker))
_txtServerReinitStatus.Invoke(CType(Function()
_txtServerReinitStatus.ForeColor = Color.DarkGreen
_txtServerReinitStatus.Text = "FXServer no objects closed !"
End Function, MethodInvoker))
End Sub
Private Sub objDRunTimeSystem_ServerReinitializationStarted()
CloseFxObjects()
_txtServerReinitStatus.Invoke(CType(Function()
_txtServerReinitStatus.ForeColor = Color.Red
_txtServerReinitStatus.Text = "FXServer objects closed !"
End Function, MethodInvoker))
_txtServerInitStatus.Invoke(CType(Function()
_txtServerInitStatus.ForeColor = Color.DarkOrange
_txtServerInitStatus.Text = "FXServer objects not initialized !"
End Function, MethodInvoker))
End Sub
Private Sub objDGeneralFunction_ProgramActivated(ByVal nerrorCode As Short)
MessageBox.Show("Part program activated:" & " " & nerrorCode)
End Sub
Private Sub objDGeneralFunction_OnCncReset(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error CNC Reset:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_OnCncStop(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error Feed Hold:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_OnCncStart(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error Cycle Start:" & " " & errorCode.ToString())
End If
End Sub
Private Sub objDGeneralFunction_CncModeWritten(ByVal errorCode As Short)
MessageBox.Show("Error CNC Mode selection completed:" & " " & errorCode.ToString())
End Sub
Private Sub _txtPartProgramNumber_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = CChar(Keys.[Return]) Then
e.Handled = True
Dim _CncAxisChannelIndependent As Int16
_PartProgramNumber = Single.Parse(_txtPartProgramNumber.Text)
MessageBox.Show("PartProgNumber:" & " " & _PartProgramNumber.ToString())
Dim _PartProgramNumberActivate As Int32 = Convert.ToInt32(_PartProgramNumber * 10)
MessageBox.Show("PartProgNumberActivate:" & " " & _PartProgramNumberActivate.ToString())
If _checkChannelTypeState.Checked = True Then
_CncAxisChannelIndependent = 1
Else
_CncAxisChannelIndependent = 0
End If
Dim _FXReturn As Int16 = objDGeneralFunction.ActivateProgram(_PartProgramNumberActivate, _CncAxisChannelIndependent)
If _FXReturn <> 0 Then
MessageBox.Show("Error Activate Program:" & " " & _FXReturn.ToString())
End If
End If
End Sub
Private Sub objDGroupManager_ErrorHandler(ByVal sError As String, ByVal nTextNumber As Short)
MessageBox.Show("ErrorHandler message:" & " " & sError & " " & "ErrorHandler number:" & " " & nTextNumber.ToString())
End Sub
Private Sub _comboCncAxisChannel_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Select Case _comboCncAxisChannel.SelectedItem.ToString()
Case "Channel 1"
objDGroupManager.AxisGroup = 0
Case "Channel 2"
objDGroupManager.AxisGroup = 1
Case Else
End Select
End Sub
Private Sub objDGeneralFunction_VariableWritten(ByVal errorCode As Short)
If errorCode <> 0 Then
MessageBox.Show("Error from VariableWritten:" & " " & errorCode.ToString())
Else
MessageBox.Show("VariableWritten successfully")
End If
End Sub
Private Sub _txtBlockSkipLevel_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = CChar(Keys.[Return]) Then
e.Handled = True
Dim _GetBlockSkipLevelDecimalValue As UInt32 = Convert.ToUInt32(_txtBlockSkipLevel.Text)
Dim _FXReturn As Int16 = objDGeneralFunction.WriteSkipLevel(20, _GetBlockSkipLevelDecimalValue)
If _FXReturn <> 0 Then
MessageBox.Show("Error from WriteSkipLevel:" & " " & _FXReturn.ToString())
End If
End If
End Sub
Private Sub objDGeneralFunction_OnSkipLevelWritten(ByVal lHandle As Integer, ByVal errorCode As Short)
MessageBox.Show("OnSkipLevelWritten:" & "" & "Handle:" & lHandle & " " & "errorCode:" & errorCode)
End Sub
End Class
End Namespace
+630
View File
@@ -0,0 +1,630 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EgtCOMMTest="clr-namespace:EgtCOMMTest"
xmlns:EgtWPFLib5="clr-namespace:EgtWPFLib5;assembly=EgtWPFLib5"
xmlns:EgtFloating="clr-namespace:EgtWPFLib5.EgtFloating;assembly=EgtWPFLib5">
<!--
Assign a Key to every Panel ViewModel to use
it in xaml file(ProjectView.xaml).
-->
<EgtCOMMTest:MainWindowVM x:Key="MainWindowVM"/>
<EgtCOMMTest:MachCommandMessagePanelVM x:Key="MachCommandMessagePanelVM"/>
<EgtCOMMTest:AxesPanelVM x:Key="AxesPanelVM"/>
<EgtCOMMTest:VariablesListVM x:Key="VariablesListVM"/>
<!--<EgtCOMMTest:ProjManagerVM x:Key="ProjManagerVM"/>-->
<!--<EgtCOMMTest:MainMenuVM x:Key="MainMenuVM"/>
<EgtCOMMTest:MyStatusBarVM x:Key="StatusBarVM"/>-->
<!--<EgtCOMMTest:ShowBeamPanelVM x:Key="ShowBeamPanelVM"/>-->
<!--<EgtCOMMTest:MyInstrumentPanelVM x:Key="InstrumentPanelVM"/>-->
<!--<EgtCOMMTest:PartParametersVM x:Key="PartParametersVM"/>-->
<!--Colori predefiniti-->
<SolidColorBrush x:Key="Omag_Blue" Color="#FF095CA8" />
<SolidColorBrush x:Key="Omag_Yellow" Color="#FFFFCE5B" />
<SolidColorBrush x:Key="Omag_Red" Color="Red" />
<SolidColorBrush x:Key="Omag_Green" Color="LawnGreen" />
<SolidColorBrush x:Key="Omag_VeryLightGray" Color="#FFF2F2F2" />
<SolidColorBrush x:Key="Omag_LightGray" Color="LightGray" />
<SolidColorBrush x:Key="Omag_Gray" Color="#FF9E9E9E" />
<SolidColorBrush x:Key="Omag_DarkGray" Color="#FF444444" />
<SolidColorBrush x:Key="Omag_White" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="Omag_Black" Color="#FF000000" />
<!--Colori per EgtWPFLib5-->
<SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
<!--Colori per TabHeader-->
<LinearGradientBrush x:Key="TabItem.Static.Background" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F0F0F0" Offset="0.0"/>
<GradientStop Color="#E5E5E5" Offset="1.0"/>
</LinearGradientBrush>
<!--Risorsa che toglie le animazioni dai menù popup per evitare che i menù mru di scelta dei file rimangano aperti se il file è grosso -->
<!--o viene eseguito un lua che non aggiorna l'interfaccia-->
<PopupAnimation x:Key="{x:Static SystemParameters.MenuPopupAnimationKey}">None</PopupAnimation>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- FocusVisual standard-->
<Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- Button Style -->
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
<Style TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" CornerRadius="3" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
<Setter Property="OpacityMask" Value="#54707070"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--Template che permette di andare a capo-->
<DataTemplate x:Key="WrapButton_DataTemplate">
<TextBlock TextWrapping="WrapWithOverflow" Text="{Binding}"/>
</DataTemplate>
<Style x:Key="ToolBar_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
</Style>
<Style x:Key="ToolBar_SmallButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="20"/>
<Setter Property="Width" Value="20"/>
</Style>
<Style x:Key="ToolBar_TextButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="80"/>
</Style>
<Style x:Key="OptionPanel_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="OptionPanel_TextButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
</Style>
<Style x:Key="OptionPanel_TextWrapButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="ContentTemplate" Value="{StaticResource WrapButton_DataTemplate}" />
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="Height" Value="45"/>
</Style>
<Style x:Key="OptionPanel_NestingButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="CompoWindow_Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="40"/>
</Style>
<Style x:Key="EgtWPFLib5_InputButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="LeftPanel_SmallButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Height" Value="20"/>
<Setter Property="Width" Value="20"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- ToggleButton Style -->
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="border" CornerRadius="3" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Omag_Yellow}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
<Setter Property="OpacityMask" Value="#54707070"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ToolBar_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="30"/>
</Style>
<Style x:Key="ToolBar_TextToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="70"/>
</Style>
<Style x:Key="OptionPanel_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="30"/>
</Style>
<Style x:Key="OptionPanel_NestingToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="60"/>
<Setter Property="Width" Value="60"/>
</Style>
<Style x:Key="CompoWindow_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Height" Value="40"/>
</Style>
<Style x:Key="MainMenu_ToggleButton" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Background" Value="{StaticResource Omag_White}"/>
<Setter Property="Foreground" Value="{StaticResource Omag_DarkGray}"/>
<Setter Property="TextBlock.FontWeight" Value="Normal"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="90"/>
<Style.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter Property="TextBlock.FontWeight" Value="ExtraBold"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="Option_ColorButton" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Padding" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FFB8C3CD"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="OpacityMask" Value="#33FF0000"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" Value="#FFADB2B5"/>
<Setter Property="TextElement.Foreground" Value="#FF838383"/>
</Trigger>
</Style.Triggers>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- TextBlock -->
<Style x:Key="ToolsTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="Margin" Value="10,0,0,0"/>
</Style>
<Style x:Key="MachiningsTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="Margin" Value="10,0,0,0"/>
</Style>
<Style x:Key="MachiningsToolTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="Margin" Value="10,5,0,0"/>
</Style>
<Style x:Key="ValidationErrorTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Margin" Value="0,1"/>
</Style>
<Style x:Key="OptionTextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
<Style x:Key="PartParam_TextBlock" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- TextBox -->
<Style TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Height" Value="22"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Right"/>
<Setter Property="ExplicitUpdateSource" Value="EnterKeyPress"/>
</Style>
<Style x:Key="ToolsTextBox" TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Margin" Value="0,0,5,0"/>
</Style>
<Style x:Key="MachiningsTextBox" TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Margin" Value="0,0,0,10"/>
</Style>
<Style x:Key="MachiningsToolTextBox" TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Margin" Value="0,0,5,0"/>
</Style>
<Style x:Key="OptionTextBox" TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Margin" Value="0,0,5,0"/>
</Style>
<Style x:Key="PartParam_TextBox" TargetType="{x:Type EgtWPFLib5:EgtTextBox}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtTextBox}}">
<Setter Property="Width" Value="150"/>
<Setter Property="Margin" Value="5"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- MachGroup -->
<SolidColorBrush x:Key="ScrollBar.Static.Background" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Static.Border" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Glyph" Color="#FFFFFF"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Glyph" Color="#000000"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Glyph" Color="#BFBFBF"/>
<SolidColorBrush x:Key="ScrollBar.Static.Glyph" Color="#606060"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Background" Color="#DADADA"/>
<SolidColorBrush x:Key="ScrollBar.MouseOver.Border" Color="#DADADA"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Background" Color="#606060"/>
<SolidColorBrush x:Key="ScrollBar.Pressed.Border" Color="#606060"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Background" Color="#F0F0F0"/>
<SolidColorBrush x:Key="ScrollBar.Disabled.Border" Color="#F0F0F0"/>
<Style x:Key="CustomScrollBarButton" TargetType="{x:Type RepeatButton}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border x:Name="border" CornerRadius="3" BorderBrush="{StaticResource ScrollBar.Static.Border}" BorderThickness="1" Background="{StaticResource ScrollBar.Static.Background}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
<Setter Property="Background" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource ScrollBar.Disabled.Border}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- Border -->
<Style x:Key="DefaultBorder" TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="#D5DFE5"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="3"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="Margin" Value="1"/>
</Style>
<Style x:Key="Border" TargetType="{x:Type Border}">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
<Setter Property="CornerRadius" Value="3"/>
<Setter Property="Padding" Value="3"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- EgtCustomWindow -->
<Style TargetType="{x:Type EgtWPFLib5:EgtCustomWindow}" BasedOn="{StaticResource {x:Type EgtWPFLib5:EgtCustomWindow}}">
<Setter Property="TitleBarHeight" Value="32"/>
<Setter Property="TitleBarBrush" Value="{StaticResource Omag_LightGray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- EgtFloatingPanel -->
<Style x:Key="ToolBar_EgtFloatingPanel" TargetType="{x:Type EgtFloating:EgtFloatingPanel}" BasedOn="{StaticResource {x:Type EgtFloating:EgtFloatingPanel}}">
<Setter Property="Background" Value="{StaticResource Omag_Gray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<Style x:Key="Option_EgtFloatingPanel" TargetType="{x:Type EgtFloating:EgtFloatingPanel}" BasedOn="{StaticResource {x:Type EgtFloating:EgtFloatingPanel}}">
<Setter Property="IsToolBar" Value="False"/>
<Setter Property="TitleBarOrientation" Value="Vertical"/>
<Setter Property="Background" Value="{StaticResource Omag_Gray}"/>
<Setter Property="BorderBrush" Value="{StaticResource Omag_Gray}"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- CsvTreeViewItem DA CAMBIARE!! -->
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Checked.Fill" Color="#FF595959"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Checked.Stroke" Color="#FF262626"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Stroke" Color="#FF1BBBFA"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Fill" Color="Transparent"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Checked.Stroke" Color="#FF262626"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.MouseOver.Checked.Fill" Color="#FF595959"/>
<PathGeometry x:Key="TreeArrow" Figures="M0,0 L0,6 L6,0 z"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Fill" Color="Transparent"/>
<SolidColorBrush x:Key="TreeViewItem.TreeArrow.Static.Stroke" Color="#FF989898"/>
<Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Width" Value="16"/>
<Setter Property="Height" Value="16"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border Background="Transparent" Height="16" Padding="5,5,5,5" Width="16">
<Path x:Name="ExpandPath" Data="{StaticResource TreeArrow}" Fill="{StaticResource TreeViewItem.TreeArrow.Static.Fill}" Stroke="{StaticResource TreeViewItem.TreeArrow.Static.Stroke}">
<Path.RenderTransform>
<RotateTransform Angle="135" CenterY="3" CenterX="3"/>
</Path.RenderTransform>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="RenderTransform" TargetName="ExpandPath">
<Setter.Value>
<RotateTransform Angle="180" CenterY="3" CenterX="3"/>
</Setter.Value>
</Setter>
<Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.Static.Checked.Fill}"/>
<Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.Static.Checked.Stroke}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Stroke}"/>
<Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Fill}"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsChecked" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Checked.Stroke}"/>
<Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.MouseOver.Checked.Fill}"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CsvPartItemStyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19" Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border x:Name="ExpanderBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
</Border>
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="false">
<Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
</Trigger>
<Trigger Property="HasItems" Value="false">
<Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" TargetName="Bd" Value="Transparent"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="BorderThickness" TargetName="Bd" Value="0,1,1,1"/>
<Setter Property="Background" TargetName="ExpanderBorder" Value="Transparent"/>
<Setter Property="BorderBrush" TargetName="ExpanderBorder" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="BorderThickness" TargetName="ExpanderBorder" Value="1,1,0,1"/>
<!--<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>-->
</Trigger>
<!--<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="IsSelectionActive" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</MultiTrigger>-->
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- ComboBox -->
<Style x:Key="MachiningsComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Margin" Value="0,0,0,10"/>
</Style>
<Style x:Key="MachiningsToolComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Margin" Value="0,0,5,0"/>
</Style>
<Style x:Key="FeatureComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Height" Value="22"/>
<Setter Property="Width" Value="55"/>
</Style>
<Style x:Key="PartParam_ComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Height" Value="22"/>
<Setter Property="Width" Value="150"/>
</Style>
<Style x:Key="BtlData_ComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Height" Value="22"/>
<Setter Property="Width" Value="150"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- CheckBox -->
<Style x:Key="OptionCheckBox" TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Margin" Value="10,0,0,0"/>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
<!-- GroupBox -->
<Style x:Key="GroupBoxStyle_NoHeader" TargetType="{x:Type GroupBox}">
<Setter Property="Margin" Value="1.5,3,3,0"/>
<Setter Property="Padding" Value="5,5,0,0"/>
<Setter Property="BorderBrush" Value="#FFD5DFE5"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="6"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="6"/>
</Grid.RowDefinitions>
<Border BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" CornerRadius="4" Grid.Row="1" Grid.RowSpan="3"/>
<Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="4" CornerRadius="4" Grid.Row="1" Grid.RowSpan="3">
<!--<Border.OpacityMask>
<MultiBinding ConverterParameter="7" UpdateSourceTrigger="Default">
<MultiBinding.Converter>
<BorderGapMaskConverter/>
</MultiBinding.Converter>
<Binding ElementName="Header" Path="ActualWidth"/>
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</Border.OpacityMask>-->
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3">
<Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2"/>
</Border>
</Border>
<Border x:Name="Header" Grid.Column="1" Padding="3,1,3,0" Grid.Row="0" Grid.RowSpan="2">
<ContentPresenter ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ContentPresenter Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="1" ContentStringFormat="{TemplateBinding ContentStringFormat}" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ______________________________________________________________________________________________________________________________________________ -->
</ResourceDictionary>
+30
View File
@@ -0,0 +1,30 @@
Public Class OmagOFFICEDictionary
Public Shared ReadOnly MySceneHostVM As String = "MySceneHostVM"
#Region "Colors"
Private m_Omag_Red As SolidColorBrush = Brushes.Red
Public ReadOnly Property Omag_Red As SolidColorBrush
Get
Return m_Omag_Red
End Get
End Property
Private Shared m_Button_Static_Background As SolidColorBrush = New BrushConverter().ConvertFrom("#FFDDDDDD")
Public Shared ReadOnly Property Button_Static_Background As SolidColorBrush
Get
Return m_Button_Static_Background
End Get
End Property
Private Shared m_TabControl_Header_Background As LinearGradientBrush = Application.Current.FindResource("TabItem.Static.Background")
Public Shared ReadOnly Property TabControl_Header_Background As LinearGradientBrush
Get
Return m_TabControl_Header_Background
End Get
End Property
#End Region ' Colors
End Class
+393
View File
@@ -0,0 +1,393 @@
Imports EgtWPFLib5
Module Map
Private m_refMainWindowVM As MainWindowVM
'Private m_refMyStatusBarVM As MyStatusBarVM
''Private m_refProjManagerVM As ProjManagerVM
'Private m_refSupervisorManagerVM As SupervisorManagerVM
'Private m_refProjectVM As ProjectVM
'Private m_refMainMenuVM As MainMenuVM
'Private m_refMachinePanelVM As MachinePanelVM
'Private m_refMyMachGroupPanelVM As MyMachGroupPanelVM
'Private m_refLeftPanelVM As LeftPanelVM
Private m_refMachCommandMessagePanelVM As MachCommandMessagePanelVM
Private m_refAxesPanelVM As AxesPanelVM
'Private m_refBottomPanelVM As BottomPanelVM
''Private m_refShowBeamPanelVM As ShowBeamPanelVM
'Private m_refConfigurationPageVM As ConfigurationPageVM
'Private m_refRawPartListVM As RawPartListVM
''Private m_refWarehouseWndVM As WarehouseWndVM
''Private m_refRawPartTabVM As RawPartTabVM
''Private m_refNestingTabVM As NestingTabVM
''Private m_refMachiningTabVM As MachiningTabVM
''Private m_refSplitModeVM As SplitModeVM
''Private m_refMoveRawModeVM As MoveRawModeVM
''Private m_refSimulTabVM As SimulTabVM
Private m_refMachManaging As MachManaging
'Private m_refCALCPanelVM As CALCPanelVM
'Private m_refSupervisorMachGroupPanelVM As SupervisorMachGroupPanelVM
'Private m_refPartInRawPartListVM As PartInRawPartListVM
'Private m_refFeatureInPartInRawPartListVM As FeatureInPartInRawPartListVM
#Region "Get"
Public ReadOnly Property refMainWindowVM As MainWindowVM
Get
Return m_refMainWindowVM
End Get
End Property
'Public ReadOnly Property refMyStatusBarVM As MyStatusBarVM
' Get
' Return LibMap.refStatusBarVM
' End Get
'End Property
''Public ReadOnly Property refProjManagerVM As ProjManagerVM
'' Get
'' Return m_refProjManagerVM
'' End Get
''End Property
'Public ReadOnly Property refSupervisorManagerVM As SupervisorManagerVM
' Get
' Return m_refSupervisorManagerVM
' End Get
'End Property
'Public ReadOnly Property refProjectVM As ProjectVM
' Get
' Return m_refProjectVM
' End Get
'End Property
'Public ReadOnly Property refSceneHostVM As SceneHostVM
' Get
' Return LibMap.refSceneHostVM
' End Get
'End Property
'Public ReadOnly Property refShowPanelVM As ShowPanelVM
' Get
' Return LibMap.refShowPanelVM
' End Get
'End Property
'Public ReadOnly Property refMainMenuVM As MainMenuVM
' Get
' Return m_refMainMenuVM
' End Get
'End Property
'Public ReadOnly Property refMachinePanelVM As MachinePanelVM
' Get
' Return m_refMachinePanelVM
' End Get
'End Property
'Public ReadOnly Property refLeftPanelVM As LeftPanelVM
' Get
' Return m_refLeftPanelVM
' End Get
'End Property
'Public ReadOnly Property refMachGroupPanelVM As MyMachGroupPanelVM
' Get
' Return m_refMyMachGroupPanelVM
' End Get
'End Property
Public ReadOnly Property refMachCommandMessagePanelVM As MachCommandMessagePanelVM
Get
Return m_refMachCommandMessagePanelVM
End Get
End Property
Public ReadOnly Property refAxesPanelVM As AxesPanelVM
Get
Return m_refAxesPanelVM
End Get
End Property
'Public ReadOnly Property refCALCPanelVM As CALCPanelVM
' Get
' Return m_refCALCPanelVM
' End Get
'End Property
'Public ReadOnly Property refSupervisorMachGroupPanelVM As SupervisorMachGroupPanelVM
' Get
' Return m_refSupervisorMachGroupPanelVM
' End Get
'End Property
''Public ReadOnly Property refBottomPanelVM As BottomPanelVM
'' Get
'' Return m_refBottomPanelVM
'' End Get
''End Property
''Public ReadOnly Property refShowBeamPanelVM As ShowBeamPanelVM
'' Get
'' Return m_refShowBeamPanelVM
'' End Get
''End Property
'Public ReadOnly Property refConfigurationPageVM As ConfigurationPageVM
' Get
' Return m_refConfigurationPageVM
' End Get
'End Property
'Public ReadOnly Property refRawPartListVM As RawPartListVM
' Get
' Return m_refRawPartListVM
' End Get
'End Property
''Public ReadOnly Property refWarehouseWndVM As WarehouseWndVM
'' Get
'' Return m_refWarehouseWndVM
'' End Get
''End Property
''Public ReadOnly Property refOptionPanelVM As OptionPanelVM
'' Get
'' Return m_refOptionPanelVM
'' End Get
''End Property
''Public ReadOnly Property refRawPartTabVM As RawPartTabVM
'' Get
'' Return m_refRawPartTabVM
'' End Get
''End Property
''Public ReadOnly Property refNestingTabVM As NestingTabVM
'' Get
'' Return m_refNestingTabVM
'' End Get
''End Property
''Public ReadOnly Property refMachiningTabVM As MachiningTabVM
'' Get
'' Return m_refMachiningTabVM
'' End Get
''End Property
''Public ReadOnly Property refSplitModeVM As SplitModeVM
'' Get
'' Return m_refSplitModeVM
'' End Get
''End Property
''Public ReadOnly Property refMoveRawModeVM As MoveRawModeVM
'' Get
'' Return m_refMoveRawModeVM
'' End Get
''End Property
''Public ReadOnly Property refSimulTabVM As SimulTabVM
'' Get
'' Return m_refSimulTabVM
'' End Get
''End Property
'Public ReadOnly Property refFeatureInPartInRawPartListVM As FeatureInPartInRawPartListVM
' Get
' Return m_refFeatureInPartInRawPartListVM
' End Get
'End Property
'Public ReadOnly Property refPartInRawPartListVM As PartInRawPartListVM
' Get
' Return m_refPartInRawPartListVM
' End Get
'End Property
Public ReadOnly Property refMachManaging As MachManaging
Get
Return m_refMachManaging
End Get
End Property
#End Region ' Get
#Region "Set"
'Friend Function SetRefMyStatusBarVM(StatusBarVM As StatusBarVM) As Boolean
' LibMap.SetRefStatusBarVM(StatusBarVM)
' Return Not IsNothing(LibMap.refStatusBarVM)
'End Function
''Friend Function SetRefProjManagerVM(ProjManagerVM As ProjManagerVM) As Boolean
'' m_refProjManagerVM = ProjManagerVM
'' Return Not IsNothing(m_refProjManagerVM)
''End Function
'Friend Function SetRefSupervisorManagerVM(SupervisorManagerVM As SupervisorManagerVM) As Boolean
' m_refSupervisorManagerVM = SupervisorManagerVM
' Return Not IsNothing(m_refSupervisorManagerVM)
'End Function
'Friend Function SetRefProjectVM(ProjectVM As ProjectVM) As Boolean
' m_refProjectVM = ProjectVM
' Return Not IsNothing(m_refProjectVM)
'End Function
'Friend Function SetRefMainMenuVM(MainMenuVM As MainMenuVM) As Boolean
' m_refMainMenuVM = MainMenuVM
' Return Not IsNothing(m_refMainMenuVM)
'End Function
'Friend Function SetRefSceneHostVM(SceneHostVM As SceneHostVM) As Boolean
' LibMap.SetRefSceneHostVM(SceneHostVM)
' Return Not IsNothing(LibMap.refSceneHostVM)
'End Function
'Friend Function SetRefShowPanelVM(ShowPanelVM As ShowPanelVM) As Boolean
' LibMap.SetRefShowPanelVM(ShowPanelVM)
' Return Not IsNothing(LibMap.refShowPanelVM)
'End Function
'Friend Function SetRefMachinePanelVM(MachinePanelVM As MachinePanelVM) As Boolean
' m_refMachinePanelVM = MachinePanelVM
' Return Not IsNothing(m_refMachinePanelVM)
'End Function
'Friend Function SetRefLeftPanelVM(LeftPanelVM As LeftPanelVM) As Boolean
' m_refLeftPanelVM = LeftPanelVM
' Return Not IsNothing(m_refLeftPanelVM)
'End Function
'Friend Function SetRefMachGroupPanelVM(MachGroupPanelVM As MyMachGroupPanelVM) As Boolean
' m_refMyMachGroupPanelVM = MachGroupPanelVM
' Return Not IsNothing(m_refMyMachGroupPanelVM)
'End Function
Friend Function SetRefMachCommandMessagePanelVM(MachCommandMessagePanelVM As MachCommandMessagePanelVM) As Boolean
m_refMachCommandMessagePanelVM = MachCommandMessagePanelVM
Return Not IsNothing(m_refMachCommandMessagePanelVM)
End Function
Friend Function SetRefAxesPanelVM(AxesPanelVM As AxesPanelVM) As Boolean
m_refAxesPanelVM = AxesPanelVM
Return Not IsNothing(m_refAxesPanelVM)
End Function
'Friend Function SetRefCALCPanelVM(CALCPanelVM As CALCPanelVM) As Boolean
' m_refCALCPanelVM = CALCPanelVM
' Return Not IsNothing(m_refCALCPanelVM)
'End Function
'Friend Function SetRefSupervisorMachGroupPanelVM(SupervisorMachGroupPanelVM As SupervisorMachGroupPanelVM) As Boolean
' m_refSupervisorMachGroupPanelVM = SupervisorMachGroupPanelVM
' Return Not IsNothing(m_refSupervisorMachGroupPanelVM)
'End Function
''Friend Function SetRefBottomPanelVM(BottomPanelVM As BottomPanelVM) As Boolean
'' m_refBottomPanelVM = BottomPanelVM
'' Return Not IsNothing(m_refBottomPanelVM)
''End Function
''Friend Function SetRefShowBeamPanelVM(ShowBeamPanelVM As ShowBeamPanelVM) As Boolean
'' m_refShowBeamPanelVM = ShowBeamPanelVM
'' Return Not IsNothing(m_refShowBeamPanelVM)
''End Function
'Friend Function SetRefConfigurationPageVM(ConfigurationPageVM As ConfigurationPageVM) As Boolean
' m_refConfigurationPageVM = ConfigurationPageVM
' Return Not IsNothing(m_refConfigurationPageVM)
'End Function
'Friend Function SetRefRawPartListVM(RawPartListVM As RawPartListVM) As Boolean
' m_refRawPartListVM = RawPartListVM
' Return Not IsNothing(m_refRawPartListVM)
'End Function
''Friend Function SetRefWarehouseWndVM(WarehouseWndVM As WarehouseWndVM) As Boolean
'' m_refWarehouseWndVM = WarehouseWndVM
'' Return Not IsNothing(m_refWarehouseWndVM)
''End Function
''Friend Function SetRefOptionPanelVM(OptionPanelVM As OptionPanelVM) As Boolean
'' m_refOptionPanelVM = OptionPanelVM
'' Return Not IsNothing(m_refOptionPanelVM)
''End Function
''Friend Function SetRefRawPartTabVM(RawPartTabVM As RawPartTabVM) As Boolean
'' m_refRawPartTabVM = RawPartTabVM
'' Return Not IsNothing(m_refRawPartTabVM)
''End Function
''Friend Function SetRefNestingTabVM(NestingTabVM As NestingTabVM) As Boolean
'' m_refNestingTabVM = NestingTabVM
'' Return Not IsNothing(m_refNestingTabVM)
''End Function
''Friend Function SetRefMachiningTabVM(MachiningTabVM As MachiningTabVM) As Boolean
'' m_refMachiningTabVM = MachiningTabVM
'' Return Not IsNothing(m_refMachiningTabVM)
''End Function
''Friend Function SetRefSplitModeVM(SplitModeVM As SplitModeVM) As Boolean
'' m_refSplitModeVM = SplitModeVM
'' Return Not IsNothing(m_refSplitModeVM)
''End Function
''Friend Function SetRefMoveRawModeVM(MoveRawModeVM As MoveRawModeVM) As Boolean
'' m_refMoveRawModeVM = MoveRawModeVM
'' Return Not IsNothing(m_refMoveRawModeVM)
''End Function
''Friend Function SetRefSimulTabVM(SimulTabVM As SimulTabVM) As Boolean
'' m_refSimulTabVM = SimulTabVM
'' Return Not IsNothing(m_refSimulTabVM)
''End Function
Friend Function SetRefMachManaging(MachManaging As MachManaging) As Boolean
m_refMachManaging = MachManaging
Return Not IsNothing(m_refMachManaging)
End Function
'Friend Function SetRefFeatureInPartInRawPartListVM(FeatureInPartInRawPartListVM As FeatureInPartInRawPartListVM) As Boolean
' m_refFeatureInPartInRawPartListVM = FeatureInPartInRawPartListVM
' Return Not IsNothing(m_refFeatureInPartInRawPartListVM)
'End Function
'Friend Function SetRefPartInRawPartListVM(PartInRawPartListVM As PartInRawPartListVM) As Boolean
' m_refPartInRawPartListVM = PartInRawPartListVM
' Return Not IsNothing(m_refPartInRawPartListVM)
'End Function
#End Region ' Set
#Region "Init"
Friend Function BeginInit(MainWindowVM As MainWindowVM) As Boolean
m_refMainWindowVM = MainWindowVM
Return Not IsNothing(m_refMainWindowVM)
End Function
Friend Function EndInit() As Boolean
' Verifico se tutti i pezzi necessari sono stati caricati
'Return Not IsNothing(m_refMainWindowVM) AndAlso Not IsNothing(m_refProjectVM) AndAlso
' Not IsNothing(LibMap.refStatusBarVM) AndAlso Not IsNothing(m_refProjectManagerVM) AndAlso
' Not IsNothing(LibMap.refSceneHostVM) AndAlso Not IsNothing(LibMap.refShowPanelVM) AndAlso
' Not IsNothing(m_refVeinMatchPanelVM) AndAlso
' Not IsNothing(m_refOptionPanelVM) AndAlso Not IsNothing(m_refRawPartTabVM) AndAlso
' Not IsNothing(m_refNestingTabVM) AndAlso Not IsNothing(m_refSimulTabVM) AndAlso
' Not IsNothing(m_refMachiningTabVM) AndAlso
' LibMap.EndInit()
Return Not IsNothing(m_refMainWindowVM) AndAlso 'Not IsNothing(m_refMainMenuVM) AndAlso
Not IsNothing(m_refMachCommandMessagePanelVM) AndAlso Not IsNothing(m_refAxesPanelVM) AndAlso
LibMap.EndInit()
'Not IsNothing(LibMap.refStatusBarVM) AndAlso 'Not IsNothing(m_refProjManagerVM) AndAlso Not IsNothing(m_refProdManagerVM) AndAlso
'Not IsNothing(m_refConfigurationPageVM) AndAlso Not IsNothing(m_refFeatureInPartInRawPartListVM) AndAlso
'Not IsNothing(m_refPartInRawPartListVM) AndAlso
'Not IsNothing(LibMap.refSceneHostVM) AndAlso Not IsNothing(LibMap.refShowPanelVM) AndAlso
'Not IsNothing(m_refMachinePanelVM) AndAlso Not IsNothing(LibMap.refMachGroupPanelVM) AndAlso Not IsNothing(m_refRawPartListVM) AndAlso 'Not IsNothing(m_refWarehouseWndVM) AndAlso Not IsNothing(m_refShowBeamPanelVM) AndAlso
End Function
#End Region ' Init
End Module
+15
View File
@@ -0,0 +1,15 @@
<UserControl x:Class="VariablesListV"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200">
<DataGrid ItemsSource="{Binding VariablesList}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding sName}" Width="1*"/>
<DataGridTextColumn Header="Address" Binding="{Binding sAddress}" Width="1*"/>
<DataGridTextColumn Header="Value" Binding="{Binding sValue}" Width="1*"/>
</DataGrid.Columns>
</DataGrid>
</UserControl>
+3
View File
@@ -0,0 +1,3 @@
Public Class VariablesListV
End Class
+87
View File
@@ -0,0 +1,87 @@
Imports System.Collections.ObjectModel
Imports System.Windows.Threading
Imports EgtWPFLib5
Public Class VariablesListVM
Private m_VariablesList As New ObservableCollection(Of Variable)
Public ReadOnly Property VariablesList As ObservableCollection(Of Variable)
Get
Return m_VariablesList
End Get
End Property
Sub New()
' inizializzo tutte le variabili
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(2)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(3)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(4)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(5)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(6)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(7)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(1)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(8)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(9)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(10)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(11)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(12)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(13)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(14)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(15)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(16)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(17)))
m_VariablesList.Add(New Variable(RWVariableManager.InitVar(18)))
'm_VariablesList.Add(New Variable(RWVariableManager.InitVar(19)))
End Sub
End Class
Public Class Variable
Inherits VMBase
Private m_CommVar As CommVar
Public ReadOnly Property CommVar As CommVar
Get
Return m_CommVar
End Get
End Property
Public Property sName As String
Get
Return CommVar.sName
End Get
Set(value As String)
CommVar.sName = value
End Set
End Property
Public Property sAddress As String
Get
Return CommVar.sAddress
End Get
Set(value As String)
CommVar.sAddress = value
End Set
End Property
Public Property sValue As String
Get
Return CommVar.sValue
End Get
Set(value As String)
MachManaging.CommandList.Add(ThreadCommand.CreateCommand(CommandTypes.WRITE, Nothing, Nothing, {CommVar.sName, value}))
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Sub New(CommVar As CommVar)
m_CommVar = CommVar
AddHandler CommVar.NewValue, AddressOf CommVar_NewValue
End Sub
Private Sub CommVar_NewValue(sender As Object, e As NewValueEventArgs)
NotifyPropertyChanged(NameOf(sValue))
End Sub
End Class