From 34a93c3b4f394252df47e82972b2dc37ce8b5b34 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 22 Jul 2020 11:22:06 +0200 Subject: [PATCH] Aggiunta sorgente progetto MapoState --- StateMachine/src/M_transitions.vb | 241 ++ StateMachine/src/MapoState/MapoState.sln | 22 + .../MapoState/MapoState/Config/Mapostate.ini | 28 + .../MapoState/MapoState/FrmMain.Designer.vb | 111 + .../src/MapoState/MapoState/FrmMain.resx | 166 ++ .../src/MapoState/MapoState/FrmMain.vb | 134 + .../MapoState/Icone/strato_bianca.ico | Bin 0 -> 2238 bytes .../src/MapoState/MapoState/MapoState.vbproj | 186 ++ .../src/MapoState/MapoState/MapoState.xml | 313 +++ .../src/MapoState/MapoState/Module/General.vb | 72 + .../src/MapoState/MapoState/Module/IniRead.vb | 77 + .../MapoState/MapoState/Module/IniReader.vb | 454 ++++ .../MapoState/MapoState/Module/L_File_aux.vb | 40 + .../MapoState/Module/L_my_convert.vb | 63 + .../src/MapoState/MapoState/Module/M_files.vb | 283 ++ .../MapoState/Module/M_transitions.vb | 241 ++ .../src/MapoState/MapoState/Module/Message.vb | 36 + .../My Project/Application.Designer.vb | 38 + .../MapoState/My Project/Application.myapp | 10 + .../MapoState/My Project/AssemblyInfo.vb | 35 + .../My Project/Resources.Designer.vb | 63 + .../MapoState/My Project/Resources.resx | 117 + .../MapoState/My Project/Settings.Designer.vb | 73 + .../MapoState/My Project/Settings.settings | 7 + .../MapoState/messages/MapoState.msg | 51 + .../src/MapoState/MapoState/resource/15.csv | 2305 +++++++++++++++++ .../src/MapoState/MapoState/resource/15.rul | 101 + .../MapoState/MapoState/resource/geppo.rul | 101 + .../MapoState/ship/Config/MapoState.ini | 10 + .../MapoState/ship/Icone/strato_bianca.ico | Bin 0 -> 2238 bytes .../MapoState/ship/messages/MapoState.ing | 130 + .../MapoState/ship/messages/MapoState.ita | 130 + .../src/MapoState/MapoState/ship/ship.dat | Bin 0 -> 17960 bytes StateMachine/src/MapoState_02.zip | Bin 0 -> 177780 bytes 34 files changed, 5638 insertions(+) create mode 100644 StateMachine/src/M_transitions.vb create mode 100644 StateMachine/src/MapoState/MapoState.sln create mode 100644 StateMachine/src/MapoState/MapoState/Config/Mapostate.ini create mode 100644 StateMachine/src/MapoState/MapoState/FrmMain.Designer.vb create mode 100644 StateMachine/src/MapoState/MapoState/FrmMain.resx create mode 100644 StateMachine/src/MapoState/MapoState/FrmMain.vb create mode 100644 StateMachine/src/MapoState/MapoState/Icone/strato_bianca.ico create mode 100644 StateMachine/src/MapoState/MapoState/MapoState.vbproj create mode 100644 StateMachine/src/MapoState/MapoState/MapoState.xml create mode 100644 StateMachine/src/MapoState/MapoState/Module/General.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/IniRead.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/IniReader.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/L_File_aux.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/L_my_convert.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/M_files.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/M_transitions.vb create mode 100644 StateMachine/src/MapoState/MapoState/Module/Message.vb create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Application.Designer.vb create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Application.myapp create mode 100644 StateMachine/src/MapoState/MapoState/My Project/AssemblyInfo.vb create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Resources.Designer.vb create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Resources.resx create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Settings.Designer.vb create mode 100644 StateMachine/src/MapoState/MapoState/My Project/Settings.settings create mode 100644 StateMachine/src/MapoState/MapoState/messages/MapoState.msg create mode 100644 StateMachine/src/MapoState/MapoState/resource/15.csv create mode 100644 StateMachine/src/MapoState/MapoState/resource/15.rul create mode 100644 StateMachine/src/MapoState/MapoState/resource/geppo.rul create mode 100644 StateMachine/src/MapoState/MapoState/ship/Config/MapoState.ini create mode 100644 StateMachine/src/MapoState/MapoState/ship/Icone/strato_bianca.ico create mode 100644 StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ing create mode 100644 StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ita create mode 100644 StateMachine/src/MapoState/MapoState/ship/ship.dat create mode 100644 StateMachine/src/MapoState_02.zip diff --git a/StateMachine/src/M_transitions.vb b/StateMachine/src/M_transitions.vb new file mode 100644 index 0000000..59dbfe4 --- /dev/null +++ b/StateMachine/src/M_transitions.vb @@ -0,0 +1,241 @@ +Imports System.IO + +Module M_transitions + +#Region "variabili locali" + + Private sz_tokens As String() + + Private objWriter As StreamWriter + + Private sz_file_name As String + +#End Region + +#Region "Strutture" + +#End Region + +#Region "Lettura file regole " + + Sub Read_rule_file_transitions(ByVal sz_filename As String) + + Dim sz_TextLine As String, sz_temp As String + Dim temp_rule As Rule, b_rules_definition As Boolean + Dim n_line As Int16 + + n_line = 0 + b_rules_definition = False + + sz_file_name = sz_filename + + If System.IO.File.Exists(sz_filename) = True Then + + Dim objfile As New System.IO.StreamReader(sz_filename) + + Do While objfile.Peek() <> -1 ' finche c'è vita + + sz_TextLine = Trim(objfile.ReadLine()) + n_line = n_line + 1 + + If (Not String.IsNullOrEmpty(sz_TextLine)) Then ' linea vuota o commento ? + + If (Trim(sz_TextLine).Chars(0) <> "#") Then + + If InStr(sz_TextLine, ControlChars.Tab) > 0 Then ' sostituzione dei tab !!!! + + sz_TextLine = sz_TextLine.Replace(ControlChars.Tab, String.Empty) + + End If + + + sz_tokens = sz_TextLine.Split(New Char() {":"c}) ' splitta sui ":" + + sz_temp = Trim(UCase$(Trim(sz_tokens(0)))) ' primo campo + + Select Case sz_temp + + Case "$DEFINITIONS" + b_rules_definition = False + + Case "$NAME" + sz_state_machine_name = UCase$(Trim(sz_tokens(1))) + + Case "$IDX" + n_state_machine_index = my_CInt(Trim(sz_tokens(1))) + + Case "$N_STATES" + n_states = my_CInt(Trim(sz_tokens(1))) + + Case "$N_BITS" + n_bits = my_CInt(Trim(sz_tokens(1))) + + Case "$BIT" + Bits.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$STATE" + States.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$EVENT" + Events_to_send.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$RULES" + b_rules_definition = True + + Case "$DO" + b_rules_definition = False + + Call evaluate_transitions() + + Case Else + + If (b_rules_definition) Then + + temp_rule.state = sz_temp + temp_rule.expression = (UCase$(Trim(sz_tokens(1)))) + temp_rule.next_state = (UCase$(Trim(sz_tokens(2)))) + temp_rule.event_to_send = (UCase$(Trim(sz_tokens(3)))) + + Rules.Add(temp_rule) + + Else + MsgBox("bad keyword or no rule on line : " & sz_TextLine, MsgBoxStyle.Critical, "ERROR on line : " & n_line.ToString) + End If + + + End Select + + End If ' commento + End If ' linea vuota + + Loop + + objfile.Close() + + Else + MsgBox(Message.Msg(4), MsgBoxStyle.Critical, sz_filename) ' file non esiste + End If ' file exists + + End Sub + +#End Region + + +#Region "Evaluate" + + Private Sub evaluate_transitions() + + Dim sz_actual_state As String, sz_actual_bit As String, sz_line + + Dim i As Int16, n_input As Int16, n As Int16, n_mask As Int16, n_bit As Int16 + + + Dim b_bit(20) As Boolean, b_invert As Boolean + + FrmMain.TextBox1.Text = "" + + Call open_mac_file(Path.GetDirectoryName(sz_file_name) & "\" & Path.GetFileNameWithoutExtension(sz_file_name) & ".csv", IniRead.sz_file_init_transitions) + + ' ciclo per ogni stato + For i = 0 To n_states - 1 + + sz_actual_state = States(i) + + ' ciclo per ogni ingresso + For n_input = 0 To ((2 ^ n_bits) - 1) + + ' calcolo true false per ogni bit dell' ingresso + n_mask = 1 + For n = 0 To (n_bits - 1) + b_bit(n) = n_input And n_mask + n_mask = n_mask << 1 + Next n + + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + + ' ciclo per ogni regola + For Each act_rule As Rule In Rules + + n_bit = -1 + + ' controllo se la regola attuale vale in questo stato + If ((act_rule.state = "ALL_STATES") Or (act_rule.state = sz_actual_state)) Then + + If (act_rule.state = sz_actual_state) Then + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + + End If + + 'recupero il bit in questione + b_invert = False + + sz_actual_bit = act_rule.expression + + If InStr(sz_actual_bit, "NOT") Then ' bit negato ??? + b_invert = True + sz_actual_bit = Trim(sz_actual_bit.Replace("NOT ", "")) + End If ' bit negato + + ' cerca il nome del bit e ne trova l' indice da 0 + n_bit = Bits.FindIndex(Function(bittolo) (sz_actual_bit.Equals(bittolo))) + + If n_bit = -1 Then + + MsgBox("Bit name error - " & sz_actual_bit & vbCrLf & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state, + MsgBoxStyle.Critical, + "ERROR - bit " & n_bit.ToString & " -- " & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString) + Exit For + End If + + ' vera la espressione ? + + If (((Not b_invert) And b_bit(n_bit)) Or (b_invert And (Not b_bit(n_bit)))) Then + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo del bit " & n_bit.ToString & " - " & Bits(n_bit) + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " ------------->>scatta la regola " & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state & vbCrLf & vbCrLf + sz_line = "" + + If (States.IndexOf(act_rule.next_state) <> i) Then ' andrei allo stesso stato ? + + ' "IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato" + + sz_line = n_state_machine_index.ToString & ";" & + i.ToString & ";" & + n_input.ToString & ";" & + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & + States.IndexOf(act_rule.next_state).ToString() + + Call write_mac_file(sz_line) + + Else + sz_line = "----" & n_state_machine_index.ToString & ";" & + i.ToString & ";" & + n_input.ToString & ";" & + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & + States.IndexOf(act_rule.next_state).ToString() + 'Call write_mac_file(sz_line) + + End If ' andrei allo stesso stato + + Exit For ' esco da questo caso + + End If ' vera la espressione + + End If ' vale la regola + + Next ' ciclo per tutte le regole + + Next n_input ' ciclo per ogni ingresso + + Next i ' ciclo per ogni stato + + Call close_mac_file() + + End Sub +#End Region + +End Module + + diff --git a/StateMachine/src/MapoState/MapoState.sln b/StateMachine/src/MapoState/MapoState.sln new file mode 100644 index 0000000..0a8013d --- /dev/null +++ b/StateMachine/src/MapoState/MapoState.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MapoState", "MapoState\MapoState.vbproj", "{492396EA-9B89-4318-879A-2DD7D0DBD1DD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {492396EA-9B89-4318-879A-2DD7D0DBD1DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {492396EA-9B89-4318-879A-2DD7D0DBD1DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {492396EA-9B89-4318-879A-2DD7D0DBD1DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {492396EA-9B89-4318-879A-2DD7D0DBD1DD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/StateMachine/src/MapoState/MapoState/Config/Mapostate.ini b/StateMachine/src/MapoState/MapoState/Config/Mapostate.ini new file mode 100644 index 0000000..112075c --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Config/Mapostate.ini @@ -0,0 +1,28 @@ +[General] + +Program path = c:\Users\carlo\Documents\Projects\vs2008\MapoState\MapoState\resource +ext = + +temp path = cd c:\Users\carlo\Documents\Projects\vs2008\MapoState\MapoState\temp + +[Debug] + +debug = true +verbose = true + +[Log] +enabled = true +Log file = c:\CMS\aut_d20\temp\log + + +[RUL] +default = C:\Users\carlo\Documents\Projects\vs2008\MapoState\MapoState\Resources\15.rul + +inputs = IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato + +transitions = IdxFamigliaIngresso;IdxStato;ValoreIngresso;next_IdxStato + + + + + diff --git a/StateMachine/src/MapoState/MapoState/FrmMain.Designer.vb b/StateMachine/src/MapoState/MapoState/FrmMain.Designer.vb new file mode 100644 index 0000000..744eaeb --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/FrmMain.Designer.vb @@ -0,0 +1,111 @@ + +Partial Class FrmMain + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmMain)) + Me.TextBox1 = New System.Windows.Forms.TextBox() + Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog() + Me.CmdExit = New System.Windows.Forms.Button() + Me.Btn_level_inputs = New System.Windows.Forms.Button() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.Btn_level_transitions = New System.Windows.Forms.Button() + Me.Panel1.SuspendLayout() + Me.SuspendLayout() + ' + 'TextBox1 + ' + Me.TextBox1.Location = New System.Drawing.Point(6, 12) + Me.TextBox1.MaxLength = 1000000 + Me.TextBox1.Multiline = True + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.TextBox1.Size = New System.Drawing.Size(705, 371) + Me.TextBox1.TabIndex = 0 + ' + 'OpenFileDialog1 + ' + Me.OpenFileDialog1.FileName = "OpenFileDialog1" + ' + 'CmdExit + ' + Me.CmdExit.Location = New System.Drawing.Point(623, 3) + Me.CmdExit.Name = "CmdExit" + Me.CmdExit.Size = New System.Drawing.Size(81, 35) + Me.CmdExit.TabIndex = 18 + Me.CmdExit.Text = "Exit" + Me.CmdExit.UseVisualStyleBackColor = True + ' + 'Btn_level_inputs + ' + Me.Btn_level_inputs.Location = New System.Drawing.Point(6, 3) + Me.Btn_level_inputs.Name = "Btn_level_inputs" + Me.Btn_level_inputs.Size = New System.Drawing.Size(126, 35) + Me.Btn_level_inputs.TabIndex = 20 + Me.Btn_level_inputs.Text = "Macchina stati ingressi ( Livello 1 )" + Me.Btn_level_inputs.UseVisualStyleBackColor = True + ' + 'Panel1 + ' + Me.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.Panel1.Controls.Add(Me.Btn_level_transitions) + Me.Panel1.Controls.Add(Me.Btn_level_inputs) + Me.Panel1.Controls.Add(Me.CmdExit) + Me.Panel1.Location = New System.Drawing.Point(6, 400) + Me.Panel1.Name = "Panel1" + Me.Panel1.Size = New System.Drawing.Size(710, 43) + Me.Panel1.TabIndex = 21 + ' + 'Btn_level_transitions + ' + Me.Btn_level_transitions.Location = New System.Drawing.Point(155, 3) + Me.Btn_level_transitions.Name = "Btn_level_transitions" + Me.Btn_level_transitions.Size = New System.Drawing.Size(126, 35) + Me.Btn_level_transitions.TabIndex = 21 + Me.Btn_level_transitions.Text = "Macchina stati transiz. ( Livello 2 )" + Me.Btn_level_transitions.UseVisualStyleBackColor = True + ' + 'FrmMain + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(723, 451) + Me.Controls.Add(Me.Panel1) + Me.Controls.Add(Me.TextBox1) + Me.Cursor = System.Windows.Forms.Cursors.Default + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.Name = "FrmMain" + Me.Text = "Mapo state machine builder" + Me.Panel1.ResumeLayout(False) + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents TextBox1 As System.Windows.Forms.TextBox + Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog + Friend WithEvents CmdExit As System.Windows.Forms.Button + Friend WithEvents Btn_level_inputs As System.Windows.Forms.Button + Friend WithEvents Panel1 As System.Windows.Forms.Panel + Friend WithEvents Btn_level_transitions As Button +End Class diff --git a/StateMachine/src/MapoState/MapoState/FrmMain.resx b/StateMachine/src/MapoState/MapoState/FrmMain.resx new file mode 100644 index 0000000..517d841 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/FrmMain.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEACACoCAAAFgAAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAA + AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYAzP//AJn//wBm//8AM///AP/M + /wDMzP8Amcz/AGbM/wAzzP8AAMz/AP+Z/wDMmf8AmZn/AGaZ/wAzmf8AAJn/AP9m/wDMZv8AmWb/AGZm + /wAzZv8AAGb/AP8z/wDMM/8AmTP/AGYz/wAzM/8AADP/AMwA/wCZAP8AZgD/ADMA/wD//8wAzP/MAJn/ + zABm/8wAZv/MADP/zAAA/8wA/8zMAMzMzACZzMwAZszMADPMzAAAzMwA/5nMAMyZzACZmcwAZpnMADOZ + zAAAmcwA/2bMAMxmzACZZswAZmbMADNmzAAAZswA/zPMAMwzzACZM8wAZjPMADMzzAAAM8wA/wDMAMwA + zACZAMwAZgDMADMAzAAAAMwA//+ZAMz/mQCZ/5kAZv+ZADP/mQAA/5kA/8yZAMzMmQCZzJkAZsyZADPM + mQAAzJkA/5mZAMyZmQCZmZkAZpmZADOZmQAAmZkA/2aZAMxmmQCZZpkAZmaZADNmmQAAZpkA/zOZAMwz + mQCZM5kAZjOZADMzmQAAM5kA/wCZAMwAmQCZAJkAZgCZADMAmQAAAJkA//9mAMz/ZgCZ/2YAZv9mADP/ + ZgAA/2YA/8xmAMzMZgCZzGYAZsxmADPMZgAAzGYA/5lmAMyZZgCZmWYAZplmADOZZgAAmWYA/2ZmAMxm + ZgCZZmYAZmZmADNmZgAAZmYA/zNmAMwzZgCZM2YAZjNmADMzZgAAM2YA/wBmAMwAZgCZAGYAZgBmADMA + ZgAAAGYA//8zAMz/MwCZ/zMAZv8zADP/MwAA/zMA/8wzAMzMMwCZzDMAZswzADPMMwAAzDMA/5kzAMyZ + MwCZmTMAZpkzADOZMwAAmTMA/2YzAMxmMwCZZjMAZmYzADNmMwAAZjMA/zMzAMwzMwCZMzMAZjMzADMz + MwAAMzMA/wAzAMwAMwCZADMAZgAzADMAMwAAADMAzP8AAJn/AABm/wAAM/8AAP/MAADMzAAAmcwAAGbM + AAAzzAAAAMwAAP+ZAADMmQAAmZkAAGaZAAAzmQAAAJkAAP9mAADMZgAAmWYAAGZmAAAAZgAAM2YAAP8z + AADMMwAAmTMAAGYzAAAzMwAAADMAAMwAAACZAAAAZgAAADMAAAAAAN0AAAC7AAAAqgAAAIgAAAB3AAAA + VQAAAEQAAAAiAADdAAAAuwAAAKoAAACIAAAAdwAAAFUAAABEAAAAIgAA3d3dAFVVVQB3d3cAd3d3AERE + RAAiIiIAERERAHcAAABVAAAARAAAACIAAADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP// + AAD///8AAAAAAAAAAAAA7Ozs7Ozs7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OwAAAAAAAAA7OwAAAAA + AAAAAAAAAAAAAAAAAAAAAOwAADo6OmRkj48A7OwAAAAAAAAAAAAAAAAAAAAAAOzsADo6Ojo6ZGRkj48A + 7AAAAAAAAAAAAAAAAAAAAADsAAA6Ojr/EBAQEBAQjwDs7AAAAAAAAAAAAAAAAAAA7AAQELM6/xAQEBAQ + 7BAQEADsAAAAAAAAAAAAAAAAAOwAEBAQEP8QEBAQEPjw//8QAOwAAAAAAAAAAAAAAAAAABAQ////EBAQ + EBAQ+PgK9xAA7AAAAAAAAAAAAAAAAOwA//8KChAQEBAQEBAQ/////xAA7AAAAAAAAAAAAAAAAP8KCgoQ + EBAQEBD/7P//Cvf/EADsAAAAAAAAAAAAAAAA/woKChAQEBD/+PjsiP////cQAOzs7AAAAAAAAAAAAAD/ + CgoKEBAQ+Pjs7IgHCgr3ChCPAADs7OwAAAAAAAAAAP8KCgoQEP//7IgH/wr3/////xCPZAAA7OwAAAAA + AAAA/woKChAQ//8H//8K9/8K/////xAQOmQA7AAAAAAAAAAA/woKEBD/////Cvf/Cvf/Cv//////EADs + AAAAAAAAAAAACgoQEBAQ/////wr3/wr3////AAD/AOwAAAAAAAAAAAAA/xAQEBAQEBD/Mv8K9/8AEAAA + AAAAAAAAAAAAAAAAAAAAAAoKChAQEBD/CvcAAOGQ7OwAAAAAAAAAAAAAAAAAAAAAAAAAChAQEP//AOHh + +OGQ7AAAAAAAAAAAAAAAAAAAAAAAAAAA/xAQEP//APjh+OHs7AAAAAAAAAAAAAAAAAAAAAAAAAAA/xAQ + EBAAAPjh+ADs7AAAAAAAAAAAAAAAAAAAAAAAAAD/EBAQAOwAAPjh4QDs7AAAAAAAAAAAAAAAAAAAAAAA + AAD/EBAA7AAAAOHhiADsAAAAAAAAAAAAAAAAAAAAAAAAAAoQEI8A7AAAAIjh4ezsAAAAAAAAAAAAAAAA + AAAAAAAAAAoKCgDsAAAAAOHhAOzsAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAAAAAOHhAOzs7OwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOHhAAAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEAQUEA + 7OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhBQUEA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ABgYQUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgHAAAYGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAACIiAAAAP+A///+AD///AAf//AAH//gAA//wAAP/4AAD/+AAA//AAAH/wAAB/8AAAH/AAAAfwAA + AD8AAAA/gAAAP8AAAD/gAAZ/8AAD//wAA///gAH//8AA///AQH//4GB//+AwP//wOB//+HwD///+Af// + /wD///+A////wP///4D////h + + + \ No newline at end of file diff --git a/StateMachine/src/MapoState/MapoState/FrmMain.vb b/StateMachine/src/MapoState/MapoState/FrmMain.vb new file mode 100644 index 0000000..fdf31de --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/FrmMain.vb @@ -0,0 +1,134 @@ +Imports System.IO + +Public Class FrmMain + + + + Public sz_import_file_name As String + + + + Public Sub New() + + ' This call is required by the Windows Form Designer. + InitializeComponent() + + ' Add any initialization after the InitializeComponent() call. + + ' Call My_initialize() NO !!! dà errore di ricursione sui componenti del form !!!!!!!!!!!!!!!!!!!!!!!!! + + + End Sub + + Private Sub My_initialize() Handles Me.Load + + Call L_my_convert.Init() + + ' read ini file & init global variables + Call IniRead.Ini_read() + + ' read messages + Call Message.init() + + ' inizializzazione variabili + Call Init_Var() + + ' richiamo funzione che inizializza grafica e messaggi + Call InitAspect() + + + End Sub + + Sub Init_Var() + + sz_import_file_name = IniRead.sz_program_path & "\" + + + With OpenFileDialog1 + .Reset() + .InitialDirectory = IniRead.sz_default_rul_filename + + .AddExtension = True + + ' Check to ensure that the selected file exists. Dialog box displays + + .CheckFileExists = True + .CheckPathExists = True + .DefaultExt = "rul" + .DereferenceLinks = True + .Filter = _ + "RUL files (*.rul)|*.rul|All files|*.*" + .Multiselect = False + .RestoreDirectory = True + .ShowHelp = True + .ShowReadOnly = False + .ReadOnlyChecked = False + .Title = "Select an RUL file to open" + .ValidateNames = True + End With + + + End Sub + + Sub Ask_file() + + Try + With OpenFileDialog1 + + If .ShowDialog() = Windows.Forms.DialogResult.OK Then + ' You have a choice here. You can either use the FileName or FileNames properties to get the name + ' you selected, or you can use the OpenFile method to open the file as a read-only Stream. + ' lstFiles.DataSource = .FileNames + + sz_import_file_name = .FileName + ' You could also write code like this, to loop through the selected file names: + 'Dim strName As String + 'For Each strName In .FileNames + ' lstFiles.Items.Add(strName) + 'Next + + Else + sz_import_file_name = "" + End If + + End With + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text) + End Try + + End Sub + + + Sub ToDo() + + ' DONE + + End Sub + + Private Sub CmdExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdExit.Click + + Application.Exit() + + End Sub + + Private Sub Btn_level_inputs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_level_inputs.Click + + Call Ask_file() + + actual_level = LEVELS.LIVELLO_INGRESSI + + If sz_import_file_name <> "" Then Call M_files.Read_rule_file(sz_import_file_name) + + End Sub + + Private Sub Btn_level_transitions_Click(sender As Object, e As EventArgs) Handles Btn_level_transitions.Click + + Call Ask_file() + + actual_level = LEVELS.LIVELLO_TRANSIZIONI + + If sz_import_file_name <> "" Then Call M_transitions.Read_rule_file_transitions(sz_import_file_name) + + End Sub + +End Class diff --git a/StateMachine/src/MapoState/MapoState/Icone/strato_bianca.ico b/StateMachine/src/MapoState/MapoState/Icone/strato_bianca.ico new file mode 100644 index 0000000000000000000000000000000000000000..2d0948b34736c6bf62c7a0b1162e972dc72a682e GIT binary patch literal 2238 zcmai!yKWOf6o!u#gwZxQ4RV*r6(!;{$W0Q-ui&1-npbdxlr7zvcDfV@AzDhBt&tyr zNZEc1cUcLP!*^!Z7mO{u{&si%bD4i;*B0q(<<*^2fnTCFI{C|8W|B?b`!C?Mbk9U=r!APFz%5Fvm9g?K@S2musm z#_Z@E5dtVM0iIAGLI4FO#Sc0}2%vxwLg)}7fC2;jphJWJ3MAkM9U=r!pa?(c;70%j z8sP_b5Fvm9&GCZ{5dtVMA%4&yLI4F!P=XE-0w{2UA9RQiK!G5B(32B%4h0JE!%jhj z017n04?08$pg?2%phJWJ3QUF{bchf@0Ryx`hX?@_IN=99?Fu?qKM3H3cKNmQR}3Fa z3;tU8E8vftLVtw*xct%hWAH6!khapd&9}(6gA+0EW%&}^u3K{(KBc$wQcrbB;m~N7uz6x{%z36VDN36!wosI zv9hW5x*TrTW`}XAS!e1!XxrlPAl|SGMUlfP^RNNYE^G~{kEi0+w#|Z>e1iQw=<10! zi+)i&7K5eiXXLmUQSa_vmov}kwrLaZr^$vQ$hs~ p^89u!XVjmWl|7>vu5az(J-oTH^}7peKM;H(=>I!DqgCCt{sSz&fP?@5 literal 0 HcmV?d00001 diff --git a/StateMachine/src/MapoState/MapoState/MapoState.vbproj b/StateMachine/src/MapoState/MapoState/MapoState.vbproj new file mode 100644 index 0000000..a01bb2c --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/MapoState.vbproj @@ -0,0 +1,186 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {492396EA-9B89-4318-879A-2DD7D0DBD1DD} + WinExe + MapoState.My.MyApplication + MapoState + MapoState + 512 + WindowsForms + v3.5 + On + Binary + Off + On + + + false + + + + + 3.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + true + full + true + true + .\ + MapoState.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + + + pdbonly + false + true + true + bin\Release\ + MapoState.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + + + + + + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + Form + + + FrmMain.vb + Form + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + FrmMain.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + False + .NET Framework Client Profile + false + + + False + .NET Framework 2.0 %28x86%29 + false + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + \ No newline at end of file diff --git a/StateMachine/src/MapoState/MapoState/MapoState.xml b/StateMachine/src/MapoState/MapoState/MapoState.xml new file mode 100644 index 0000000..99b7f8e --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/MapoState.xml @@ -0,0 +1,313 @@ + + + + +MapoState + + + + + + The INIReader class can read keys from and write keys to an INI file. + + + This class uses several Win32 API functions to read from and write to INI files. It will not work on Linux or FreeBSD. + + + + + The GetPrivateProfileInt function retrieves an integer associated with a key in the specified section of an initialization file. + + Pointer to a null-terminated string specifying the name of the section in the initialization file. + Pointer to the null-terminated string specifying the name of the key whose value is to be retrieved. This value is in the form of a string; the GetPrivateProfileInt function converts the string into an integer and returns the integer. + Specifies the default value to return if the key name cannot be found in the initialization file. + Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + The return value is the integer equivalent of the string following the specified key name in the specified initialization file. If the key is not found, the return value is the specified default value. If the value of the key is less than zero, the return value is zero. + + + + The WritePrivateProfileString function copies a string into the specified section of an initialization file. + + Pointer to a null-terminated string containing the name of the section to which the string will be copied. If the section does not exist, it is created. The name of the section is case-independent; the string can be any combination of uppercase and lowercase letters. + Pointer to the null-terminated string containing the name of the key to be associated with a string. If the key does not exist in the specified section, it is created. If this parameter is NULL, the entire section, including all entries within the section, is deleted. + Pointer to a null-terminated string to be written to the file. If this parameter is NULL, the key pointed to by the lpKeyName parameter is deleted. + Pointer to a null-terminated string that specifies the name of the initialization file. + If the function successfully copies the string to the initialization file, the return value is nonzero; if the function fails, or if it flushes the cached version of the most recently accessed initialization file, the return value is zero. + + + + The GetPrivateProfileString function retrieves a string from the specified section in an initialization file. + + Pointer to a null-terminated string that specifies the name of the section containing the key name. If this parameter is NULL, the GetPrivateProfileString function copies all section names in the file to the supplied buffer. + Pointer to the null-terminated string specifying the name of the key whose associated string is to be retrieved. If this parameter is NULL, all key names in the section specified by the lpAppName parameter are copied to the buffer specified by the lpReturnedString parameter. + Pointer to a null-terminated default string. If the lpKeyName key cannot be found in the initialization file, GetPrivateProfileString copies the default string to the lpReturnedString buffer. This parameter cannot be NULL.
Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks.
+ Pointer to the buffer that receives the retrieved string. + Specifies the size, in TCHARs, of the buffer pointed to by the lpReturnedString parameter. + Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + The return value is the number of characters copied to the buffer, not including the terminating null character. +
+ + + The GetPrivateProfileSectionNames function retrieves the names of all sections in an initialization file. + + Pointer to a buffer that receives the section names associated with the named file. The buffer is filled with one or more null-terminated strings; the last string is followed by a second null character. + Specifies the size, in TCHARs, of the buffer pointed to by the lpszReturnBuffer parameter. + Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter is NULL, the function searches the Win.ini file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + The return value specifies the number of characters copied to the specified buffer, not including the terminating null character. If the buffer is not large enough to contain all the section names associated with the specified initialization file, the return value is equal to the length specified by nSize minus two. + + + + The WritePrivateProfileSection function replaces the keys and values for the specified section in an initialization file. + + Pointer to a null-terminated string specifying the name of the section in which data is written. This section name is typically the name of the calling application. + Pointer to a buffer containing the new key names and associated values that are to be written to the named section. + Pointer to a null-terminated string containing the name of the initialization file. If this parameter does not contain a full path for the file, the function searches the Windows directory for the file. If the file does not exist and lpFileName does not contain a full path, the function creates the file in the Windows directory. The function does not create a file if lpFileName contains the full path and file name of a file that does not exist. + If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
+
+ + Constructs a new IniReader instance. + Specifies the full path to the INI file (the file doesn't have to exist). + + + Gets or sets the full path to the INI file. + A String representing the full path to the INI file. + + + + Gets or sets the section you're working in. (aka 'the active section') + A String representing the section you're working in. + + + + Reads an Integer from the specified key of the specified section. + The section to search in. + The key from which to return the value. + The value to return if the specified key isn't found. + Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + + Reads an Integer from the specified key of the specified section. + The section to search in. + The key from which to return the value. + Returns the value of the specified section/key pair, or returns 0 if the specified section/key pair isn't found in the INI file. + + + Reads an Integer from the specified key of the active section. + The key from which to return the value. + The section to search in. + Returns the value of the specified Key, or returns the default value if the specified Key isn't found in the active section of the INI file. + + + Reads an Integer from the specified key of the active section. + The key from which to return the value. + Returns the value of the specified key, or returns 0 if the specified key isn't found in the active section of the INI file. + + + Reads a String from the specified key of the specified section. + The section to search in. + The key from which to return the value. + The value to return if the specified key isn't found. + Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + + Reads a String from the specified key of the specified section. + The section to search in. + The key from which to return the value. + Returns the value of the specified section/key pair, or returns an empty String if the specified section/key pair isn't found in the INI file. + + + Reads a String from the specified key of the active section. + The key from which to return the value. + Returns the value of the specified key, or returns an empty String if the specified key isn't found in the active section of the INI file. + + + Reads a Long from the specified key of the specified section. + The section to search in. + The key from which to return the value. + The value to return if the specified key isn't found. + Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + + Reads a Long from the specified key of the specified section. + The section to search in. + The key from which to return the value. + Returns the value of the specified section/key pair, or returns 0 if the specified section/key pair isn't found in the INI file. + + + Reads a Long from the specified key of the active section. + The key from which to return the value. + The section to search in. + Returns the value of the specified key, or returns the default value if the specified key isn't found in the active section of the INI file. + + + Reads a Long from the specified key of the active section. + The key from which to return the value. + Returns the value of the specified Key, or returns 0 if the specified Key isn't found in the active section of the INI file. + + + Reads a Byte array from the specified key of the specified section. + The section to search in. + The key from which to return the value. + Returns the value of the specified section/key pair, or returns null (Nothing in VB.NET) if the specified section/key pair isn't found in the INI file. + + + Reads a Byte array from the specified key of the active section. + The key from which to return the value. + Returns the value of the specified key, or returns null (Nothing in VB.NET) if the specified key pair isn't found in the active section of the INI file. + + + Reads a Boolean from the specified key of the specified section. + The section to search in. + The key from which to return the value. + The value to return if the specified key isn't found. + Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + + Reads a Boolean from the specified key of the specified section. + The section to search in. + The key from which to return the value. + Returns the value of the specified section/key pair, or returns false if the specified section/key pair isn't found in the INI file. + + + Reads a Boolean from the specified key of the specified section. + The key from which to return the value. + The value to return if the specified key isn't found. + Returns the value of the specified key pair, or returns the default value if the specified key isn't found in the active section of the INI file. + + + Reads a Boolean from the specified key of the specified section. + The key from which to return the value. + Returns the value of the specified key, or returns false if the specified key isn't found in the active section of the INI file. + + + Writes an Integer to the specified key in the specified section. + The section to write in. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes an Integer to the specified key in the active section. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a String to the specified key in the specified section. + Specifies the section to write in. + Specifies the key to write to. + Specifies the value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a String to the specified key in the active section. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Long to the specified key in the specified section. + The section to write in. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Long to the specified key in the active section. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Byte array to the specified key in the specified section. + The section to write in. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Byte array to the specified key in the active section. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Byte array to the specified key in the specified section. + The section to write in. + The key to write to. + The value to write. + An offset in value. + The number of elements of value to convert. + Returns true if the function succeeds, false otherwise. + + + Writes a Boolean to the specified key in the specified section. + The section to write in. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Writes a Boolean to the specified key in the active section. + The key to write to. + The value to write. + Returns true if the function succeeds, false otherwise. + + + Deletes a key from the specified section. + The section to delete from. + The key to delete. + Returns true if the function succeeds, false otherwise. + + + Deletes a key from the active section. + The key to delete. + Returns true if the function succeeds, false otherwise. + + + + Deletes a section from an INI file. + The section to delete. + Returns true if the function succeeds, false otherwise. + + + + Retrieves a list of all available sections in the INI file. + + + Returns an ArrayList with all available sections. + + + + + Holds the full path to the INI file. + + + + + Holds the active section name + + + + + The maximum number of bytes in a section buffer. + + + + + Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via. + + + + + Restituisce l'istanza di ResourceManager nella cache utilizzata da questa classe. + + + + + Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte le + ricerche di risorse eseguite utilizzando questa classe di risorse fortemente tipizzata. + + +
+
diff --git a/StateMachine/src/MapoState/MapoState/Module/General.vb b/StateMachine/src/MapoState/MapoState/Module/General.vb new file mode 100644 index 0000000..8b5b355 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/General.vb @@ -0,0 +1,72 @@ +Imports System.Text.RegularExpressions + +' ---------------------------------------------------------------------------------------------------------- +' Modulo utilizzato per dichiarazioni variabili globali e funzioni comuni al progetto +' ---------------------------------------------------------------------------------------------------------- + +Module General + +#Region "COSTANTI GLOBALI" + + Public Const EPSILON = 0.05 + +#End Region + +#Region "OGGETTI" + +#End Region + +#Region "STRUTTURE" + + Public Structure Rule + Public state As String + Public expression As String + Public next_state As String + Public event_to_send As String + End Structure + + Public Enum LEVELS As Short + LIVELLO_INGRESSI = 1 + LIVELLO_TRANSIZIONI = 2 + End Enum + +#End Region + +#Region "VARIABILI GLOBALI" + + Public States As New List(Of String) + Public Bits As New List(Of String) + Public Events_to_send As New List(Of String) + Public Rules As New List(Of Rule) + + Public sz_state_machine_name As String + Public n_state_machine_index As Int16 + Public n_states As Int16 + Public n_bits As Int16 + + Public actual_level As LEVELS + Public read_level As LEVELS = LEVELS.LIVELLO_INGRESSI + + +#End Region + +#Region "PROCEDURE E FUNZIONI GLOBALI" + + + ' --------------------------------------------------------------------------------------------------- + ' --------- Procedura utilizzata per Cambiare messaggi della finestra principale -------------------- + ' --------------------------------------------------------------------------------------------------- + Public Sub InitAspect() + + FrmMain.Btn_level_inputs.Text = Message.Msg(21) ' livello 1 + + FrmMain.Btn_level_transitions.Text = Message.Msg(24) ' livello 2 + + FrmMain.CmdExit.Text = Message.Msg(23) ' Exit + + + End Sub + +#End Region + +End Module diff --git a/StateMachine/src/MapoState/MapoState/Module/IniRead.vb b/StateMachine/src/MapoState/MapoState/Module/IniRead.vb new file mode 100644 index 0000000..b4ed589 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/IniRead.vb @@ -0,0 +1,77 @@ +Public Module IniRead + + Public Const OVERWRITE As Boolean = True + Public Const APPEND As Boolean = True + Public Const DO_NOT_APPEND As Boolean = False + + Public sz_program_path As String + Public sz_temporary_path As String + Public sz_allowed_extension As String + + Public b_debug As Boolean + Public b_verbose As Boolean + + Public b_offline_mode As Boolean = False + + Public b_log_enabled As Boolean + Public szLogFileName As String + + + Public lTimerInterval As Long + + Public sz_default_rul_filename As String ' default rul file + Public sz_file_init_inputs As String + Public sz_file_init_transitions As String + + + + Sub Ini_read() + + Dim ini As New IniReader(Application.StartupPath & "\config\" & Application.ProductName & ".ini") + + ini.Section = "General" '----------------------------------------------------- + + sz_program_path = clear_ending_bar(ini.ReadString("Program path")) + sz_temporary_path = clear_ending_bar(ini.ReadString("temp path")) + sz_allowed_extension = clear_starting_point(ini.ReadString(ini.Section, "ext", "").ToUpper) + + + lTimerInterval = ini.ReadLong("timer", 1000) + + b_offline_mode = ini.ReadBoolean("offline mode", False) + + + ini.Section = "Debug" '----------------------------------------------------- + + b_debug = ini.ReadBoolean("debug", False) + b_verbose = ini.ReadBoolean("verbose", False) + + ini.Section = "Log" '----------------------------------------------------- + + b_log_enabled = ini.ReadBoolean("enabled", False) + szLogFileName = ini.ReadString("Log file") + + + ini.Section = "RUL" '----------------------------------------------------- + + sz_default_rul_filename = ini.ReadString("default") + + sz_file_init_inputs = ini.ReadString("inputs") + sz_file_init_transitions = ini.ReadString("transitions") + + End Sub + + Public Function HexToStr(ByVal Data As String) As String + Dim com As String = "" + For x = 0 To Data.Length - 1 Step 2 + com &= ChrW(CInt("&H" & Data.Substring(x, 2))) + Next + Return com + End Function + +#Region "fuffa" + + +#End Region + +End Module diff --git a/StateMachine/src/MapoState/MapoState/Module/IniReader.vb b/StateMachine/src/MapoState/MapoState/Module/IniReader.vb new file mode 100644 index 0000000..e053c6e --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/IniReader.vb @@ -0,0 +1,454 @@ +' +' IniReader class + +Imports System +Imports System.Text +Imports System.Collections +Imports System.Runtime.InteropServices +Imports Microsoft.VisualBasic + + + ''' + ''' The INIReader class can read keys from and write keys to an INI file. + ''' + ''' + ''' This class uses several Win32 API functions to read from and write to INI files. It will not work on Linux or FreeBSD. + ''' + + Public Class IniReader + + ''' + ''' The GetPrivateProfileInt function retrieves an integer associated with a key in the specified section of an initialization file. + ''' + ''' Pointer to a null-terminated string specifying the name of the section in the initialization file. + ''' Pointer to the null-terminated string specifying the name of the key whose value is to be retrieved. This value is in the form of a string; the GetPrivateProfileInt function converts the string into an integer and returns the integer. + ''' Specifies the default value to return if the key name cannot be found in the initialization file. + ''' Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + ''' The return value is the integer equivalent of the string following the specified key name in the specified initialization file. If the key is not found, the return value is the specified default value. If the value of the key is less than zero, the return value is zero. + + Private Declare Ansi Function GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Integer, ByVal lpFileName As String) As Integer + + ''' + ''' The WritePrivateProfileString function copies a string into the specified section of an initialization file. + ''' + ''' Pointer to a null-terminated string containing the name of the section to which the string will be copied. If the section does not exist, it is created. The name of the section is case-independent; the string can be any combination of uppercase and lowercase letters. + ''' Pointer to the null-terminated string containing the name of the key to be associated with a string. If the key does not exist in the specified section, it is created. If this parameter is NULL, the entire section, including all entries within the section, is deleted. + ''' Pointer to a null-terminated string to be written to the file. If this parameter is NULL, the key pointed to by the lpKeyName parameter is deleted. + ''' Pointer to a null-terminated string that specifies the name of the initialization file. + ''' If the function successfully copies the string to the initialization file, the return value is nonzero; if the function fails, or if it flushes the cached version of the most recently accessed initialization file, the return value is zero. + + Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer + + ''' + ''' The GetPrivateProfileString function retrieves a string from the specified section in an initialization file. + ''' + ''' Pointer to a null-terminated string that specifies the name of the section containing the key name. If this parameter is NULL, the GetPrivateProfileString function copies all section names in the file to the supplied buffer. + ''' Pointer to the null-terminated string specifying the name of the key whose associated string is to be retrieved. If this parameter is NULL, all key names in the section specified by the lpAppName parameter are copied to the buffer specified by the lpReturnedString parameter. + ''' Pointer to a null-terminated default string. If the lpKeyName key cannot be found in the initialization file, GetPrivateProfileString copies the default string to the lpReturnedString buffer. This parameter cannot be NULL.
Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks.
+ ''' Pointer to the buffer that receives the retrieved string. + ''' Specifies the size, in TCHARs, of the buffer pointed to by the lpReturnedString parameter. + ''' Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + ''' The return value is the number of characters copied to the buffer, not including the terminating null character. + + Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer + + ''' + ''' The GetPrivateProfileSectionNames function retrieves the names of all sections in an initialization file. + ''' + ''' Pointer to a buffer that receives the section names associated with the named file. The buffer is filled with one or more null-terminated strings; the last string is followed by a second null character. + ''' Specifies the size, in TCHARs, of the buffer pointed to by the lpszReturnBuffer parameter. + ''' Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter is NULL, the function searches the Win.ini file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. + ''' The return value specifies the number of characters copied to the specified buffer, not including the terminating null character. If the buffer is not large enough to contain all the section names associated with the specified initialization file, the return value is equal to the length specified by nSize minus two. + + Private Declare Ansi Function GetPrivateProfileSectionNames Lib "kernel32" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer + + ''' + ''' The WritePrivateProfileSection function replaces the keys and values for the specified section in an initialization file. + ''' + ''' Pointer to a null-terminated string specifying the name of the section in which data is written. This section name is typically the name of the calling application. + ''' Pointer to a buffer containing the new key names and associated values that are to be written to the named section. + ''' Pointer to a null-terminated string containing the name of the initialization file. If this parameter does not contain a full path for the file, the function searches the Windows directory for the file. If the file does not exist and lpFileName does not contain a full path, the function creates the file in the Windows directory. The function does not create a file if lpFileName contains the full path and file name of a file that does not exist. + ''' If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
+ + Private Declare Ansi Function WritePrivateProfileSection Lib "kernel32.dll" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer + + ''' Constructs a new IniReader instance. + ''' Specifies the full path to the INI file (the file doesn't have to exist). + + Public Sub New(ByVal file As String) + Filename = file + End Sub + + ''' Gets or sets the full path to the INI file. + ''' A String representing the full path to the INI file. + ''' + + Public Property Filename() As String + Get + Return m_Filename + End Get + Set(ByVal Value As String) + m_Filename = Value + End Set + End Property + + ''' Gets or sets the section you're working in. (aka 'the active section') + ''' A String representing the section you're working in. + ''' + + Public Property Section() As String + Get + Return m_Section + End Get + Set(ByVal Value As String) + m_Section = Value + End Set + End Property + + ''' Reads an Integer from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' The value to return if the specified key isn't found. + ''' Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + Public Function ReadInteger(ByVal section As String, ByVal key As String, ByVal defVal As Integer) As Integer + Return GetPrivateProfileInt(section, key, defVal, Filename) + End Function + + ''' Reads an Integer from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' Returns the value of the specified section/key pair, or returns 0 if the specified section/key pair isn't found in the INI file. + + Public Function ReadInteger(ByVal section As String, ByVal key As String) As Integer + Return ReadInteger(section, key, 0) + End Function + + ''' Reads an Integer from the specified key of the active section. + ''' The key from which to return the value. + ''' The section to search in. + ''' Returns the value of the specified Key, or returns the default value if the specified Key isn't found in the active section of the INI file. + + Public Function ReadInteger(ByVal key As String, ByVal defVal As Integer) As Integer + Return ReadInteger(Section, key, defVal) + End Function + + ''' Reads an Integer from the specified key of the active section. + ''' The key from which to return the value. + ''' Returns the value of the specified key, or returns 0 if the specified key isn't found in the active section of the INI file. + + Public Function ReadInteger(ByVal key As String) As Integer + Return ReadInteger(key, 0) + End Function + + ''' Reads a String from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' The value to return if the specified key isn't found. + ''' Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + Public Function ReadString(ByVal section As String, ByVal key As String, ByVal defVal As String) As String + Dim sb As New StringBuilder(MAX_ENTRY) + Dim Ret As Integer = GetPrivateProfileString(section, key, defVal, sb, MAX_ENTRY, Filename) + Return sb.ToString() + End Function + + ''' Reads a String from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' Returns the value of the specified section/key pair, or returns an empty String if the specified section/key pair isn't found in the INI file. + + Public Function ReadString(ByVal section As String, ByVal key As String) As String + Return ReadString(section, key, "") + End Function + + ''' Reads a String from the specified key of the active section. + ''' The key from which to return the value. + ''' Returns the value of the specified key, or returns an empty String if the specified key isn't found in the active section of the INI file. + + Public Function ReadString(ByVal key As String) As String + Return ReadString(Section, key) + End Function + + ''' Reads a Long from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' The value to return if the specified key isn't found. + ''' Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + Public Function ReadLong(ByVal section As String, ByVal key As String, ByVal defVal As Long) As Long + Return Long.Parse(ReadString(section, key, defVal.ToString())) + End Function + + ''' Reads a Long from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' Returns the value of the specified section/key pair, or returns 0 if the specified section/key pair isn't found in the INI file. + + Public Function ReadLong(ByVal section As String, ByVal key As String) As Long + Return ReadLong(section, key, 0) + End Function + + ''' Reads a Long from the specified key of the active section. + ''' The key from which to return the value. + ''' The section to search in. + ''' Returns the value of the specified key, or returns the default value if the specified key isn't found in the active section of the INI file. + + Public Function ReadLong(ByVal key As String, ByVal defVal As Long) As Long + Return ReadLong(Section, key, defVal) + End Function + + ''' Reads a Long from the specified key of the active section. + ''' The key from which to return the value. + ''' Returns the value of the specified Key, or returns 0 if the specified Key isn't found in the active section of the INI file. + + Public Function ReadLong(ByVal key As String) As Long + Return ReadLong(key, 0) + End Function + + ''' Reads a Byte array from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' Returns the value of the specified section/key pair, or returns null (Nothing in VB.NET) if the specified section/key pair isn't found in the INI file. + + Public Function ReadByteArray(ByVal section As String, ByVal key As String) As Byte() + Try + Return Convert.FromBase64String(ReadString(section, key)) + Catch + End Try + Return Nothing + End Function + + ''' Reads a Byte array from the specified key of the active section. + ''' The key from which to return the value. + ''' Returns the value of the specified key, or returns null (Nothing in VB.NET) if the specified key pair isn't found in the active section of the INI file. + + Public Function ReadByteArray(ByVal key As String) As Byte() + Return ReadByteArray(Section, key) + End Function + + ''' Reads a Boolean from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' The value to return if the specified key isn't found. + ''' Returns the value of the specified section/key pair, or returns the default value if the specified section/key pair isn't found in the INI file. + + Public Function ReadBoolean(ByVal section As String, ByVal key As String, ByVal defVal As Boolean) As Boolean + + Dim b_ret As Boolean = False + + Try + b_ret = Boolean.Parse(ReadString(section, key, defVal.ToString())) + Catch + b_ret = False + End Try + Return b_ret + End Function + + ''' Reads a Boolean from the specified key of the specified section. + ''' The section to search in. + ''' The key from which to return the value. + ''' Returns the value of the specified section/key pair, or returns false if the specified section/key pair isn't found in the INI file. + + Public Function ReadBoolean(ByVal section As String, ByVal key As String) As Boolean + Return ReadBoolean(section, key, False) + End Function + + ''' Reads a Boolean from the specified key of the specified section. + ''' The key from which to return the value. + ''' The value to return if the specified key isn't found. + ''' Returns the value of the specified key pair, or returns the default value if the specified key isn't found in the active section of the INI file. + + Public Function ReadBoolean(ByVal key As String, ByVal defVal As Boolean) As Boolean + Return ReadBoolean(Section, key, defVal) + End Function + + ''' Reads a Boolean from the specified key of the specified section. + ''' The key from which to return the value. + ''' Returns the value of the specified key, or returns false if the specified key isn't found in the active section of the INI file. + + Public Function ReadBoolean(ByVal key As String) As Boolean + Return ReadBoolean(Section, key) + End Function + + ''' Writes an Integer to the specified key in the specified section. + ''' The section to write in. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value As Integer) As Boolean + Return Write(section, key, value.ToString()) + End Function + + ''' Writes an Integer to the specified key in the active section. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal key As String, ByVal value As Integer) As Boolean + Return Write(Section, key, value) + End Function + + ''' Writes a String to the specified key in the specified section. + ''' Specifies the section to write in. + ''' Specifies the key to write to. + ''' Specifies the value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value As String) As Boolean + Return (WritePrivateProfileString(section, key, value, Filename) <> 0) + End Function + + ''' Writes a String to the specified key in the active section. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal key As String, ByVal value As String) As Boolean + Return Write(Section, key, value) + End Function + + ''' Writes a Long to the specified key in the specified section. + ''' The section to write in. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value As Long) As Boolean + Return Write(section, key, value.ToString()) + End Function + + ''' Writes a Long to the specified key in the active section. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal key As String, ByVal value As Long) As Boolean + Return Write(Section, key, value) + End Function + + ''' Writes a Byte array to the specified key in the specified section. + ''' The section to write in. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value() As Byte) As Boolean + If value Is Nothing Then + Return Write(section, key, CType(Nothing, String)) + Else + Return Write(section, key, value, 0, value.Length) + End If + End Function + + ''' Writes a Byte array to the specified key in the active section. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal key As String, ByVal value() As Byte) As Boolean + Return Write(Section, key, value) + End Function + + ''' Writes a Byte array to the specified key in the specified section. + ''' The section to write in. + ''' The key to write to. + ''' The value to write. + ''' An offset in value. + ''' The number of elements of value to convert. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value() As Byte, ByVal offset As Integer, ByVal length As Integer) As Boolean + If value Is Nothing Then + Return Write(section, key, CType(Nothing, String)) + Else + Return Write(section, key, Convert.ToBase64String(value, offset, length)) + End If + End Function + + ''' Writes a Boolean to the specified key in the specified section. + ''' The section to write in. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal section As String, ByVal key As String, ByVal value As Boolean) As Boolean + Return Write(section, key, value.ToString()) + End Function + + ''' Writes a Boolean to the specified key in the active section. + ''' The key to write to. + ''' The value to write. + ''' Returns true if the function succeeds, false otherwise. + + Public Function Write(ByVal key As String, ByVal value As Boolean) As Boolean + Return Write(Section, key, value) + End Function + + ''' Deletes a key from the specified section. + ''' The section to delete from. + ''' The key to delete. + ''' Returns true if the function succeeds, false otherwise. + + Public Function DeleteKey(ByVal section As String, ByVal key As String) As Boolean + Return (WritePrivateProfileString(section, key, Nothing, Filename) <> 0) + End Function + + ''' Deletes a key from the active section. + ''' The key to delete. + ''' Returns true if the function succeeds, false otherwise. + ''' + + Public Function DeleteKey(ByVal key As String) As Boolean + Return (WritePrivateProfileString(Section, key, Nothing, Filename) <> 0) + End Function + + ''' Deletes a section from an INI file. + ''' The section to delete. + ''' Returns true if the function succeeds, false otherwise. + + Public Function DeleteSection(ByVal section As String) As Boolean + Return WritePrivateProfileSection(section, Nothing, Filename) <> 0 + End Function + + ''' + ''' Retrieves a list of all available sections in the INI file. + ''' + ''' + ''' Returns an ArrayList with all available sections. + ''' + + Public Function GetSectionNames() As ArrayList + Try + Dim buffer(MAX_ENTRY) As Byte + GetPrivateProfileSectionNames(buffer, MAX_ENTRY, Filename) + Dim parts() As String = Encoding.ASCII.GetString(buffer).Trim(ControlChars.NullChar).Split(ControlChars.NullChar) + Return New ArrayList(parts) + Catch + End Try + Return Nothing + End Function + + 'Private variables and constants + + ''' + ''' Holds the full path to the INI file. + ''' + + Private m_Filename As String + + ''' + ''' Holds the active section name + ''' + + Private m_Section As String + + ''' + ''' The maximum number of bytes in a section buffer. + ''' + + Private Const MAX_ENTRY As Integer = 32768 + + End Class + diff --git a/StateMachine/src/MapoState/MapoState/Module/L_File_aux.vb b/StateMachine/src/MapoState/MapoState/Module/L_File_aux.vb new file mode 100644 index 0000000..48d33cc --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/L_File_aux.vb @@ -0,0 +1,40 @@ +Module L_File_aux + + Function clear_ending_bar(ByVal a As String) As String ' clear the eventual ending "\" in a directory name + a = Trim(a) + If (Right$(a, 1) = "\") Then + a = Left$(a, Len(a) - 1) + End If + clear_ending_bar = a + End Function + + Function clear_starting_point(ByVal a As String) As String ' clear the eventual starting "." in a file ext + a = Trim(a) + If (Left$(a, 1) = ".") Then + a = Right$(a, Len(a) - 1) + End If + clear_starting_point = a + End Function + + Function true_false_from_yes_no(ByVal a As String) As Boolean + a = UCase$(a) + true_false_from_yes_no = False + If InStr(a, "Y") Then true_false_from_yes_no = True + If InStr(a, "S") Then true_false_from_yes_no = True + End Function + + Function clear_starting_forward_bar(ByVal a As String) As String ' clear the eventual initial "/" + a = Trim(a) + If (Left$(a, 1) = "/") Then + a = Right$(a, Len(a) - 1) + End If + clear_starting_forward_bar = a + End Function + + Function trim_to_n_char(ByVal a As String, ByVal n As Integer) As String ' clear the eventual initial "/" + a = Trim(a) + If Len(a) > n Then a = Left$(a, n) + trim_to_n_char = a + End Function + +End Module diff --git a/StateMachine/src/MapoState/MapoState/Module/L_my_convert.vb b/StateMachine/src/MapoState/MapoState/Module/L_my_convert.vb new file mode 100644 index 0000000..935e880 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/L_my_convert.vb @@ -0,0 +1,63 @@ +Module L_my_convert + + Private sz_dec_sep As String, sz_other As String, sz_a As String + + Public Sub Init() + + ' simulates a format , to read the decimal separator character + ' and keep only the first character + ' + sz_a = Format(0.1, ".#") + sz_dec_sep = Left$(sz_a, 1) + + If sz_dec_sep = "." Then + sz_other = "," + Else + sz_other = "." + End If + + End Sub + + Public Function dec_separator() As String + Return sz_dec_sep + End Function + + Public Function other_separator() As String + Return sz_other + End Function + + '--------------------------------------------------------------- + ' my_Cint : non si fa fregare da stringhe vuote + '--------------------------------------------------------------- + Public Function my_CInt(ByVal sz As String) As Integer + + If sz <> "" Then + Try + my_CInt = CInt(Trim(sz)) + Catch + my_CInt = -9998 + End Try + Else + my_CInt = -9999 + End If + + End Function + + '--------------------------------------------------------------- + ' my_CDbl : non si fa fregare da stringhe vuote + '--------------------------------------------------------------- + Public Function my_CDbl(ByVal sz As String) As Double + + If sz <> "" Then + Try + my_CDbl = CDbl(Trim(sz)) + Catch + my_CDbl = -9999998.0 + End Try + Else + my_CDbl = -9999999.0 + End If + + End Function + +End Module diff --git a/StateMachine/src/MapoState/MapoState/Module/M_files.vb b/StateMachine/src/MapoState/MapoState/Module/M_files.vb new file mode 100644 index 0000000..df487b9 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/M_files.vb @@ -0,0 +1,283 @@ +Imports System.IO + +Module M_files + +#Region "variabili locali" + + Private sz_tokens As String() + + Private objWriter As StreamWriter + + Private sz_file_name As String + +#End Region + +#Region "Strutture" + +#End Region + +#Region "Lettura file regole " + + Sub Read_rule_file(ByVal sz_filename As String) + + Dim sz_TextLine As String, sz_temp As String + Dim temp_rule As Rule, b_rules_definition As Boolean + Dim n_line As Int16 + + n_line = 0 + b_rules_definition = False + + sz_file_name = sz_filename + + If System.IO.File.Exists(sz_filename) = True Then + + Dim objfile As New System.IO.StreamReader(sz_filename) + + Do While objfile.Peek() <> -1 ' finche c'è vita + + sz_TextLine = Trim(objfile.ReadLine()) + n_line = n_line + 1 + + If (Not String.IsNullOrEmpty(sz_TextLine)) Then ' linea vuota o commento ? + + If (Trim(sz_TextLine).Chars(0) <> "#") Then + + If InStr(sz_TextLine, ControlChars.Tab) > 0 Then ' sostituzione dei tab !!!! + + sz_TextLine = sz_TextLine.Replace(ControlChars.Tab, String.Empty) + + End If + + + sz_tokens = sz_TextLine.Split(New Char() {":"c}) ' splitta sui ":" + + sz_temp = Trim(UCase$(Trim(sz_tokens(0)))) ' primo campo + + Select Case sz_temp + + Case "$DEFINITIONS" + b_rules_definition = False + + Case "$NAME" + sz_state_machine_name = UCase$(Trim(sz_tokens(1))) + + Case "$IDX" + n_state_machine_index = my_CInt(Trim(sz_tokens(1))) + + Case "$N_STATES" + n_states = my_CInt(Trim(sz_tokens(1))) + + Case "$N_BITS" + n_bits = my_CInt(Trim(sz_tokens(1))) + + Case "$BIT" + Bits.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$STATE" + States.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$EVENT" + Events_to_send.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$RULES" + b_rules_definition = True + + Case "$DO" + b_rules_definition = False + + Call evaluate() + + Case Else + + If (b_rules_definition) Then + + temp_rule.state = sz_temp + temp_rule.expression = (UCase$(Trim(sz_tokens(1)))) + temp_rule.next_state = (UCase$(Trim(sz_tokens(2)))) + temp_rule.event_to_send = (UCase$(Trim(sz_tokens(3)))) + + Rules.Add(temp_rule) + + Else + MsgBox("bad keyword or no rule on line : " & sz_TextLine, MsgBoxStyle.Critical, "ERROR on line : " & n_line.ToString) + End If + + + End Select + + End If ' commento + End If ' linea vuota + + Loop + + objfile.Close() + + Else + MsgBox(Message.Msg(4), MsgBoxStyle.Critical, sz_filename) ' file non esiste + End If ' file exists + + End Sub + +#End Region + +#Region "scrittura file Mac " + + Sub open_mac_file(ByVal sz_filename As String, sz_init As String) + + Dim sz_temp As String + + Try + + objWriter = New System.IO.StreamWriter(sz_filename) + + sz_temp = sz_init + + objWriter.WriteLine(sz_temp) + + + Catch Ex As Exception + + MsgBox(Ex.Message, MsgBoxStyle.Critical, sz_filename) ' + + End Try + + End Sub + + Sub write_mac_file(ByVal sz_line As String) + + Try + objWriter.WriteLine(sz_line) + Catch Ex As Exception + MsgBox(Ex.Message, MsgBoxStyle.Critical, " output file") ' + End Try + + End Sub + + Sub close_mac_file() + + Try + objWriter.Close() + Catch Ex As Exception + MsgBox(Ex.Message, MsgBoxStyle.Critical, " output file (close)") ' + End Try + + End Sub + +#End Region + +#Region "Evaluate" + + Private Sub evaluate() + + Dim sz_actual_state As String, sz_actual_bit As String, sz_line + + Dim i As Int16, n_input As Int16, n As Int16, n_mask As Int16, n_bit As Int16 + + + Dim b_bit(20) As Boolean, b_invert As Boolean + + FrmMain.TextBox1.Text = "" + + Call open_mac_file(Path.GetDirectoryName(sz_file_name) & "\" & Path.GetFileNameWithoutExtension(sz_file_name) & ".csv", IniRead.sz_file_init_inputs) + + ' ciclo per ogni stato + For i = 0 To n_states - 1 + + sz_actual_state = States(i) + + ' ciclo per ogni ingresso + For n_input = 0 To ((2 ^ n_bits) - 1) + + ' calcolo true false per ogni bit dell' ingresso + n_mask = 1 + For n = 0 To (n_bits - 1) + b_bit(n) = n_input And n_mask + n_mask = n_mask << 1 + Next n + + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + + ' ciclo per ogni regola + For Each act_rule As Rule In Rules + + n_bit = -1 + + ' controllo se la regola attuale vale in questo stato + If ((act_rule.state = "ALL_STATES") Or (act_rule.state = sz_actual_state)) Then + + If (act_rule.state = sz_actual_state) Then + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + + End If + + 'recupero il bit in questione + b_invert = False + + sz_actual_bit = act_rule.expression + + If InStr(sz_actual_bit, "NOT") Then ' bit negato ??? + b_invert = True + sz_actual_bit = Trim(sz_actual_bit.Replace("NOT ", "")) + End If ' bit negato + + ' cerca il nome del bit e ne trova l' indice da 0 + n_bit = Bits.FindIndex(Function(bittolo) (sz_actual_bit.Equals(bittolo))) + + If n_bit = -1 Then + + MsgBox("Bit name error - " & sz_actual_bit & vbCrLf & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state, _ + MsgBoxStyle.Critical, _ + "ERROR - bit " & n_bit.ToString & " -- " & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString) + Exit For + End If + + ' vera la espressione ? + + If (((Not b_invert) And b_bit(n_bit)) Or (b_invert And (Not b_bit(n_bit)))) Then + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo del bit " & n_bit.ToString & " - " & Bits(n_bit) + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " ------------->>scatta la regola " & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state & vbCrLf & vbCrLf + sz_line = "" + + If (States.IndexOf(act_rule.next_state) <> i) Then ' andrei allo stesso stato ? + + ' "IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato" + + sz_line = n_state_machine_index.ToString & ";" & _ + i.ToString & ";" & _ + n_input.ToString & ";" & _ + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & _ + States.IndexOf(act_rule.next_state).ToString() + + Call write_mac_file(sz_line) + + Else + sz_line = "----" & n_state_machine_index.ToString & ";" & _ + i.ToString & ";" & _ + n_input.ToString & ";" & _ + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & _ + States.IndexOf(act_rule.next_state).ToString() + 'Call write_mac_file(sz_line) + + End If ' andrei allo stesso stato + + Exit For ' esco da questo caso + + End If ' vera la espressione + + End If ' vale la regola + + Next ' ciclo per tutte le regole + + Next n_input ' ciclo per ogni ingresso + + Next i ' ciclo per ogni stato + + Call close_mac_file() + + End Sub +#End Region + +End Module diff --git a/StateMachine/src/MapoState/MapoState/Module/M_transitions.vb b/StateMachine/src/MapoState/MapoState/Module/M_transitions.vb new file mode 100644 index 0000000..59dbfe4 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/M_transitions.vb @@ -0,0 +1,241 @@ +Imports System.IO + +Module M_transitions + +#Region "variabili locali" + + Private sz_tokens As String() + + Private objWriter As StreamWriter + + Private sz_file_name As String + +#End Region + +#Region "Strutture" + +#End Region + +#Region "Lettura file regole " + + Sub Read_rule_file_transitions(ByVal sz_filename As String) + + Dim sz_TextLine As String, sz_temp As String + Dim temp_rule As Rule, b_rules_definition As Boolean + Dim n_line As Int16 + + n_line = 0 + b_rules_definition = False + + sz_file_name = sz_filename + + If System.IO.File.Exists(sz_filename) = True Then + + Dim objfile As New System.IO.StreamReader(sz_filename) + + Do While objfile.Peek() <> -1 ' finche c'è vita + + sz_TextLine = Trim(objfile.ReadLine()) + n_line = n_line + 1 + + If (Not String.IsNullOrEmpty(sz_TextLine)) Then ' linea vuota o commento ? + + If (Trim(sz_TextLine).Chars(0) <> "#") Then + + If InStr(sz_TextLine, ControlChars.Tab) > 0 Then ' sostituzione dei tab !!!! + + sz_TextLine = sz_TextLine.Replace(ControlChars.Tab, String.Empty) + + End If + + + sz_tokens = sz_TextLine.Split(New Char() {":"c}) ' splitta sui ":" + + sz_temp = Trim(UCase$(Trim(sz_tokens(0)))) ' primo campo + + Select Case sz_temp + + Case "$DEFINITIONS" + b_rules_definition = False + + Case "$NAME" + sz_state_machine_name = UCase$(Trim(sz_tokens(1))) + + Case "$IDX" + n_state_machine_index = my_CInt(Trim(sz_tokens(1))) + + Case "$N_STATES" + n_states = my_CInt(Trim(sz_tokens(1))) + + Case "$N_BITS" + n_bits = my_CInt(Trim(sz_tokens(1))) + + Case "$BIT" + Bits.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$STATE" + States.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$EVENT" + Events_to_send.Add(UCase$(Trim(sz_tokens(2)))) + + Case "$RULES" + b_rules_definition = True + + Case "$DO" + b_rules_definition = False + + Call evaluate_transitions() + + Case Else + + If (b_rules_definition) Then + + temp_rule.state = sz_temp + temp_rule.expression = (UCase$(Trim(sz_tokens(1)))) + temp_rule.next_state = (UCase$(Trim(sz_tokens(2)))) + temp_rule.event_to_send = (UCase$(Trim(sz_tokens(3)))) + + Rules.Add(temp_rule) + + Else + MsgBox("bad keyword or no rule on line : " & sz_TextLine, MsgBoxStyle.Critical, "ERROR on line : " & n_line.ToString) + End If + + + End Select + + End If ' commento + End If ' linea vuota + + Loop + + objfile.Close() + + Else + MsgBox(Message.Msg(4), MsgBoxStyle.Critical, sz_filename) ' file non esiste + End If ' file exists + + End Sub + +#End Region + + +#Region "Evaluate" + + Private Sub evaluate_transitions() + + Dim sz_actual_state As String, sz_actual_bit As String, sz_line + + Dim i As Int16, n_input As Int16, n As Int16, n_mask As Int16, n_bit As Int16 + + + Dim b_bit(20) As Boolean, b_invert As Boolean + + FrmMain.TextBox1.Text = "" + + Call open_mac_file(Path.GetDirectoryName(sz_file_name) & "\" & Path.GetFileNameWithoutExtension(sz_file_name) & ".csv", IniRead.sz_file_init_transitions) + + ' ciclo per ogni stato + For i = 0 To n_states - 1 + + sz_actual_state = States(i) + + ' ciclo per ogni ingresso + For n_input = 0 To ((2 ^ n_bits) - 1) + + ' calcolo true false per ogni bit dell' ingresso + n_mask = 1 + For n = 0 To (n_bits - 1) + b_bit(n) = n_input And n_mask + n_mask = n_mask << 1 + Next n + + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + + ' ciclo per ogni regola + For Each act_rule As Rule In Rules + + n_bit = -1 + + ' controllo se la regola attuale vale in questo stato + If ((act_rule.state = "ALL_STATES") Or (act_rule.state = sz_actual_state)) Then + + If (act_rule.state = sz_actual_state) Then + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString + FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + + End If + + 'recupero il bit in questione + b_invert = False + + sz_actual_bit = act_rule.expression + + If InStr(sz_actual_bit, "NOT") Then ' bit negato ??? + b_invert = True + sz_actual_bit = Trim(sz_actual_bit.Replace("NOT ", "")) + End If ' bit negato + + ' cerca il nome del bit e ne trova l' indice da 0 + n_bit = Bits.FindIndex(Function(bittolo) (sz_actual_bit.Equals(bittolo))) + + If n_bit = -1 Then + + MsgBox("Bit name error - " & sz_actual_bit & vbCrLf & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state, + MsgBoxStyle.Critical, + "ERROR - bit " & n_bit.ToString & " -- " & " state " & i.ToString & " - " & sz_actual_state & " --- input : " & n_input.ToString) + Exit For + End If + + ' vera la espressione ? + + If (((Not b_invert) And b_bit(n_bit)) Or (b_invert And (Not b_bit(n_bit)))) Then + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo della regola " & Rules.IndexOf(act_rule) & vbCrLf + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " parliamo del bit " & n_bit.ToString & " - " & Bits(n_bit) + ' FrmMain.TextBox1.Text = FrmMain.TextBox1.Text & " ------------->>scatta la regola " & act_rule.state & " - " & act_rule.expression & " next " & act_rule.next_state & vbCrLf & vbCrLf + sz_line = "" + + If (States.IndexOf(act_rule.next_state) <> i) Then ' andrei allo stesso stato ? + + ' "IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato" + + sz_line = n_state_machine_index.ToString & ";" & + i.ToString & ";" & + n_input.ToString & ";" & + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & + States.IndexOf(act_rule.next_state).ToString() + + Call write_mac_file(sz_line) + + Else + sz_line = "----" & n_state_machine_index.ToString & ";" & + i.ToString & ";" & + n_input.ToString & ";" & + Events_to_send.IndexOf(act_rule.event_to_send).ToString & ";" & + States.IndexOf(act_rule.next_state).ToString() + 'Call write_mac_file(sz_line) + + End If ' andrei allo stesso stato + + Exit For ' esco da questo caso + + End If ' vera la espressione + + End If ' vale la regola + + Next ' ciclo per tutte le regole + + Next n_input ' ciclo per ogni ingresso + + Next i ' ciclo per ogni stato + + Call close_mac_file() + + End Sub +#End Region + +End Module + + diff --git a/StateMachine/src/MapoState/MapoState/Module/Message.vb b/StateMachine/src/MapoState/MapoState/Module/Message.vb new file mode 100644 index 0000000..03a5ed5 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/Module/Message.vb @@ -0,0 +1,36 @@ +' +' libreria : VBlib +' file : Message +' +' funzioni : gestione messaggi +' +' copyright 2008-2018 C.Viviani +' +Imports System +Imports System.IO +Imports System.IO.File + +Public Module Message + + Public msg() As String + + Sub init() + + Dim sz_filename As String + + sz_filename = Application.StartupPath & "\messages\" & Application.ProductName & ".msg" + + If File.Exists(sz_filename) Then ' + Try + msg = System.IO.File.ReadAllLines(sz_filename) + Catch e As Exception + MsgBox(e.Message, MsgBoxStyle.Critical, "Error !") + End + End Try + Else + MsgBox(" Missing message file :" & vbCrLf & sz_filename, MsgBoxStyle.Critical, "Error 3 :") + End + End If + End Sub + +End Module diff --git a/StateMachine/src/MapoState/MapoState/My Project/Application.Designer.vb b/StateMachine/src/MapoState/MapoState/My Project/Application.Designer.vb new file mode 100644 index 0000000..6333807 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' Il codice è stato generato da uno strumento. +' Versione runtime:4.0.30319.42000 +' +' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se +' il codice viene rigenerato. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'NOTA: il file è generato automaticamente e non può essere modificato direttamente. Per apportare modifiche + ' o se vengono rilevati errori di compilazione nel file, passare a Progettazione progetti + ' (aprire le proprietà del progetto o fare doppio clic sul nodo Progetto in + ' Esplora soluzioni) e apportare le modifiche nella scheda Applicazione. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.MapoState.FrmMain + End Sub + End Class +End Namespace diff --git a/StateMachine/src/MapoState/MapoState/My Project/Application.myapp b/StateMachine/src/MapoState/MapoState/My Project/Application.myapp new file mode 100644 index 0000000..8f84d6b --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + FrmMain + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/StateMachine/src/MapoState/MapoState/My Project/AssemblyInfo.vb b/StateMachine/src/MapoState/MapoState/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..2c3e0dd --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 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 + + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' 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: +' + + + diff --git a/StateMachine/src/MapoState/MapoState/My Project/Resources.Designer.vb b/StateMachine/src/MapoState/MapoState/My Project/Resources.Designer.vb new file mode 100644 index 0000000..36a224c --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' Il codice è stato generato da uno strumento. +' Versione runtime:4.0.30319.42000 +' +' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se +' il codice viene rigenerato. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder. + 'tramite uno strumento quale ResGen o Visual Studio. + 'Per aggiungere o rimuovere un membro, modificare il file con estensione ResX ed eseguire nuovamente ResGen + 'con l'opzione /str oppure ricompilare il progetto VS. + ''' + ''' Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Restituisce l'istanza di ResourceManager nella cache utilizzata da questa classe. + ''' + _ + 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("MapoState.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte le + ''' ricerche di risorse eseguite utilizzando questa classe di risorse fortemente tipizzata. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/StateMachine/src/MapoState/MapoState/My Project/Resources.resx b/StateMachine/src/MapoState/MapoState/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/StateMachine/src/MapoState/MapoState/My Project/Settings.Designer.vb b/StateMachine/src/MapoState/MapoState/My Project/Settings.Designer.vb new file mode 100644 index 0000000..0b5e616 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' Il codice è stato generato da uno strumento. +' Versione runtime:4.0.30319.42000 +' +' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se +' il codice viene rigenerato. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + 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 "Funzionalità di salvataggio automatico My.Settings" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + 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 + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.MapoState.My.MySettings + Get + Return Global.MapoState.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/StateMachine/src/MapoState/MapoState/My Project/Settings.settings b/StateMachine/src/MapoState/MapoState/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/StateMachine/src/MapoState/MapoState/messages/MapoState.msg b/StateMachine/src/MapoState/MapoState/messages/MapoState.msg new file mode 100644 index 0000000..b241400 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/messages/MapoState.msg @@ -0,0 +1,51 @@ +(0) - Message file !!!! +(1) +(2) +Attenzione !!! +Il File Non Esiste !! +Dati non salvati : Vuoi salvarli ? +(6) +(7) +(8) +(9) +(10) +(11) +(12) +(13) +(14) +(15) +(16) +(17) +(18) +(19) +(20) +Macchina stati ingressi ( Livello 1 ) + +Esci +Macchina stati transiz. ( Livello 2 ) +(25) +(26) +(27) +(28) +(29) +(30) +(31) +(32) +(33) +(34) +(35) +(36) +(37) +(38) +(39) +(40) +(41) +(42) +(43) +(44) +(45) +(46) +(47) +(48) +(49) +(50) diff --git a/StateMachine/src/MapoState/MapoState/resource/15.csv b/StateMachine/src/MapoState/MapoState/resource/15.csv new file mode 100644 index 0000000..e98a1f0 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/resource/15.csv @@ -0,0 +1,2305 @@ +IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato +15;0;0;14;1 +15;0;1;30;9 +15;0;2;14;1 +15;0;3;30;9 +15;0;4;14;1 +15;0;5;30;9 +15;0;6;14;1 +15;0;7;30;9 +15;0;8;14;1 +15;0;9;30;9 +15;0;10;14;1 +15;0;11;30;9 +15;0;12;14;1 +15;0;13;30;9 +15;0;14;14;1 +15;0;15;30;9 +15;0;16;14;1 +15;0;17;30;9 +15;0;18;14;1 +15;0;19;30;9 +15;0;20;14;1 +15;0;21;30;9 +15;0;22;14;1 +15;0;23;30;9 +15;0;24;14;1 +15;0;25;30;9 +15;0;26;14;1 +15;0;27;30;9 +15;0;28;14;1 +15;0;29;30;9 +15;0;30;14;1 +15;0;31;30;9 +15;0;32;14;1 +15;0;33;30;9 +15;0;34;14;1 +15;0;35;30;9 +15;0;36;14;1 +15;0;37;30;9 +15;0;38;14;1 +15;0;39;30;9 +15;0;40;14;1 +15;0;41;30;9 +15;0;42;14;1 +15;0;43;30;9 +15;0;44;14;1 +15;0;45;30;9 +15;0;46;14;1 +15;0;47;30;9 +15;0;48;14;1 +15;0;49;30;9 +15;0;50;14;1 +15;0;51;30;9 +15;0;52;14;1 +15;0;53;30;9 +15;0;54;14;1 +15;0;55;30;9 +15;0;56;14;1 +15;0;57;30;9 +15;0;58;14;1 +15;0;59;30;9 +15;0;60;14;1 +15;0;61;30;9 +15;0;62;14;1 +15;0;63;30;9 +15;0;64;14;1 +15;0;65;30;9 +15;0;66;14;1 +15;0;67;30;9 +15;0;68;14;1 +15;0;69;30;9 +15;0;70;14;1 +15;0;71;30;9 +15;0;72;14;1 +15;0;73;30;9 +15;0;74;14;1 +15;0;75;30;9 +15;0;76;14;1 +15;0;77;30;9 +15;0;78;14;1 +15;0;79;30;9 +15;0;80;14;1 +15;0;81;30;9 +15;0;82;14;1 +15;0;83;30;9 +15;0;84;14;1 +15;0;85;30;9 +15;0;86;14;1 +15;0;87;30;9 +15;0;88;14;1 +15;0;89;30;9 +15;0;90;14;1 +15;0;91;30;9 +15;0;92;14;1 +15;0;93;30;9 +15;0;94;14;1 +15;0;95;30;9 +15;0;96;14;1 +15;0;97;30;9 +15;0;98;14;1 +15;0;99;30;9 +15;0;100;14;1 +15;0;101;30;9 +15;0;102;14;1 +15;0;103;30;9 +15;0;104;14;1 +15;0;105;30;9 +15;0;106;14;1 +15;0;107;30;9 +15;0;108;14;1 +15;0;109;30;9 +15;0;110;14;1 +15;0;111;30;9 +15;0;112;14;1 +15;0;113;30;9 +15;0;114;14;1 +15;0;115;30;9 +15;0;116;14;1 +15;0;117;30;9 +15;0;118;14;1 +15;0;119;30;9 +15;0;120;14;1 +15;0;121;30;9 +15;0;122;14;1 +15;0;123;30;9 +15;0;124;14;1 +15;0;125;30;9 +15;0;126;14;1 +15;0;127;30;9 +15;0;128;14;1 +15;0;129;15;2 +15;0;130;14;1 +15;0;131;16;3 +15;0;132;14;1 +15;0;133;22;4 +15;0;134;14;1 +15;0;135;22;4 +15;0;136;14;1 +15;0;137;18;5 +15;0;138;14;1 +15;0;139;18;5 +15;0;140;14;1 +15;0;141;18;5 +15;0;142;14;1 +15;0;143;18;5 +15;0;144;14;1 +15;0;145;24;6 +15;0;146;14;1 +15;0;147;24;6 +15;0;148;14;1 +15;0;149;24;6 +15;0;150;14;1 +15;0;151;24;6 +15;0;152;14;1 +15;0;153;24;6 +15;0;154;14;1 +15;0;155;24;6 +15;0;156;14;1 +15;0;157;24;6 +15;0;158;14;1 +15;0;159;24;6 +15;0;160;14;1 +15;0;161;25;7 +15;0;162;14;1 +15;0;163;25;7 +15;0;164;14;1 +15;0;165;25;7 +15;0;166;14;1 +15;0;167;25;7 +15;0;168;14;1 +15;0;169;25;7 +15;0;170;14;1 +15;0;171;25;7 +15;0;172;14;1 +15;0;173;25;7 +15;0;174;14;1 +15;0;175;25;7 +15;0;176;14;1 +15;0;177;24;6 +15;0;178;14;1 +15;0;179;24;6 +15;0;180;14;1 +15;0;181;24;6 +15;0;182;14;1 +15;0;183;24;6 +15;0;184;14;1 +15;0;185;24;6 +15;0;186;14;1 +15;0;187;24;6 +15;0;188;14;1 +15;0;189;24;6 +15;0;190;14;1 +15;0;191;24;6 +15;0;192;14;1 +15;0;193;15;2 +15;0;194;14;1 +15;0;195;16;3 +15;0;196;14;1 +15;0;197;22;4 +15;0;198;14;1 +15;0;199;22;4 +15;0;200;14;1 +15;0;201;18;5 +15;0;202;14;1 +15;0;203;18;5 +15;0;204;14;1 +15;0;205;18;5 +15;0;206;14;1 +15;0;207;18;5 +15;0;208;14;1 +15;0;209;24;6 +15;0;210;14;1 +15;0;211;24;6 +15;0;212;14;1 +15;0;213;24;6 +15;0;214;14;1 +15;0;215;24;6 +15;0;216;14;1 +15;0;217;24;6 +15;0;218;14;1 +15;0;219;24;6 +15;0;220;14;1 +15;0;221;24;6 +15;0;222;14;1 +15;0;223;24;6 +15;0;224;14;1 +15;0;225;25;7 +15;0;226;14;1 +15;0;227;25;7 +15;0;228;14;1 +15;0;229;25;7 +15;0;230;14;1 +15;0;231;25;7 +15;0;232;14;1 +15;0;233;25;7 +15;0;234;14;1 +15;0;235;25;7 +15;0;236;14;1 +15;0;237;25;7 +15;0;238;14;1 +15;0;239;25;7 +15;0;240;14;1 +15;0;241;24;6 +15;0;242;14;1 +15;0;243;24;6 +15;0;244;14;1 +15;0;245;24;6 +15;0;246;14;1 +15;0;247;24;6 +15;0;248;14;1 +15;0;249;24;6 +15;0;250;14;1 +15;0;251;24;6 +15;0;252;14;1 +15;0;253;24;6 +15;0;254;14;1 +15;0;255;24;6 +15;1;1;30;9 +15;1;3;30;9 +15;1;5;30;9 +15;1;7;30;9 +15;1;9;30;9 +15;1;11;30;9 +15;1;13;30;9 +15;1;15;30;9 +15;1;17;30;9 +15;1;19;30;9 +15;1;21;30;9 +15;1;23;30;9 +15;1;25;30;9 +15;1;27;30;9 +15;1;29;30;9 +15;1;31;30;9 +15;1;33;30;9 +15;1;35;30;9 +15;1;37;30;9 +15;1;39;30;9 +15;1;41;30;9 +15;1;43;30;9 +15;1;45;30;9 +15;1;47;30;9 +15;1;49;30;9 +15;1;51;30;9 +15;1;53;30;9 +15;1;55;30;9 +15;1;57;30;9 +15;1;59;30;9 +15;1;61;30;9 +15;1;63;30;9 +15;1;65;30;9 +15;1;67;30;9 +15;1;69;30;9 +15;1;71;30;9 +15;1;73;30;9 +15;1;75;30;9 +15;1;77;30;9 +15;1;79;30;9 +15;1;81;30;9 +15;1;83;30;9 +15;1;85;30;9 +15;1;87;30;9 +15;1;89;30;9 +15;1;91;30;9 +15;1;93;30;9 +15;1;95;30;9 +15;1;97;30;9 +15;1;99;30;9 +15;1;101;30;9 +15;1;103;30;9 +15;1;105;30;9 +15;1;107;30;9 +15;1;109;30;9 +15;1;111;30;9 +15;1;113;30;9 +15;1;115;30;9 +15;1;117;30;9 +15;1;119;30;9 +15;1;121;30;9 +15;1;123;30;9 +15;1;125;30;9 +15;1;127;30;9 +15;1;129;15;2 +15;1;131;16;3 +15;1;133;22;4 +15;1;135;22;4 +15;1;137;18;5 +15;1;139;18;5 +15;1;141;18;5 +15;1;143;18;5 +15;1;145;24;6 +15;1;147;24;6 +15;1;149;24;6 +15;1;151;24;6 +15;1;153;24;6 +15;1;155;24;6 +15;1;157;24;6 +15;1;159;24;6 +15;1;161;25;7 +15;1;163;25;7 +15;1;165;25;7 +15;1;167;25;7 +15;1;169;25;7 +15;1;171;25;7 +15;1;173;25;7 +15;1;175;25;7 +15;1;177;24;6 +15;1;179;24;6 +15;1;181;24;6 +15;1;183;24;6 +15;1;185;24;6 +15;1;187;24;6 +15;1;189;24;6 +15;1;191;24;6 +15;1;193;15;2 +15;1;195;16;3 +15;1;197;22;4 +15;1;199;22;4 +15;1;201;18;5 +15;1;203;18;5 +15;1;205;18;5 +15;1;207;18;5 +15;1;209;24;6 +15;1;211;24;6 +15;1;213;24;6 +15;1;215;24;6 +15;1;217;24;6 +15;1;219;24;6 +15;1;221;24;6 +15;1;223;24;6 +15;1;225;25;7 +15;1;227;25;7 +15;1;229;25;7 +15;1;231;25;7 +15;1;233;25;7 +15;1;235;25;7 +15;1;237;25;7 +15;1;239;25;7 +15;1;241;24;6 +15;1;243;24;6 +15;1;245;24;6 +15;1;247;24;6 +15;1;249;24;6 +15;1;251;24;6 +15;1;253;24;6 +15;1;255;24;6 +15;2;0;14;1 +15;2;1;30;9 +15;2;2;14;1 +15;2;3;30;9 +15;2;4;14;1 +15;2;5;30;9 +15;2;6;14;1 +15;2;7;30;9 +15;2;8;14;1 +15;2;9;30;9 +15;2;10;14;1 +15;2;11;30;9 +15;2;12;14;1 +15;2;13;30;9 +15;2;14;14;1 +15;2;15;30;9 +15;2;16;14;1 +15;2;17;30;9 +15;2;18;14;1 +15;2;19;30;9 +15;2;20;14;1 +15;2;21;30;9 +15;2;22;14;1 +15;2;23;30;9 +15;2;24;14;1 +15;2;25;30;9 +15;2;26;14;1 +15;2;27;30;9 +15;2;28;14;1 +15;2;29;30;9 +15;2;30;14;1 +15;2;31;30;9 +15;2;32;14;1 +15;2;33;30;9 +15;2;34;14;1 +15;2;35;30;9 +15;2;36;14;1 +15;2;37;30;9 +15;2;38;14;1 +15;2;39;30;9 +15;2;40;14;1 +15;2;41;30;9 +15;2;42;14;1 +15;2;43;30;9 +15;2;44;14;1 +15;2;45;30;9 +15;2;46;14;1 +15;2;47;30;9 +15;2;48;14;1 +15;2;49;30;9 +15;2;50;14;1 +15;2;51;30;9 +15;2;52;14;1 +15;2;53;30;9 +15;2;54;14;1 +15;2;55;30;9 +15;2;56;14;1 +15;2;57;30;9 +15;2;58;14;1 +15;2;59;30;9 +15;2;60;14;1 +15;2;61;30;9 +15;2;62;14;1 +15;2;63;30;9 +15;2;64;14;1 +15;2;65;30;9 +15;2;66;14;1 +15;2;67;30;9 +15;2;68;14;1 +15;2;69;30;9 +15;2;70;14;1 +15;2;71;30;9 +15;2;72;14;1 +15;2;73;30;9 +15;2;74;14;1 +15;2;75;30;9 +15;2;76;14;1 +15;2;77;30;9 +15;2;78;14;1 +15;2;79;30;9 +15;2;80;14;1 +15;2;81;30;9 +15;2;82;14;1 +15;2;83;30;9 +15;2;84;14;1 +15;2;85;30;9 +15;2;86;14;1 +15;2;87;30;9 +15;2;88;14;1 +15;2;89;30;9 +15;2;90;14;1 +15;2;91;30;9 +15;2;92;14;1 +15;2;93;30;9 +15;2;94;14;1 +15;2;95;30;9 +15;2;96;14;1 +15;2;97;30;9 +15;2;98;14;1 +15;2;99;30;9 +15;2;100;14;1 +15;2;101;30;9 +15;2;102;14;1 +15;2;103;30;9 +15;2;104;14;1 +15;2;105;30;9 +15;2;106;14;1 +15;2;107;30;9 +15;2;108;14;1 +15;2;109;30;9 +15;2;110;14;1 +15;2;111;30;9 +15;2;112;14;1 +15;2;113;30;9 +15;2;114;14;1 +15;2;115;30;9 +15;2;116;14;1 +15;2;117;30;9 +15;2;118;14;1 +15;2;119;30;9 +15;2;120;14;1 +15;2;121;30;9 +15;2;122;14;1 +15;2;123;30;9 +15;2;124;14;1 +15;2;125;30;9 +15;2;126;14;1 +15;2;127;30;9 +15;2;128;14;1 +15;2;130;14;1 +15;2;131;16;3 +15;2;132;14;1 +15;2;133;22;4 +15;2;134;14;1 +15;2;135;22;4 +15;2;136;14;1 +15;2;137;18;5 +15;2;138;14;1 +15;2;139;18;5 +15;2;140;14;1 +15;2;141;18;5 +15;2;142;14;1 +15;2;143;18;5 +15;2;144;14;1 +15;2;145;24;6 +15;2;146;14;1 +15;2;147;24;6 +15;2;148;14;1 +15;2;149;24;6 +15;2;150;14;1 +15;2;151;24;6 +15;2;152;14;1 +15;2;153;24;6 +15;2;154;14;1 +15;2;155;24;6 +15;2;156;14;1 +15;2;157;24;6 +15;2;158;14;1 +15;2;159;24;6 +15;2;160;14;1 +15;2;161;25;7 +15;2;162;14;1 +15;2;163;25;7 +15;2;164;14;1 +15;2;165;25;7 +15;2;166;14;1 +15;2;167;25;7 +15;2;168;14;1 +15;2;169;25;7 +15;2;170;14;1 +15;2;171;25;7 +15;2;172;14;1 +15;2;173;25;7 +15;2;174;14;1 +15;2;175;25;7 +15;2;176;14;1 +15;2;177;24;6 +15;2;178;14;1 +15;2;179;24;6 +15;2;180;14;1 +15;2;181;24;6 +15;2;182;14;1 +15;2;183;24;6 +15;2;184;14;1 +15;2;185;24;6 +15;2;186;14;1 +15;2;187;24;6 +15;2;188;14;1 +15;2;189;24;6 +15;2;190;14;1 +15;2;191;24;6 +15;2;192;14;1 +15;2;194;14;1 +15;2;195;16;3 +15;2;196;14;1 +15;2;197;22;4 +15;2;198;14;1 +15;2;199;22;4 +15;2;200;14;1 +15;2;201;18;5 +15;2;202;14;1 +15;2;203;18;5 +15;2;204;14;1 +15;2;205;18;5 +15;2;206;14;1 +15;2;207;18;5 +15;2;208;14;1 +15;2;209;24;6 +15;2;210;14;1 +15;2;211;24;6 +15;2;212;14;1 +15;2;213;24;6 +15;2;214;14;1 +15;2;215;24;6 +15;2;216;14;1 +15;2;217;24;6 +15;2;218;14;1 +15;2;219;24;6 +15;2;220;14;1 +15;2;221;24;6 +15;2;222;14;1 +15;2;223;24;6 +15;2;224;14;1 +15;2;225;25;7 +15;2;226;14;1 +15;2;227;25;7 +15;2;228;14;1 +15;2;229;25;7 +15;2;230;14;1 +15;2;231;25;7 +15;2;232;14;1 +15;2;233;25;7 +15;2;234;14;1 +15;2;235;25;7 +15;2;236;14;1 +15;2;237;25;7 +15;2;238;14;1 +15;2;239;25;7 +15;2;240;14;1 +15;2;241;24;6 +15;2;242;14;1 +15;2;243;24;6 +15;2;244;14;1 +15;2;245;24;6 +15;2;246;14;1 +15;2;247;24;6 +15;2;248;14;1 +15;2;249;24;6 +15;2;250;14;1 +15;2;251;24;6 +15;2;252;14;1 +15;2;253;24;6 +15;2;254;14;1 +15;2;255;24;6 +15;3;0;14;1 +15;3;1;30;9 +15;3;2;14;1 +15;3;3;30;9 +15;3;4;14;1 +15;3;5;30;9 +15;3;6;14;1 +15;3;7;30;9 +15;3;8;14;1 +15;3;9;30;9 +15;3;10;14;1 +15;3;11;30;9 +15;3;12;14;1 +15;3;13;30;9 +15;3;14;14;1 +15;3;15;30;9 +15;3;16;14;1 +15;3;17;30;9 +15;3;18;14;1 +15;3;19;30;9 +15;3;20;14;1 +15;3;21;30;9 +15;3;22;14;1 +15;3;23;30;9 +15;3;24;14;1 +15;3;25;30;9 +15;3;26;14;1 +15;3;27;30;9 +15;3;28;14;1 +15;3;29;30;9 +15;3;30;14;1 +15;3;31;30;9 +15;3;32;14;1 +15;3;33;30;9 +15;3;34;14;1 +15;3;35;30;9 +15;3;36;14;1 +15;3;37;30;9 +15;3;38;14;1 +15;3;39;30;9 +15;3;40;14;1 +15;3;41;30;9 +15;3;42;14;1 +15;3;43;30;9 +15;3;44;14;1 +15;3;45;30;9 +15;3;46;14;1 +15;3;47;30;9 +15;3;48;14;1 +15;3;49;30;9 +15;3;50;14;1 +15;3;51;30;9 +15;3;52;14;1 +15;3;53;30;9 +15;3;54;14;1 +15;3;55;30;9 +15;3;56;14;1 +15;3;57;30;9 +15;3;58;14;1 +15;3;59;30;9 +15;3;60;14;1 +15;3;61;30;9 +15;3;62;14;1 +15;3;63;30;9 +15;3;64;14;1 +15;3;65;30;9 +15;3;66;14;1 +15;3;67;30;9 +15;3;68;14;1 +15;3;69;30;9 +15;3;70;14;1 +15;3;71;30;9 +15;3;72;14;1 +15;3;73;30;9 +15;3;74;14;1 +15;3;75;30;9 +15;3;76;14;1 +15;3;77;30;9 +15;3;78;14;1 +15;3;79;30;9 +15;3;80;14;1 +15;3;81;30;9 +15;3;82;14;1 +15;3;83;30;9 +15;3;84;14;1 +15;3;85;30;9 +15;3;86;14;1 +15;3;87;30;9 +15;3;88;14;1 +15;3;89;30;9 +15;3;90;14;1 +15;3;91;30;9 +15;3;92;14;1 +15;3;93;30;9 +15;3;94;14;1 +15;3;95;30;9 +15;3;96;14;1 +15;3;97;30;9 +15;3;98;14;1 +15;3;99;30;9 +15;3;100;14;1 +15;3;101;30;9 +15;3;102;14;1 +15;3;103;30;9 +15;3;104;14;1 +15;3;105;30;9 +15;3;106;14;1 +15;3;107;30;9 +15;3;108;14;1 +15;3;109;30;9 +15;3;110;14;1 +15;3;111;30;9 +15;3;112;14;1 +15;3;113;30;9 +15;3;114;14;1 +15;3;115;30;9 +15;3;116;14;1 +15;3;117;30;9 +15;3;118;14;1 +15;3;119;30;9 +15;3;120;14;1 +15;3;121;30;9 +15;3;122;14;1 +15;3;123;30;9 +15;3;124;14;1 +15;3;125;30;9 +15;3;126;14;1 +15;3;127;30;9 +15;3;128;14;1 +15;3;129;15;2 +15;3;130;14;1 +15;3;132;14;1 +15;3;133;22;4 +15;3;134;14;1 +15;3;135;22;4 +15;3;136;14;1 +15;3;137;18;5 +15;3;138;14;1 +15;3;139;18;5 +15;3;140;14;1 +15;3;141;18;5 +15;3;142;14;1 +15;3;143;18;5 +15;3;144;14;1 +15;3;145;24;6 +15;3;146;14;1 +15;3;147;24;6 +15;3;148;14;1 +15;3;149;24;6 +15;3;150;14;1 +15;3;151;24;6 +15;3;152;14;1 +15;3;153;24;6 +15;3;154;14;1 +15;3;155;24;6 +15;3;156;14;1 +15;3;157;24;6 +15;3;158;14;1 +15;3;159;24;6 +15;3;160;14;1 +15;3;161;25;7 +15;3;162;14;1 +15;3;163;25;7 +15;3;164;14;1 +15;3;165;25;7 +15;3;166;14;1 +15;3;167;25;7 +15;3;168;14;1 +15;3;169;25;7 +15;3;170;14;1 +15;3;171;25;7 +15;3;172;14;1 +15;3;173;25;7 +15;3;174;14;1 +15;3;175;25;7 +15;3;176;14;1 +15;3;177;24;6 +15;3;178;14;1 +15;3;179;24;6 +15;3;180;14;1 +15;3;181;24;6 +15;3;182;14;1 +15;3;183;24;6 +15;3;184;14;1 +15;3;185;24;6 +15;3;186;14;1 +15;3;187;24;6 +15;3;188;14;1 +15;3;189;24;6 +15;3;190;14;1 +15;3;191;24;6 +15;3;192;14;1 +15;3;193;15;2 +15;3;194;14;1 +15;3;196;14;1 +15;3;197;22;4 +15;3;198;14;1 +15;3;199;22;4 +15;3;200;14;1 +15;3;201;18;5 +15;3;202;14;1 +15;3;203;18;5 +15;3;204;14;1 +15;3;205;18;5 +15;3;206;14;1 +15;3;207;18;5 +15;3;208;14;1 +15;3;209;24;6 +15;3;210;14;1 +15;3;211;24;6 +15;3;212;14;1 +15;3;213;24;6 +15;3;214;14;1 +15;3;215;24;6 +15;3;216;14;1 +15;3;217;24;6 +15;3;218;14;1 +15;3;219;24;6 +15;3;220;14;1 +15;3;221;24;6 +15;3;222;14;1 +15;3;223;24;6 +15;3;224;14;1 +15;3;225;25;7 +15;3;226;14;1 +15;3;227;25;7 +15;3;228;14;1 +15;3;229;25;7 +15;3;230;14;1 +15;3;231;25;7 +15;3;232;14;1 +15;3;233;25;7 +15;3;234;14;1 +15;3;235;25;7 +15;3;236;14;1 +15;3;237;25;7 +15;3;238;14;1 +15;3;239;25;7 +15;3;240;14;1 +15;3;241;24;6 +15;3;242;14;1 +15;3;243;24;6 +15;3;244;14;1 +15;3;245;24;6 +15;3;246;14;1 +15;3;247;24;6 +15;3;248;14;1 +15;3;249;24;6 +15;3;250;14;1 +15;3;251;24;6 +15;3;252;14;1 +15;3;253;24;6 +15;3;254;14;1 +15;3;255;24;6 +15;4;0;14;1 +15;4;1;30;9 +15;4;2;14;1 +15;4;3;30;9 +15;4;4;14;1 +15;4;5;30;9 +15;4;6;14;1 +15;4;7;30;9 +15;4;8;14;1 +15;4;9;30;9 +15;4;10;14;1 +15;4;11;30;9 +15;4;12;14;1 +15;4;13;30;9 +15;4;14;14;1 +15;4;15;30;9 +15;4;16;14;1 +15;4;17;30;9 +15;4;18;14;1 +15;4;19;30;9 +15;4;20;14;1 +15;4;21;30;9 +15;4;22;14;1 +15;4;23;30;9 +15;4;24;14;1 +15;4;25;30;9 +15;4;26;14;1 +15;4;27;30;9 +15;4;28;14;1 +15;4;29;30;9 +15;4;30;14;1 +15;4;31;30;9 +15;4;32;14;1 +15;4;33;30;9 +15;4;34;14;1 +15;4;35;30;9 +15;4;36;14;1 +15;4;37;30;9 +15;4;38;14;1 +15;4;39;30;9 +15;4;40;14;1 +15;4;41;30;9 +15;4;42;14;1 +15;4;43;30;9 +15;4;44;14;1 +15;4;45;30;9 +15;4;46;14;1 +15;4;47;30;9 +15;4;48;14;1 +15;4;49;30;9 +15;4;50;14;1 +15;4;51;30;9 +15;4;52;14;1 +15;4;53;30;9 +15;4;54;14;1 +15;4;55;30;9 +15;4;56;14;1 +15;4;57;30;9 +15;4;58;14;1 +15;4;59;30;9 +15;4;60;14;1 +15;4;61;30;9 +15;4;62;14;1 +15;4;63;30;9 +15;4;64;14;1 +15;4;65;30;9 +15;4;66;14;1 +15;4;67;30;9 +15;4;68;14;1 +15;4;69;30;9 +15;4;70;14;1 +15;4;71;30;9 +15;4;72;14;1 +15;4;73;30;9 +15;4;74;14;1 +15;4;75;30;9 +15;4;76;14;1 +15;4;77;30;9 +15;4;78;14;1 +15;4;79;30;9 +15;4;80;14;1 +15;4;81;30;9 +15;4;82;14;1 +15;4;83;30;9 +15;4;84;14;1 +15;4;85;30;9 +15;4;86;14;1 +15;4;87;30;9 +15;4;88;14;1 +15;4;89;30;9 +15;4;90;14;1 +15;4;91;30;9 +15;4;92;14;1 +15;4;93;30;9 +15;4;94;14;1 +15;4;95;30;9 +15;4;96;14;1 +15;4;97;30;9 +15;4;98;14;1 +15;4;99;30;9 +15;4;100;14;1 +15;4;101;30;9 +15;4;102;14;1 +15;4;103;30;9 +15;4;104;14;1 +15;4;105;30;9 +15;4;106;14;1 +15;4;107;30;9 +15;4;108;14;1 +15;4;109;30;9 +15;4;110;14;1 +15;4;111;30;9 +15;4;112;14;1 +15;4;113;30;9 +15;4;114;14;1 +15;4;115;30;9 +15;4;116;14;1 +15;4;117;30;9 +15;4;118;14;1 +15;4;119;30;9 +15;4;120;14;1 +15;4;121;30;9 +15;4;122;14;1 +15;4;123;30;9 +15;4;124;14;1 +15;4;125;30;9 +15;4;126;14;1 +15;4;127;30;9 +15;4;128;14;1 +15;4;129;15;2 +15;4;130;14;1 +15;4;131;16;3 +15;4;132;14;1 +15;4;134;14;1 +15;4;136;14;1 +15;4;137;18;5 +15;4;138;14;1 +15;4;139;18;5 +15;4;140;14;1 +15;4;141;18;5 +15;4;142;14;1 +15;4;143;18;5 +15;4;144;14;1 +15;4;145;24;6 +15;4;146;14;1 +15;4;147;24;6 +15;4;148;14;1 +15;4;149;24;6 +15;4;150;14;1 +15;4;151;24;6 +15;4;152;14;1 +15;4;153;24;6 +15;4;154;14;1 +15;4;155;24;6 +15;4;156;14;1 +15;4;157;24;6 +15;4;158;14;1 +15;4;159;24;6 +15;4;160;14;1 +15;4;161;25;7 +15;4;162;14;1 +15;4;163;25;7 +15;4;164;14;1 +15;4;165;25;7 +15;4;166;14;1 +15;4;167;25;7 +15;4;168;14;1 +15;4;169;25;7 +15;4;170;14;1 +15;4;171;25;7 +15;4;172;14;1 +15;4;173;25;7 +15;4;174;14;1 +15;4;175;25;7 +15;4;176;14;1 +15;4;177;24;6 +15;4;178;14;1 +15;4;179;24;6 +15;4;180;14;1 +15;4;181;24;6 +15;4;182;14;1 +15;4;183;24;6 +15;4;184;14;1 +15;4;185;24;6 +15;4;186;14;1 +15;4;187;24;6 +15;4;188;14;1 +15;4;189;24;6 +15;4;190;14;1 +15;4;191;24;6 +15;4;192;14;1 +15;4;193;15;2 +15;4;194;14;1 +15;4;195;16;3 +15;4;196;14;1 +15;4;198;14;1 +15;4;200;14;1 +15;4;201;18;5 +15;4;202;14;1 +15;4;203;18;5 +15;4;204;14;1 +15;4;205;18;5 +15;4;206;14;1 +15;4;207;18;5 +15;4;208;14;1 +15;4;209;24;6 +15;4;210;14;1 +15;4;211;24;6 +15;4;212;14;1 +15;4;213;24;6 +15;4;214;14;1 +15;4;215;24;6 +15;4;216;14;1 +15;4;217;24;6 +15;4;218;14;1 +15;4;219;24;6 +15;4;220;14;1 +15;4;221;24;6 +15;4;222;14;1 +15;4;223;24;6 +15;4;224;14;1 +15;4;225;25;7 +15;4;226;14;1 +15;4;227;25;7 +15;4;228;14;1 +15;4;229;25;7 +15;4;230;14;1 +15;4;231;25;7 +15;4;232;14;1 +15;4;233;25;7 +15;4;234;14;1 +15;4;235;25;7 +15;4;236;14;1 +15;4;237;25;7 +15;4;238;14;1 +15;4;239;25;7 +15;4;240;14;1 +15;4;241;24;6 +15;4;242;14;1 +15;4;243;24;6 +15;4;244;14;1 +15;4;245;24;6 +15;4;246;14;1 +15;4;247;24;6 +15;4;248;14;1 +15;4;249;24;6 +15;4;250;14;1 +15;4;251;24;6 +15;4;252;14;1 +15;4;253;24;6 +15;4;254;14;1 +15;4;255;24;6 +15;5;0;14;1 +15;5;1;30;9 +15;5;2;14;1 +15;5;3;30;9 +15;5;4;14;1 +15;5;5;30;9 +15;5;6;14;1 +15;5;7;30;9 +15;5;8;14;1 +15;5;9;30;9 +15;5;10;14;1 +15;5;11;30;9 +15;5;12;14;1 +15;5;13;30;9 +15;5;14;14;1 +15;5;15;30;9 +15;5;16;14;1 +15;5;17;30;9 +15;5;18;14;1 +15;5;19;30;9 +15;5;20;14;1 +15;5;21;30;9 +15;5;22;14;1 +15;5;23;30;9 +15;5;24;14;1 +15;5;25;30;9 +15;5;26;14;1 +15;5;27;30;9 +15;5;28;14;1 +15;5;29;30;9 +15;5;30;14;1 +15;5;31;30;9 +15;5;32;14;1 +15;5;33;30;9 +15;5;34;14;1 +15;5;35;30;9 +15;5;36;14;1 +15;5;37;30;9 +15;5;38;14;1 +15;5;39;30;9 +15;5;40;14;1 +15;5;41;30;9 +15;5;42;14;1 +15;5;43;30;9 +15;5;44;14;1 +15;5;45;30;9 +15;5;46;14;1 +15;5;47;30;9 +15;5;48;14;1 +15;5;49;30;9 +15;5;50;14;1 +15;5;51;30;9 +15;5;52;14;1 +15;5;53;30;9 +15;5;54;14;1 +15;5;55;30;9 +15;5;56;14;1 +15;5;57;30;9 +15;5;58;14;1 +15;5;59;30;9 +15;5;60;14;1 +15;5;61;30;9 +15;5;62;14;1 +15;5;63;30;9 +15;5;64;14;1 +15;5;65;30;9 +15;5;66;14;1 +15;5;67;30;9 +15;5;68;14;1 +15;5;69;30;9 +15;5;70;14;1 +15;5;71;30;9 +15;5;72;14;1 +15;5;73;30;9 +15;5;74;14;1 +15;5;75;30;9 +15;5;76;14;1 +15;5;77;30;9 +15;5;78;14;1 +15;5;79;30;9 +15;5;80;14;1 +15;5;81;30;9 +15;5;82;14;1 +15;5;83;30;9 +15;5;84;14;1 +15;5;85;30;9 +15;5;86;14;1 +15;5;87;30;9 +15;5;88;14;1 +15;5;89;30;9 +15;5;90;14;1 +15;5;91;30;9 +15;5;92;14;1 +15;5;93;30;9 +15;5;94;14;1 +15;5;95;30;9 +15;5;96;14;1 +15;5;97;30;9 +15;5;98;14;1 +15;5;99;30;9 +15;5;100;14;1 +15;5;101;30;9 +15;5;102;14;1 +15;5;103;30;9 +15;5;104;14;1 +15;5;105;30;9 +15;5;106;14;1 +15;5;107;30;9 +15;5;108;14;1 +15;5;109;30;9 +15;5;110;14;1 +15;5;111;30;9 +15;5;112;14;1 +15;5;113;30;9 +15;5;114;14;1 +15;5;115;30;9 +15;5;116;14;1 +15;5;117;30;9 +15;5;118;14;1 +15;5;119;30;9 +15;5;120;14;1 +15;5;121;30;9 +15;5;122;14;1 +15;5;123;30;9 +15;5;124;14;1 +15;5;125;30;9 +15;5;126;14;1 +15;5;127;30;9 +15;5;128;14;1 +15;5;129;15;2 +15;5;130;14;1 +15;5;131;16;3 +15;5;132;14;1 +15;5;133;22;4 +15;5;134;14;1 +15;5;135;22;4 +15;5;136;14;1 +15;5;138;14;1 +15;5;140;14;1 +15;5;142;14;1 +15;5;144;14;1 +15;5;145;24;6 +15;5;146;14;1 +15;5;147;24;6 +15;5;148;14;1 +15;5;149;24;6 +15;5;150;14;1 +15;5;151;24;6 +15;5;152;14;1 +15;5;153;24;6 +15;5;154;14;1 +15;5;155;24;6 +15;5;156;14;1 +15;5;157;24;6 +15;5;158;14;1 +15;5;159;24;6 +15;5;160;14;1 +15;5;161;25;7 +15;5;162;14;1 +15;5;163;25;7 +15;5;164;14;1 +15;5;165;25;7 +15;5;166;14;1 +15;5;167;25;7 +15;5;168;14;1 +15;5;169;25;7 +15;5;170;14;1 +15;5;171;25;7 +15;5;172;14;1 +15;5;173;25;7 +15;5;174;14;1 +15;5;175;25;7 +15;5;176;14;1 +15;5;177;24;6 +15;5;178;14;1 +15;5;179;24;6 +15;5;180;14;1 +15;5;181;24;6 +15;5;182;14;1 +15;5;183;24;6 +15;5;184;14;1 +15;5;185;24;6 +15;5;186;14;1 +15;5;187;24;6 +15;5;188;14;1 +15;5;189;24;6 +15;5;190;14;1 +15;5;191;24;6 +15;5;192;14;1 +15;5;193;15;2 +15;5;194;14;1 +15;5;195;16;3 +15;5;196;14;1 +15;5;197;22;4 +15;5;198;14;1 +15;5;199;22;4 +15;5;200;14;1 +15;5;202;14;1 +15;5;204;14;1 +15;5;206;14;1 +15;5;208;14;1 +15;5;209;24;6 +15;5;210;14;1 +15;5;211;24;6 +15;5;212;14;1 +15;5;213;24;6 +15;5;214;14;1 +15;5;215;24;6 +15;5;216;14;1 +15;5;217;24;6 +15;5;218;14;1 +15;5;219;24;6 +15;5;220;14;1 +15;5;221;24;6 +15;5;222;14;1 +15;5;223;24;6 +15;5;224;14;1 +15;5;225;25;7 +15;5;226;14;1 +15;5;227;25;7 +15;5;228;14;1 +15;5;229;25;7 +15;5;230;14;1 +15;5;231;25;7 +15;5;232;14;1 +15;5;233;25;7 +15;5;234;14;1 +15;5;235;25;7 +15;5;236;14;1 +15;5;237;25;7 +15;5;238;14;1 +15;5;239;25;7 +15;5;240;14;1 +15;5;241;24;6 +15;5;242;14;1 +15;5;243;24;6 +15;5;244;14;1 +15;5;245;24;6 +15;5;246;14;1 +15;5;247;24;6 +15;5;248;14;1 +15;5;249;24;6 +15;5;250;14;1 +15;5;251;24;6 +15;5;252;14;1 +15;5;253;24;6 +15;5;254;14;1 +15;5;255;24;6 +15;6;0;14;1 +15;6;1;30;9 +15;6;2;14;1 +15;6;3;30;9 +15;6;4;14;1 +15;6;5;30;9 +15;6;6;14;1 +15;6;7;30;9 +15;6;8;14;1 +15;6;9;30;9 +15;6;10;14;1 +15;6;11;30;9 +15;6;12;14;1 +15;6;13;30;9 +15;6;14;14;1 +15;6;15;30;9 +15;6;16;14;1 +15;6;17;30;9 +15;6;18;14;1 +15;6;19;30;9 +15;6;20;14;1 +15;6;21;30;9 +15;6;22;14;1 +15;6;23;30;9 +15;6;24;14;1 +15;6;25;30;9 +15;6;26;14;1 +15;6;27;30;9 +15;6;28;14;1 +15;6;29;30;9 +15;6;30;14;1 +15;6;31;30;9 +15;6;32;14;1 +15;6;33;30;9 +15;6;34;14;1 +15;6;35;30;9 +15;6;36;14;1 +15;6;37;30;9 +15;6;38;14;1 +15;6;39;30;9 +15;6;40;14;1 +15;6;41;30;9 +15;6;42;14;1 +15;6;43;30;9 +15;6;44;14;1 +15;6;45;30;9 +15;6;46;14;1 +15;6;47;30;9 +15;6;48;14;1 +15;6;49;30;9 +15;6;50;14;1 +15;6;51;30;9 +15;6;52;14;1 +15;6;53;30;9 +15;6;54;14;1 +15;6;55;30;9 +15;6;56;14;1 +15;6;57;30;9 +15;6;58;14;1 +15;6;59;30;9 +15;6;60;14;1 +15;6;61;30;9 +15;6;62;14;1 +15;6;63;30;9 +15;6;64;14;1 +15;6;65;30;9 +15;6;66;14;1 +15;6;67;30;9 +15;6;68;14;1 +15;6;69;30;9 +15;6;70;14;1 +15;6;71;30;9 +15;6;72;14;1 +15;6;73;30;9 +15;6;74;14;1 +15;6;75;30;9 +15;6;76;14;1 +15;6;77;30;9 +15;6;78;14;1 +15;6;79;30;9 +15;6;80;14;1 +15;6;81;30;9 +15;6;82;14;1 +15;6;83;30;9 +15;6;84;14;1 +15;6;85;30;9 +15;6;86;14;1 +15;6;87;30;9 +15;6;88;14;1 +15;6;89;30;9 +15;6;90;14;1 +15;6;91;30;9 +15;6;92;14;1 +15;6;93;30;9 +15;6;94;14;1 +15;6;95;30;9 +15;6;96;14;1 +15;6;97;30;9 +15;6;98;14;1 +15;6;99;30;9 +15;6;100;14;1 +15;6;101;30;9 +15;6;102;14;1 +15;6;103;30;9 +15;6;104;14;1 +15;6;105;30;9 +15;6;106;14;1 +15;6;107;30;9 +15;6;108;14;1 +15;6;109;30;9 +15;6;110;14;1 +15;6;111;30;9 +15;6;112;14;1 +15;6;113;30;9 +15;6;114;14;1 +15;6;115;30;9 +15;6;116;14;1 +15;6;117;30;9 +15;6;118;14;1 +15;6;119;30;9 +15;6;120;14;1 +15;6;121;30;9 +15;6;122;14;1 +15;6;123;30;9 +15;6;124;14;1 +15;6;125;30;9 +15;6;126;14;1 +15;6;127;30;9 +15;6;128;14;1 +15;6;129;15;2 +15;6;130;14;1 +15;6;131;16;3 +15;6;132;14;1 +15;6;133;22;4 +15;6;134;14;1 +15;6;135;22;4 +15;6;136;14;1 +15;6;137;18;5 +15;6;138;14;1 +15;6;139;18;5 +15;6;140;14;1 +15;6;141;18;5 +15;6;142;14;1 +15;6;143;18;5 +15;6;144;14;1 +15;6;146;14;1 +15;6;148;14;1 +15;6;150;14;1 +15;6;152;14;1 +15;6;154;14;1 +15;6;156;14;1 +15;6;158;14;1 +15;6;160;14;1 +15;6;161;25;7 +15;6;162;14;1 +15;6;163;25;7 +15;6;164;14;1 +15;6;165;25;7 +15;6;166;14;1 +15;6;167;25;7 +15;6;168;14;1 +15;6;169;25;7 +15;6;170;14;1 +15;6;171;25;7 +15;6;172;14;1 +15;6;173;25;7 +15;6;174;14;1 +15;6;175;25;7 +15;6;176;14;1 +15;6;178;14;1 +15;6;180;14;1 +15;6;182;14;1 +15;6;184;14;1 +15;6;186;14;1 +15;6;188;14;1 +15;6;190;14;1 +15;6;192;14;1 +15;6;193;15;2 +15;6;194;14;1 +15;6;195;16;3 +15;6;196;14;1 +15;6;197;22;4 +15;6;198;14;1 +15;6;199;22;4 +15;6;200;14;1 +15;6;201;18;5 +15;6;202;14;1 +15;6;203;18;5 +15;6;204;14;1 +15;6;205;18;5 +15;6;206;14;1 +15;6;207;18;5 +15;6;208;14;1 +15;6;210;14;1 +15;6;212;14;1 +15;6;214;14;1 +15;6;216;14;1 +15;6;218;14;1 +15;6;220;14;1 +15;6;222;14;1 +15;6;224;14;1 +15;6;225;25;7 +15;6;226;14;1 +15;6;227;25;7 +15;6;228;14;1 +15;6;229;25;7 +15;6;230;14;1 +15;6;231;25;7 +15;6;232;14;1 +15;6;233;25;7 +15;6;234;14;1 +15;6;235;25;7 +15;6;236;14;1 +15;6;237;25;7 +15;6;238;14;1 +15;6;239;25;7 +15;6;240;14;1 +15;6;242;14;1 +15;6;244;14;1 +15;6;246;14;1 +15;6;248;14;1 +15;6;250;14;1 +15;6;252;14;1 +15;6;254;14;1 +15;7;0;14;1 +15;7;1;30;9 +15;7;2;14;1 +15;7;3;30;9 +15;7;4;14;1 +15;7;5;30;9 +15;7;6;14;1 +15;7;7;30;9 +15;7;8;14;1 +15;7;9;30;9 +15;7;10;14;1 +15;7;11;30;9 +15;7;12;14;1 +15;7;13;30;9 +15;7;14;14;1 +15;7;15;30;9 +15;7;16;14;1 +15;7;17;30;9 +15;7;18;14;1 +15;7;19;30;9 +15;7;20;14;1 +15;7;21;30;9 +15;7;22;14;1 +15;7;23;30;9 +15;7;24;14;1 +15;7;25;30;9 +15;7;26;14;1 +15;7;27;30;9 +15;7;28;14;1 +15;7;29;30;9 +15;7;30;14;1 +15;7;31;30;9 +15;7;32;14;1 +15;7;33;30;9 +15;7;34;14;1 +15;7;35;30;9 +15;7;36;14;1 +15;7;37;30;9 +15;7;38;14;1 +15;7;39;30;9 +15;7;40;14;1 +15;7;41;30;9 +15;7;42;14;1 +15;7;43;30;9 +15;7;44;14;1 +15;7;45;30;9 +15;7;46;14;1 +15;7;47;30;9 +15;7;48;14;1 +15;7;49;30;9 +15;7;50;14;1 +15;7;51;30;9 +15;7;52;14;1 +15;7;53;30;9 +15;7;54;14;1 +15;7;55;30;9 +15;7;56;14;1 +15;7;57;30;9 +15;7;58;14;1 +15;7;59;30;9 +15;7;60;14;1 +15;7;61;30;9 +15;7;62;14;1 +15;7;63;30;9 +15;7;64;14;1 +15;7;65;30;9 +15;7;66;14;1 +15;7;67;30;9 +15;7;68;14;1 +15;7;69;30;9 +15;7;70;14;1 +15;7;71;30;9 +15;7;72;14;1 +15;7;73;30;9 +15;7;74;14;1 +15;7;75;30;9 +15;7;76;14;1 +15;7;77;30;9 +15;7;78;14;1 +15;7;79;30;9 +15;7;80;14;1 +15;7;81;30;9 +15;7;82;14;1 +15;7;83;30;9 +15;7;84;14;1 +15;7;85;30;9 +15;7;86;14;1 +15;7;87;30;9 +15;7;88;14;1 +15;7;89;30;9 +15;7;90;14;1 +15;7;91;30;9 +15;7;92;14;1 +15;7;93;30;9 +15;7;94;14;1 +15;7;95;30;9 +15;7;96;14;1 +15;7;97;30;9 +15;7;98;14;1 +15;7;99;30;9 +15;7;100;14;1 +15;7;101;30;9 +15;7;102;14;1 +15;7;103;30;9 +15;7;104;14;1 +15;7;105;30;9 +15;7;106;14;1 +15;7;107;30;9 +15;7;108;14;1 +15;7;109;30;9 +15;7;110;14;1 +15;7;111;30;9 +15;7;112;14;1 +15;7;113;30;9 +15;7;114;14;1 +15;7;115;30;9 +15;7;116;14;1 +15;7;117;30;9 +15;7;118;14;1 +15;7;119;30;9 +15;7;120;14;1 +15;7;121;30;9 +15;7;122;14;1 +15;7;123;30;9 +15;7;124;14;1 +15;7;125;30;9 +15;7;126;14;1 +15;7;127;30;9 +15;7;128;14;1 +15;7;129;15;2 +15;7;130;14;1 +15;7;131;16;3 +15;7;132;14;1 +15;7;133;22;4 +15;7;134;14;1 +15;7;135;22;4 +15;7;136;14;1 +15;7;137;18;5 +15;7;138;14;1 +15;7;139;18;5 +15;7;140;14;1 +15;7;141;18;5 +15;7;142;14;1 +15;7;143;18;5 +15;7;144;14;1 +15;7;145;24;6 +15;7;146;14;1 +15;7;147;24;6 +15;7;148;14;1 +15;7;149;24;6 +15;7;150;14;1 +15;7;151;24;6 +15;7;152;14;1 +15;7;153;24;6 +15;7;154;14;1 +15;7;155;24;6 +15;7;156;14;1 +15;7;157;24;6 +15;7;158;14;1 +15;7;159;24;6 +15;7;160;14;1 +15;7;162;14;1 +15;7;164;14;1 +15;7;166;14;1 +15;7;168;14;1 +15;7;170;14;1 +15;7;172;14;1 +15;7;174;14;1 +15;7;176;14;1 +15;7;177;24;6 +15;7;178;14;1 +15;7;179;24;6 +15;7;180;14;1 +15;7;181;24;6 +15;7;182;14;1 +15;7;183;24;6 +15;7;184;14;1 +15;7;185;24;6 +15;7;186;14;1 +15;7;187;24;6 +15;7;188;14;1 +15;7;189;24;6 +15;7;190;14;1 +15;7;191;24;6 +15;7;192;14;1 +15;7;193;15;2 +15;7;194;14;1 +15;7;195;16;3 +15;7;196;14;1 +15;7;197;22;4 +15;7;198;14;1 +15;7;199;22;4 +15;7;200;14;1 +15;7;201;18;5 +15;7;202;14;1 +15;7;203;18;5 +15;7;204;14;1 +15;7;205;18;5 +15;7;206;14;1 +15;7;207;18;5 +15;7;208;14;1 +15;7;209;24;6 +15;7;210;14;1 +15;7;211;24;6 +15;7;212;14;1 +15;7;213;24;6 +15;7;214;14;1 +15;7;215;24;6 +15;7;216;14;1 +15;7;217;24;6 +15;7;218;14;1 +15;7;219;24;6 +15;7;220;14;1 +15;7;221;24;6 +15;7;222;14;1 +15;7;223;24;6 +15;7;224;14;1 +15;7;226;14;1 +15;7;228;14;1 +15;7;230;14;1 +15;7;232;14;1 +15;7;234;14;1 +15;7;236;14;1 +15;7;238;14;1 +15;7;240;14;1 +15;7;241;24;6 +15;7;242;14;1 +15;7;243;24;6 +15;7;244;14;1 +15;7;245;24;6 +15;7;246;14;1 +15;7;247;24;6 +15;7;248;14;1 +15;7;249;24;6 +15;7;250;14;1 +15;7;251;24;6 +15;7;252;14;1 +15;7;253;24;6 +15;7;254;14;1 +15;7;255;24;6 +15;8;0;14;1 +15;8;1;30;9 +15;8;2;14;1 +15;8;3;30;9 +15;8;4;14;1 +15;8;5;30;9 +15;8;6;14;1 +15;8;7;30;9 +15;8;8;14;1 +15;8;9;30;9 +15;8;10;14;1 +15;8;11;30;9 +15;8;12;14;1 +15;8;13;30;9 +15;8;14;14;1 +15;8;15;30;9 +15;8;16;14;1 +15;8;17;30;9 +15;8;18;14;1 +15;8;19;30;9 +15;8;20;14;1 +15;8;21;30;9 +15;8;22;14;1 +15;8;23;30;9 +15;8;24;14;1 +15;8;25;30;9 +15;8;26;14;1 +15;8;27;30;9 +15;8;28;14;1 +15;8;29;30;9 +15;8;30;14;1 +15;8;31;30;9 +15;8;32;14;1 +15;8;33;30;9 +15;8;34;14;1 +15;8;35;30;9 +15;8;36;14;1 +15;8;37;30;9 +15;8;38;14;1 +15;8;39;30;9 +15;8;40;14;1 +15;8;41;30;9 +15;8;42;14;1 +15;8;43;30;9 +15;8;44;14;1 +15;8;45;30;9 +15;8;46;14;1 +15;8;47;30;9 +15;8;48;14;1 +15;8;49;30;9 +15;8;50;14;1 +15;8;51;30;9 +15;8;52;14;1 +15;8;53;30;9 +15;8;54;14;1 +15;8;55;30;9 +15;8;56;14;1 +15;8;57;30;9 +15;8;58;14;1 +15;8;59;30;9 +15;8;60;14;1 +15;8;61;30;9 +15;8;62;14;1 +15;8;63;30;9 +15;8;64;14;1 +15;8;65;30;9 +15;8;66;14;1 +15;8;67;30;9 +15;8;68;14;1 +15;8;69;30;9 +15;8;70;14;1 +15;8;71;30;9 +15;8;72;14;1 +15;8;73;30;9 +15;8;74;14;1 +15;8;75;30;9 +15;8;76;14;1 +15;8;77;30;9 +15;8;78;14;1 +15;8;79;30;9 +15;8;80;14;1 +15;8;81;30;9 +15;8;82;14;1 +15;8;83;30;9 +15;8;84;14;1 +15;8;85;30;9 +15;8;86;14;1 +15;8;87;30;9 +15;8;88;14;1 +15;8;89;30;9 +15;8;90;14;1 +15;8;91;30;9 +15;8;92;14;1 +15;8;93;30;9 +15;8;94;14;1 +15;8;95;30;9 +15;8;96;14;1 +15;8;97;30;9 +15;8;98;14;1 +15;8;99;30;9 +15;8;100;14;1 +15;8;101;30;9 +15;8;102;14;1 +15;8;103;30;9 +15;8;104;14;1 +15;8;105;30;9 +15;8;106;14;1 +15;8;107;30;9 +15;8;108;14;1 +15;8;109;30;9 +15;8;110;14;1 +15;8;111;30;9 +15;8;112;14;1 +15;8;113;30;9 +15;8;114;14;1 +15;8;115;30;9 +15;8;116;14;1 +15;8;117;30;9 +15;8;118;14;1 +15;8;119;30;9 +15;8;120;14;1 +15;8;121;30;9 +15;8;122;14;1 +15;8;123;30;9 +15;8;124;14;1 +15;8;125;30;9 +15;8;126;14;1 +15;8;127;30;9 +15;8;128;14;1 +15;8;129;15;2 +15;8;130;14;1 +15;8;131;16;3 +15;8;132;14;1 +15;8;133;22;4 +15;8;134;14;1 +15;8;135;22;4 +15;8;136;14;1 +15;8;137;18;5 +15;8;138;14;1 +15;8;139;18;5 +15;8;140;14;1 +15;8;141;18;5 +15;8;142;14;1 +15;8;143;18;5 +15;8;144;14;1 +15;8;145;24;6 +15;8;146;14;1 +15;8;147;24;6 +15;8;148;14;1 +15;8;149;24;6 +15;8;150;14;1 +15;8;151;24;6 +15;8;152;14;1 +15;8;153;24;6 +15;8;154;14;1 +15;8;155;24;6 +15;8;156;14;1 +15;8;157;24;6 +15;8;158;14;1 +15;8;159;24;6 +15;8;160;14;1 +15;8;161;25;7 +15;8;162;14;1 +15;8;163;25;7 +15;8;164;14;1 +15;8;165;25;7 +15;8;166;14;1 +15;8;167;25;7 +15;8;168;14;1 +15;8;169;25;7 +15;8;170;14;1 +15;8;171;25;7 +15;8;172;14;1 +15;8;173;25;7 +15;8;174;14;1 +15;8;175;25;7 +15;8;176;14;1 +15;8;177;24;6 +15;8;178;14;1 +15;8;179;24;6 +15;8;180;14;1 +15;8;181;24;6 +15;8;182;14;1 +15;8;183;24;6 +15;8;184;14;1 +15;8;185;24;6 +15;8;186;14;1 +15;8;187;24;6 +15;8;188;14;1 +15;8;189;24;6 +15;8;190;14;1 +15;8;191;24;6 +15;8;192;14;1 +15;8;193;15;2 +15;8;194;14;1 +15;8;195;16;3 +15;8;196;14;1 +15;8;197;22;4 +15;8;198;14;1 +15;8;199;22;4 +15;8;200;14;1 +15;8;201;18;5 +15;8;202;14;1 +15;8;203;18;5 +15;8;204;14;1 +15;8;205;18;5 +15;8;206;14;1 +15;8;207;18;5 +15;8;208;14;1 +15;8;209;24;6 +15;8;210;14;1 +15;8;211;24;6 +15;8;212;14;1 +15;8;213;24;6 +15;8;214;14;1 +15;8;215;24;6 +15;8;216;14;1 +15;8;217;24;6 +15;8;218;14;1 +15;8;219;24;6 +15;8;220;14;1 +15;8;221;24;6 +15;8;222;14;1 +15;8;223;24;6 +15;8;224;14;1 +15;8;225;25;7 +15;8;226;14;1 +15;8;227;25;7 +15;8;228;14;1 +15;8;229;25;7 +15;8;230;14;1 +15;8;231;25;7 +15;8;232;14;1 +15;8;233;25;7 +15;8;234;14;1 +15;8;235;25;7 +15;8;236;14;1 +15;8;237;25;7 +15;8;238;14;1 +15;8;239;25;7 +15;8;240;14;1 +15;8;241;24;6 +15;8;242;14;1 +15;8;243;24;6 +15;8;244;14;1 +15;8;245;24;6 +15;8;246;14;1 +15;8;247;24;6 +15;8;248;14;1 +15;8;249;24;6 +15;8;250;14;1 +15;8;251;24;6 +15;8;252;14;1 +15;8;253;24;6 +15;8;254;14;1 +15;8;255;24;6 +15;9;0;14;1 +15;9;2;14;1 +15;9;4;14;1 +15;9;6;14;1 +15;9;8;14;1 +15;9;10;14;1 +15;9;12;14;1 +15;9;14;14;1 +15;9;16;14;1 +15;9;18;14;1 +15;9;20;14;1 +15;9;22;14;1 +15;9;24;14;1 +15;9;26;14;1 +15;9;28;14;1 +15;9;30;14;1 +15;9;32;14;1 +15;9;34;14;1 +15;9;36;14;1 +15;9;38;14;1 +15;9;40;14;1 +15;9;42;14;1 +15;9;44;14;1 +15;9;46;14;1 +15;9;48;14;1 +15;9;50;14;1 +15;9;52;14;1 +15;9;54;14;1 +15;9;56;14;1 +15;9;58;14;1 +15;9;60;14;1 +15;9;62;14;1 +15;9;64;14;1 +15;9;66;14;1 +15;9;68;14;1 +15;9;70;14;1 +15;9;72;14;1 +15;9;74;14;1 +15;9;76;14;1 +15;9;78;14;1 +15;9;80;14;1 +15;9;82;14;1 +15;9;84;14;1 +15;9;86;14;1 +15;9;88;14;1 +15;9;90;14;1 +15;9;92;14;1 +15;9;94;14;1 +15;9;96;14;1 +15;9;98;14;1 +15;9;100;14;1 +15;9;102;14;1 +15;9;104;14;1 +15;9;106;14;1 +15;9;108;14;1 +15;9;110;14;1 +15;9;112;14;1 +15;9;114;14;1 +15;9;116;14;1 +15;9;118;14;1 +15;9;120;14;1 +15;9;122;14;1 +15;9;124;14;1 +15;9;126;14;1 +15;9;128;14;1 +15;9;129;15;2 +15;9;130;14;1 +15;9;131;16;3 +15;9;132;14;1 +15;9;133;22;4 +15;9;134;14;1 +15;9;135;22;4 +15;9;136;14;1 +15;9;137;18;5 +15;9;138;14;1 +15;9;139;18;5 +15;9;140;14;1 +15;9;141;18;5 +15;9;142;14;1 +15;9;143;18;5 +15;9;144;14;1 +15;9;145;24;6 +15;9;146;14;1 +15;9;147;24;6 +15;9;148;14;1 +15;9;149;24;6 +15;9;150;14;1 +15;9;151;24;6 +15;9;152;14;1 +15;9;153;24;6 +15;9;154;14;1 +15;9;155;24;6 +15;9;156;14;1 +15;9;157;24;6 +15;9;158;14;1 +15;9;159;24;6 +15;9;160;14;1 +15;9;161;25;7 +15;9;162;14;1 +15;9;163;25;7 +15;9;164;14;1 +15;9;165;25;7 +15;9;166;14;1 +15;9;167;25;7 +15;9;168;14;1 +15;9;169;25;7 +15;9;170;14;1 +15;9;171;25;7 +15;9;172;14;1 +15;9;173;25;7 +15;9;174;14;1 +15;9;175;25;7 +15;9;176;14;1 +15;9;177;24;6 +15;9;178;14;1 +15;9;179;24;6 +15;9;180;14;1 +15;9;181;24;6 +15;9;182;14;1 +15;9;183;24;6 +15;9;184;14;1 +15;9;185;24;6 +15;9;186;14;1 +15;9;187;24;6 +15;9;188;14;1 +15;9;189;24;6 +15;9;190;14;1 +15;9;191;24;6 +15;9;192;14;1 +15;9;193;15;2 +15;9;194;14;1 +15;9;195;16;3 +15;9;196;14;1 +15;9;197;22;4 +15;9;198;14;1 +15;9;199;22;4 +15;9;200;14;1 +15;9;201;18;5 +15;9;202;14;1 +15;9;203;18;5 +15;9;204;14;1 +15;9;205;18;5 +15;9;206;14;1 +15;9;207;18;5 +15;9;208;14;1 +15;9;209;24;6 +15;9;210;14;1 +15;9;211;24;6 +15;9;212;14;1 +15;9;213;24;6 +15;9;214;14;1 +15;9;215;24;6 +15;9;216;14;1 +15;9;217;24;6 +15;9;218;14;1 +15;9;219;24;6 +15;9;220;14;1 +15;9;221;24;6 +15;9;222;14;1 +15;9;223;24;6 +15;9;224;14;1 +15;9;225;25;7 +15;9;226;14;1 +15;9;227;25;7 +15;9;228;14;1 +15;9;229;25;7 +15;9;230;14;1 +15;9;231;25;7 +15;9;232;14;1 +15;9;233;25;7 +15;9;234;14;1 +15;9;235;25;7 +15;9;236;14;1 +15;9;237;25;7 +15;9;238;14;1 +15;9;239;25;7 +15;9;240;14;1 +15;9;241;24;6 +15;9;242;14;1 +15;9;243;24;6 +15;9;244;14;1 +15;9;245;24;6 +15;9;246;14;1 +15;9;247;24;6 +15;9;248;14;1 +15;9;249;24;6 +15;9;250;14;1 +15;9;251;24;6 +15;9;252;14;1 +15;9;253;24;6 +15;9;254;14;1 +15;9;255;24;6 diff --git a/StateMachine/src/MapoState/MapoState/resource/15.rul b/StateMachine/src/MapoState/MapoState/resource/15.rul new file mode 100644 index 0000000..799adf0 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/resource/15.rul @@ -0,0 +1,101 @@ +# +# Donati Macchine Pul02,PUL03 ( PLC Enrico ) +# trebi con PLC nuovo +# +# v.2 28-X-2013 segnale contapezzo : non rimandare evento se già nello stato "Cycle end" +# v.3 31-X-2013 ignora magazzino grezzi vuoti +# v.4 9-XII-2013 rimessa regola : se segnale contapezzo, vale per tutti gli stati (eliminando v2) +# +# segnale contapezzo : non rimanda evento se già nello stato "Cycle end" <<<< no dalla versione 4 +# si faceva fottere da 3 o + campioni a 7 in ingresso +# primo input a 7 --> stato end cycle +# secondo input a 7 --> stato run !!! ( mancava la regola ) +# terzo input a 7 --> di nuovo stato end cycle ( e quindi un pezzo in più ) +# +$DEFINITIONS + +$NAME : enrico +$IDX : 15 +$N_STATES : 10 +$N_BITS : 8 + +#definizione bit : obbligatorio iniziare da 0 + +$BIT : 0 : power_on +$BIT : 1 : run +$BIT : 2 : end_cycle +$BIT : 3 : alarm +$BIT : 4 : manual +$BIT : 5 : output_full +$BIT : 6 : input_empty +$BIT : 7 : not_emergency + +#definizione stati : obbligatorio iniziare da 0 + +$STATE : 0 : ST_Init +$STATE : 1 : ST_Power off +$STATE : 2 : ST_Machine ready +$STATE : 3 : ST_Run +$STATE : 4 : ST_Cycle end +$STATE : 5 : ST_Alarm +$STATE : 6 : ST_Manual +$STATE : 7 : ST_Output full +$STATE : 8 : ST_Input empty +$STATE : 9 : ST_Emergency + +#definizione eventi : obbligatorio iniziare da 0 + +$EVENT : 00 : EV_00 +$EVENT : 01 : EV_01 +$EVENT : 02 : EV_02 +$EVENT : 03 : EV_03 +$EVENT : 04 : EV_04 +$EVENT : 05 : EV_05 +$EVENT : 06 : EV_06 +$EVENT : 07 : EV_07 +$EVENT : 08 : EV_08 +$EVENT : 09 : EV_09 +$EVENT : 10 : EV_10 +$EVENT : 11 : EV_11 +$EVENT : 12 : EV_12 +$EVENT : 13 : HW - init +$EVENT : 14 : HW - power off +$EVENT : 15 : HW - power on +$EVENT : 16 : HW - machining +$EVENT : 17 : HW - end machining +$EVENT : 18 : HW - error +$EVENT : 19 : Barcode - cambio operatore +$EVENT : 20 : Contapezzi +$EVENT : 21 : HW - start pallet +$EVENT : 22 : HW - end pallet +$EVENT : 23 : HW rottura nastro abrasivo +$EVENT : 24 : HW manuale +$EVENT : 25 : HW nastro scarico pieno +$EVENT : 26 : Barcode - Manca Riforn. MPD +$EVENT : 27 : Timer - timeout tempo ciclo +$EVENT : 28 : Timer - timeout TURNO by tempo ciclo +$EVENT : 29 : HW - magazzino grezzi vuoto +$EVENT : 30 : HW - emergenza + + +$RULES + +# state : input : next state : event ------------------------------------------------- + +ALL_STATES : NOT power_on : ST_Power off : HW - power off +ALL_STATES : NOT not_emergency : ST_Emergency : HW - emergenza +ALL_STATES : manual : ST_Manual : HW manuale + +#### ALL_STATES : input_empty : ST_Input empty : HW - magazzino grezzi vuoto + +ALL_STATES : output_full : ST_Output full : HW nastro scarico pieno +ALL_STATES : alarm : ST_Alarm : HW - error + +# rimetta a posto la candela ! + +ALL_STATES : end_cycle : ST_Cycle end : HW - end pallet + +ALL_STATES : run : ST_Run : HW - machining +ALL_STATES : power_on : ST_Machine ready : HW - power on + +$DO diff --git a/StateMachine/src/MapoState/MapoState/resource/geppo.rul b/StateMachine/src/MapoState/MapoState/resource/geppo.rul new file mode 100644 index 0000000..799adf0 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/resource/geppo.rul @@ -0,0 +1,101 @@ +# +# Donati Macchine Pul02,PUL03 ( PLC Enrico ) +# trebi con PLC nuovo +# +# v.2 28-X-2013 segnale contapezzo : non rimandare evento se già nello stato "Cycle end" +# v.3 31-X-2013 ignora magazzino grezzi vuoti +# v.4 9-XII-2013 rimessa regola : se segnale contapezzo, vale per tutti gli stati (eliminando v2) +# +# segnale contapezzo : non rimanda evento se già nello stato "Cycle end" <<<< no dalla versione 4 +# si faceva fottere da 3 o + campioni a 7 in ingresso +# primo input a 7 --> stato end cycle +# secondo input a 7 --> stato run !!! ( mancava la regola ) +# terzo input a 7 --> di nuovo stato end cycle ( e quindi un pezzo in più ) +# +$DEFINITIONS + +$NAME : enrico +$IDX : 15 +$N_STATES : 10 +$N_BITS : 8 + +#definizione bit : obbligatorio iniziare da 0 + +$BIT : 0 : power_on +$BIT : 1 : run +$BIT : 2 : end_cycle +$BIT : 3 : alarm +$BIT : 4 : manual +$BIT : 5 : output_full +$BIT : 6 : input_empty +$BIT : 7 : not_emergency + +#definizione stati : obbligatorio iniziare da 0 + +$STATE : 0 : ST_Init +$STATE : 1 : ST_Power off +$STATE : 2 : ST_Machine ready +$STATE : 3 : ST_Run +$STATE : 4 : ST_Cycle end +$STATE : 5 : ST_Alarm +$STATE : 6 : ST_Manual +$STATE : 7 : ST_Output full +$STATE : 8 : ST_Input empty +$STATE : 9 : ST_Emergency + +#definizione eventi : obbligatorio iniziare da 0 + +$EVENT : 00 : EV_00 +$EVENT : 01 : EV_01 +$EVENT : 02 : EV_02 +$EVENT : 03 : EV_03 +$EVENT : 04 : EV_04 +$EVENT : 05 : EV_05 +$EVENT : 06 : EV_06 +$EVENT : 07 : EV_07 +$EVENT : 08 : EV_08 +$EVENT : 09 : EV_09 +$EVENT : 10 : EV_10 +$EVENT : 11 : EV_11 +$EVENT : 12 : EV_12 +$EVENT : 13 : HW - init +$EVENT : 14 : HW - power off +$EVENT : 15 : HW - power on +$EVENT : 16 : HW - machining +$EVENT : 17 : HW - end machining +$EVENT : 18 : HW - error +$EVENT : 19 : Barcode - cambio operatore +$EVENT : 20 : Contapezzi +$EVENT : 21 : HW - start pallet +$EVENT : 22 : HW - end pallet +$EVENT : 23 : HW rottura nastro abrasivo +$EVENT : 24 : HW manuale +$EVENT : 25 : HW nastro scarico pieno +$EVENT : 26 : Barcode - Manca Riforn. MPD +$EVENT : 27 : Timer - timeout tempo ciclo +$EVENT : 28 : Timer - timeout TURNO by tempo ciclo +$EVENT : 29 : HW - magazzino grezzi vuoto +$EVENT : 30 : HW - emergenza + + +$RULES + +# state : input : next state : event ------------------------------------------------- + +ALL_STATES : NOT power_on : ST_Power off : HW - power off +ALL_STATES : NOT not_emergency : ST_Emergency : HW - emergenza +ALL_STATES : manual : ST_Manual : HW manuale + +#### ALL_STATES : input_empty : ST_Input empty : HW - magazzino grezzi vuoto + +ALL_STATES : output_full : ST_Output full : HW nastro scarico pieno +ALL_STATES : alarm : ST_Alarm : HW - error + +# rimetta a posto la candela ! + +ALL_STATES : end_cycle : ST_Cycle end : HW - end pallet + +ALL_STATES : run : ST_Run : HW - machining +ALL_STATES : power_on : ST_Machine ready : HW - power on + +$DO diff --git a/StateMachine/src/MapoState/MapoState/ship/Config/MapoState.ini b/StateMachine/src/MapoState/MapoState/ship/Config/MapoState.ini new file mode 100644 index 0000000..51ded48 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/ship/Config/MapoState.ini @@ -0,0 +1,10 @@ +[GENERAL] + +Language=ITA +inputpath = C:\Lavori\Mapo\Donati\macchine a stati\ + +Debug = 0 + +[RUL] +edefault=C:\Users\carlo\Documents\Projects\vs2008\MapoState\MapoState\Resources\15.rul +default = C:\Lavori\Mapo\Donati\macchine a stati\15.rul diff --git a/StateMachine/src/MapoState/MapoState/ship/Icone/strato_bianca.ico b/StateMachine/src/MapoState/MapoState/ship/Icone/strato_bianca.ico new file mode 100644 index 0000000000000000000000000000000000000000..2d0948b34736c6bf62c7a0b1162e972dc72a682e GIT binary patch literal 2238 zcmai!yKWOf6o!u#gwZxQ4RV*r6(!;{$W0Q-ui&1-npbdxlr7zvcDfV@AzDhBt&tyr zNZEc1cUcLP!*^!Z7mO{u{&si%bD4i;*B0q(<<*^2fnTCFI{C|8W|B?b`!C?Mbk9U=r!APFz%5Fvm9g?K@S2musm z#_Z@E5dtVM0iIAGLI4FO#Sc0}2%vxwLg)}7fC2;jphJWJ3MAkM9U=r!pa?(c;70%j z8sP_b5Fvm9&GCZ{5dtVMA%4&yLI4F!P=XE-0w{2UA9RQiK!G5B(32B%4h0JE!%jhj z017n04?08$pg?2%phJWJ3QUF{bchf@0Ryx`hX?@_IN=99?Fu?qKM3H3cKNmQR}3Fa z3;tU8E8vftLVtw*xct%hWAH6!khapd&9}(6gA+0EW%&}^u3K{(KBc$wQcrbB;m~N7uz6x{%z36VDN36!wosI zv9hW5x*TrTW`}XAS!e1!XxrlPAl|SGMUlfP^RNNYE^G~{kEi0+w#|Z>e1iQw=<10! zi+)i&7K5eiXXLmUQSa_vmov}kwrLaZr^$vQ$hs~ p^89u!XVjmWl|7>vu5az(J-oTH^}7peKM;H(=>I!DqgCCt{sSz&fP?@5 literal 0 HcmV?d00001 diff --git a/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ing b/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ing new file mode 100644 index 0000000..dd72a1d --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ing @@ -0,0 +1,130 @@ +1: (1) +2: (2) +3: Attention !!! +4: File Does Not Exist +5: Data modified but not saved ! Do you want to save ? +6: (6) +7: (7) +8: (8) +9: (9) +10: (10) +11: (11) +12: (12) +13: (13) +14: (14) +15: (15) +16: (16) +17: (17) +18: (18) +19: (19) +20: (20) +21: Load Typ File +22: Save Typ File +23: Exit +24: Load ACD File +25: (25) +26: (26) +27: (27) +28: (28) +29: (29) +30: (30) +31: OverStock +32: Machining +33: Actual ACD File : +34: (34) +35: (35) +36: (36) +37: (37) +38: (38) +39: (39) +40: (40) +41: (41) +42: (42) +43: (43) +44: (44) +45: (45) +46: (46) +47: (47) +48: (48) +49: (49) +50: (50) +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: Problem reading Alarm +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: Ok +91: Cancel +92: Wrong Data in +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: Yes +118: No +119: +120: +121: +122: +123: +124: +125: +126: +127: +128: +129: Already exists + diff --git a/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ita b/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ita new file mode 100644 index 0000000..58a2c35 --- /dev/null +++ b/StateMachine/src/MapoState/MapoState/ship/messages/MapoState.ita @@ -0,0 +1,130 @@ +1: (1) +2: (2) +3: Attenzione !!! +4: File Does Not Exist +5: Dati non salvati : Vuoi salvarli ? +6: (6) +7: (7) +8: (8) +9: (9) +10: (10) +11: (11) +12: (12) +13: (13) +14: (14) +15: (15) +16: (16) +17: (17) +18: (18) +19: (19) +20: (20) +21: Carica File regole +22: +23: Esci +24: (24) +25: (25) +26: (26) +27: (27) +28: (28) +29: (29) +30: (30) +31: (31) +32: (32) +33: (33) +34: (34) +35: (35) +36: (36) +37: (37) +38: (38) +39: (39) +40: (40) +41: (41) +42: (42) +43: (43) +44: (44) +45: (45) +46: (46) +47: (47) +48: (48) +49: (49) +50: (50) +51: +52: +53: +54: +55: +56: +57: +58: +59: +60: +61: +62: +63: +64: +65: +66: +67: +68: +69: +70: +71: +72: +73: +74: +75: +76: +77: +78: +79: Problem reading Alarm +80: +81: +82: +83: +84: +85: +86: +87: +88: +89: +90: Ok +91: Cancel +92: Wrong Data in +93: +94: +95: +96: +97: +98: +99: +100: +101: +102: +103: +104: +105: +106: +107: +108: +109: +110: +111: +112: +113: +114: +115: +116: +117: Yes +118: No +119: +120: +121: +122: +123: +124: +125: +126: +127: +128: +129: Already exists + diff --git a/StateMachine/src/MapoState/MapoState/ship/ship.dat b/StateMachine/src/MapoState/MapoState/ship/ship.dat new file mode 100644 index 0000000000000000000000000000000000000000..89effbdf5fd1adf1aad72529abce1bc452fa9bb1 GIT binary patch literal 17960 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 s+-f8` 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�a{Ez8N$IWmCJHMYP{Mh5!R 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 e6DMGG3uGjj6