completata gestione strobe x recupero dati MST

This commit is contained in:
Samuele E. Locatelli
2016-04-01 18:46:25 +02:00
parent f5bf908a44
commit 33e55abe7d
5 changed files with 580 additions and 120 deletions
Binary file not shown.
+1
View File
@@ -9,6 +9,7 @@
<add key="D1_ID" value="12345"/>
<add key="D1_UUID" value="asdf12345erty9876"/>
<add key="D1_PROGRAM" value="PROG_DEMO_01"/>
<add key="PartID" value="Prod_0001"/>
<add key="STATUS_PLC_ADP" value="0"/>
<add key="STATUS_ADP_PLC" value="0"/>
+204 -82
View File
@@ -59,6 +59,7 @@
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.something = new System.Windows.Forms.CheckBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.dump = new System.Windows.Forms.Button();
this.stop = new System.Windows.Forms.Button();
this.start = new System.Windows.Forms.Button();
this.port = new System.Windows.Forms.TextBox();
@@ -89,27 +90,36 @@
this.program = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.groupBox7 = new System.Windows.Forms.GroupBox();
this.label16 = new System.Windows.Forms.Label();
this.D1_UUID = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.D1_ID = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.D1_NAME = new System.Windows.Forms.TextBox();
this.estop = new System.Windows.Forms.CheckBox();
this.label15 = new System.Windows.Forms.Label();
this.D1_ID = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
this.D1_UUID = new System.Windows.Forms.TextBox();
this.dump = new System.Windows.Forms.Button();
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.groupBox9 = new System.Windows.Forms.GroupBox();
this.OPERATOR_ID = new System.Windows.Forms.TextBox();
this.label19 = new System.Windows.Forms.Label();
this.PROG_ROW_NUM = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.groupBox10 = new System.Windows.Forms.GroupBox();
this.enableDataSim = new System.Windows.Forms.CheckBox();
this.groupBox11 = new System.Windows.Forms.GroupBox();
this.STATUS_PLC_ADP = new System.Windows.Forms.TextBox();
this.lblPLC_ADP = new System.Windows.Forms.Label();
this.STATUS_ADP_PLC = new System.Windows.Forms.TextBox();
this.label18 = new System.Windows.Forms.Label();
this.OPERATOR_ID = new System.Windows.Forms.TextBox();
this.label19 = new System.Windows.Forms.Label();
this.STATUS_PLC_ADP = new System.Windows.Forms.TextBox();
this.lblPLC_ADP = new System.Windows.Forms.Label();
this.groupBox12 = new System.Windows.Forms.GroupBox();
this.lblCodaT = new System.Windows.Forms.Label();
this.addCodT = new System.Windows.Forms.TextBox();
this.label24 = new System.Windows.Forms.Label();
this.lblCodaS = new System.Windows.Forms.Label();
this.addCodS = new System.Windows.Forms.TextBox();
this.label22 = new System.Windows.Forms.Label();
this.lblCodaM = new System.Windows.Forms.Label();
this.addCodM = new System.Windows.Forms.TextBox();
this.label20 = new System.Windows.Forms.Label();
this.groupBox4.SuspendLayout();
this.groupBox5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.commonVariables)).BeginInit();
@@ -124,6 +134,7 @@
this.groupBox9.SuspendLayout();
this.groupBox10.SuspendLayout();
this.groupBox11.SuspendLayout();
this.groupBox12.SuspendLayout();
this.SuspendLayout();
//
// flazBat
@@ -307,7 +318,7 @@
"TEARDOWN",
"MAINTENANCE",
"PROCESS_DEVELOPMENT"});
this.functionalMode.Location = new System.Drawing.Point(102, 273);
this.functionalMode.Location = new System.Drawing.Point(655, 313);
this.functionalMode.Name = "functionalMode";
this.functionalMode.Size = new System.Drawing.Size(121, 21);
this.functionalMode.TabIndex = 47;
@@ -316,7 +327,7 @@
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(13, 276);
this.label12.Location = new System.Drawing.Point(566, 316);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(86, 13);
this.label12.TabIndex = 46;
@@ -402,6 +413,16 @@
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Server Info";
//
// dump
//
this.dump.Location = new System.Drawing.Point(298, 15);
this.dump.Name = "dump";
this.dump.Size = new System.Drawing.Size(75, 23);
this.dump.TabIndex = 4;
this.dump.Text = "Show Dump";
this.dump.UseVisualStyleBackColor = true;
this.dump.Click += new System.EventHandler(this.dump_Click);
//
// stop
//
this.stop.Location = new System.Drawing.Point(202, 15);
@@ -710,6 +731,38 @@
this.groupBox7.TabStop = false;
this.groupBox7.Text = "Macchina";
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(193, 53);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(34, 13);
this.label16.TabIndex = 59;
this.label16.Text = "UUID";
//
// D1_UUID
//
this.D1_UUID.Location = new System.Drawing.Point(234, 50);
this.D1_UUID.Name = "D1_UUID";
this.D1_UUID.Size = new System.Drawing.Size(140, 20);
this.D1_UUID.TabIndex = 58;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(10, 53);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(18, 13);
this.label15.TabIndex = 57;
this.label15.Text = "ID";
//
// D1_ID
//
this.D1_ID.Location = new System.Drawing.Point(51, 50);
this.D1_ID.Name = "D1_ID";
this.D1_ID.Size = new System.Drawing.Size(124, 20);
this.D1_ID.TabIndex = 56;
//
// label14
//
this.label14.AutoSize = true;
@@ -737,48 +790,6 @@
this.estop.Text = "Emergency Stop";
this.estop.UseVisualStyleBackColor = true;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(10, 53);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(18, 13);
this.label15.TabIndex = 57;
this.label15.Text = "ID";
//
// D1_ID
//
this.D1_ID.Location = new System.Drawing.Point(51, 50);
this.D1_ID.Name = "D1_ID";
this.D1_ID.Size = new System.Drawing.Size(124, 20);
this.D1_ID.TabIndex = 56;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(193, 53);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(34, 13);
this.label16.TabIndex = 59;
this.label16.Text = "UUID";
//
// D1_UUID
//
this.D1_UUID.Location = new System.Drawing.Point(234, 50);
this.D1_UUID.Name = "D1_UUID";
this.D1_UUID.Size = new System.Drawing.Size(140, 20);
this.D1_UUID.TabIndex = 58;
//
// dump
//
this.dump.Location = new System.Drawing.Point(298, 15);
this.dump.Name = "dump";
this.dump.Size = new System.Drawing.Size(75, 23);
this.dump.TabIndex = 4;
this.dump.Text = "Show Dump";
this.dump.UseVisualStyleBackColor = true;
this.dump.Click += new System.EventHandler(this.dump_Click);
//
// groupBox8
//
this.groupBox8.Controls.Add(this.estop);
@@ -806,6 +817,22 @@
this.groupBox9.TabStop = false;
this.groupBox9.Text = "Produzione";
//
// OPERATOR_ID
//
this.OPERATOR_ID.Location = new System.Drawing.Point(273, 45);
this.OPERATOR_ID.Name = "OPERATOR_ID";
this.OPERATOR_ID.Size = new System.Drawing.Size(100, 20);
this.OPERATOR_ID.TabIndex = 53;
//
// label19
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(222, 48);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(45, 13);
this.label19.TabIndex = 52;
this.label19.Text = "ID oper.";
//
// PROG_ROW_NUM
//
this.PROG_ROW_NUM.Location = new System.Drawing.Point(313, 19);
@@ -856,22 +883,6 @@
this.groupBox11.TabStop = false;
this.groupBox11.Text = "Strobes";
//
// STATUS_PLC_ADP
//
this.STATUS_PLC_ADP.Location = new System.Drawing.Point(85, 19);
this.STATUS_PLC_ADP.Name = "STATUS_PLC_ADP";
this.STATUS_PLC_ADP.Size = new System.Drawing.Size(286, 20);
this.STATUS_PLC_ADP.TabIndex = 53;
//
// lblPLC_ADP
//
this.lblPLC_ADP.AutoSize = true;
this.lblPLC_ADP.Location = new System.Drawing.Point(15, 22);
this.lblPLC_ADP.Name = "lblPLC_ADP";
this.lblPLC_ADP.Size = new System.Drawing.Size(64, 13);
this.lblPLC_ADP.TabIndex = 52;
this.lblPLC_ADP.Text = "PLC -> ADP";
//
// STATUS_ADP_PLC
//
this.STATUS_ADP_PLC.Location = new System.Drawing.Point(85, 45);
@@ -888,28 +899,127 @@
this.label18.TabIndex = 54;
this.label18.Text = "ADP -> PLC";
//
// OPERATOR_ID
// STATUS_PLC_ADP
//
this.OPERATOR_ID.Location = new System.Drawing.Point(273, 45);
this.OPERATOR_ID.Name = "OPERATOR_ID";
this.OPERATOR_ID.Size = new System.Drawing.Size(100, 20);
this.OPERATOR_ID.TabIndex = 53;
this.STATUS_PLC_ADP.Location = new System.Drawing.Point(85, 19);
this.STATUS_PLC_ADP.Name = "STATUS_PLC_ADP";
this.STATUS_PLC_ADP.Size = new System.Drawing.Size(286, 20);
this.STATUS_PLC_ADP.TabIndex = 53;
//
// label19
// lblPLC_ADP
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(222, 48);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(45, 13);
this.label19.TabIndex = 52;
this.label19.Text = "ID oper.";
this.label19.Click += new System.EventHandler(this.label19_Click);
this.lblPLC_ADP.AutoSize = true;
this.lblPLC_ADP.Location = new System.Drawing.Point(15, 22);
this.lblPLC_ADP.Name = "lblPLC_ADP";
this.lblPLC_ADP.Size = new System.Drawing.Size(64, 13);
this.lblPLC_ADP.TabIndex = 52;
this.lblPLC_ADP.Text = "PLC -> ADP";
//
// groupBox12
//
this.groupBox12.Controls.Add(this.lblCodaT);
this.groupBox12.Controls.Add(this.addCodT);
this.groupBox12.Controls.Add(this.label24);
this.groupBox12.Controls.Add(this.lblCodaS);
this.groupBox12.Controls.Add(this.addCodS);
this.groupBox12.Controls.Add(this.label22);
this.groupBox12.Controls.Add(this.lblCodaM);
this.groupBox12.Controls.Add(this.addCodM);
this.groupBox12.Controls.Add(this.label20);
this.groupBox12.Location = new System.Drawing.Point(12, 228);
this.groupBox12.Name = "groupBox12";
this.groupBox12.Size = new System.Drawing.Size(379, 100);
this.groupBox12.TabIndex = 58;
this.groupBox12.TabStop = false;
this.groupBox12.Text = "Codici M/S/T";
//
// lblCodaT
//
this.lblCodaT.AutoSize = true;
this.lblCodaT.Location = new System.Drawing.Point(117, 74);
this.lblCodaT.Name = "lblCodaT";
this.lblCodaT.Size = new System.Drawing.Size(22, 13);
this.lblCodaT.TabIndex = 60;
this.lblCodaT.Text = "[...]";
//
// addCodT
//
this.addCodT.Location = new System.Drawing.Point(51, 71);
this.addCodT.Name = "addCodT";
this.addCodT.Size = new System.Drawing.Size(60, 20);
this.addCodT.TabIndex = 59;
this.addCodT.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodT_KeyDown);
this.addCodT.Leave += new System.EventHandler(this.addCodT_Leave);
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(9, 74);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(33, 13);
this.label24.TabIndex = 58;
this.label24.Text = "AddT";
//
// lblCodaS
//
this.lblCodaS.AutoSize = true;
this.lblCodaS.Location = new System.Drawing.Point(118, 48);
this.lblCodaS.Name = "lblCodaS";
this.lblCodaS.Size = new System.Drawing.Size(22, 13);
this.lblCodaS.TabIndex = 57;
this.lblCodaS.Text = "[...]";
//
// addCodS
//
this.addCodS.Location = new System.Drawing.Point(52, 45);
this.addCodS.Name = "addCodS";
this.addCodS.Size = new System.Drawing.Size(60, 20);
this.addCodS.TabIndex = 56;
this.addCodS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodS_KeyDown);
this.addCodS.Leave += new System.EventHandler(this.addCodS_Leave);
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(10, 48);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(33, 13);
this.label22.TabIndex = 55;
this.label22.Text = "AddS";
//
// lblCodaM
//
this.lblCodaM.AutoSize = true;
this.lblCodaM.Location = new System.Drawing.Point(118, 22);
this.lblCodaM.Name = "lblCodaM";
this.lblCodaM.Size = new System.Drawing.Size(22, 13);
this.lblCodaM.TabIndex = 54;
this.lblCodaM.Text = "[...]";
//
// addCodM
//
this.addCodM.Location = new System.Drawing.Point(52, 19);
this.addCodM.Name = "addCodM";
this.addCodM.Size = new System.Drawing.Size(60, 20);
this.addCodM.TabIndex = 53;
this.addCodM.KeyDown += new System.Windows.Forms.KeyEventHandler(this.addCodM_KeyDown);
this.addCodM.Leave += new System.EventHandler(this.addCodM_Leave);
//
// label20
//
this.label20.AutoSize = true;
this.label20.Location = new System.Drawing.Point(10, 22);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(35, 13);
this.label20.TabIndex = 52;
this.label20.Text = "AddM";
//
// CMS_MachineSim
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(794, 733);
this.Controls.Add(this.groupBox12);
this.Controls.Add(this.groupBox11);
this.Controls.Add(this.groupBox10);
this.Controls.Add(this.groupBox9);
@@ -955,6 +1065,8 @@
this.groupBox10.PerformLayout();
this.groupBox11.ResumeLayout(false);
this.groupBox11.PerformLayout();
this.groupBox12.ResumeLayout(false);
this.groupBox12.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -1043,6 +1155,16 @@
private System.Windows.Forms.Label lblPLC_ADP;
private System.Windows.Forms.TextBox OPERATOR_ID;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.GroupBox groupBox12;
private System.Windows.Forms.Label lblCodaT;
private System.Windows.Forms.TextBox addCodT;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.Label lblCodaS;
private System.Windows.Forms.TextBox addCodS;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label lblCodaM;
private System.Windows.Forms.TextBox addCodM;
private System.Windows.Forms.Label label20;
}
}
+313 -38
View File
@@ -62,7 +62,11 @@ namespace MTC_Sim
/// <summary>
/// CURR_PROG_ROWNUM - programma in esecuzione
/// </summary>
Event mProgRowNum = new Event("CurrPRog_RowNum");
Event mProgRowNum = new Event("CurrProg_RowNum");
/// <summary>
/// PartId - particolare prodotto
/// </summary>
Event mPartId = new Event("PartID");
/// <summary>
/// CURR_PROG_ROWNUM - programma in esecuzione
/// </summary>
@@ -78,6 +82,22 @@ namespace MTC_Sim
/// </summary>
Event mExec = new Event("exec");
Strobe STROBE_PLC = 0;
Strobe STROBE_ADP = 0;
/// <summary>
/// M_CODE
/// </summary>
Event mCod_M = new Event("Cod_M");
/// <summary>
/// S_CODE
/// </summary>
Event mCod_S = new Event("Cod_S");
/// <summary>
/// T_CODE
/// </summary>
Event mCod_T = new Event("Cod_T");
Event mFunctionalMode = new Event("func");
Message mMessage = new Message("message");
@@ -116,8 +136,14 @@ namespace MTC_Sim
// programma e produzione
mAdapter.AddDataItem(mProgram);
mAdapter.AddDataItem(mProgRowNum);
mAdapter.AddDataItem(mPartId);
mAdapter.AddDataItem(mOperator);
// codici speciali M/S/T
mAdapter.AddDataItem(mCod_M);
mAdapter.AddDataItem(mCod_S);
mAdapter.AddDataItem(mCod_T);
mAdapter.AddDataItem(mMode);
mAdapter.AddDataItem(mExec);
@@ -155,6 +181,7 @@ namespace MTC_Sim
D1_UUID.Text = utils.CRS("D1_UUID");
program.Text = utils.CRS("D1_PROGRAM");
PROG_ROW_NUM.Text = "0";
partID.Text = utils.CRS("PartID");
OPERATOR_ID.Text = "M9999";
STATUS_PLC_ADP.Text = binaryForm(utils.CRI("STATUS_PLC_ADP"));
STATUS_ADP_PLC.Text = binaryForm(utils.CRI("STATUS_ADP_PLC"));
@@ -172,41 +199,6 @@ namespace MTC_Sim
return answ;
}
/// <summary>
/// simula alcuni dati generando ad esempio numeri casuali... SE abilitato
/// </summary>
private void simulateData()
{
if (enableDataSim.Checked)
{
DateTime adesso = DateTime.Now;
Random rnd = new Random();
PROG_ROW_NUM.Text = rnd.Next(1, 10000).ToString();
// verifica se ci sia un evento strobe da recepire...
if (STATUS_PLC_ADP.Text.IndexOf("1") >= 0)
{
// verifica SE sia stato recepito da adapter...
if (STATUS_ADP_PLC.Text == STATUS_PLC_ADP.Text)
{
// in questo caso ripulisco da PLC...
STATUS_PLC_ADP.Text = binaryForm(0);
}
}
else
{
// se era ancora sollevato strobe lettura lo abbasso...
if (STATUS_ADP_PLC.Text.IndexOf("1") >= 0)
{
STATUS_ADP_PLC.Text = binaryForm(0);
}
else
{
// se il numero è < 1000 (10%) imposto strobe...
STATUS_PLC_ADP.Text = binaryForm(rnd.Next(1, 10000000));
}
}
}
}
private void start_Click(object sender, EventArgs e)
{
@@ -246,7 +238,7 @@ namespace MTC_Sim
{
mAdapter.Begin();
// eseguoe ventuali simulazioni
// eseguo eventuali simulazioni x dati/flags
simulateData();
// nome
@@ -257,8 +249,15 @@ namespace MTC_Sim
// programma
mProgram.Value = program.Text;
mProgRowNum.Value = PROG_ROW_NUM.Text;
mPartId.Value = partID.Text;
mOperator.Value = OPERATOR_ID.Text;
// SE presente recupero Cod_M/S/T
checkCodM();
checkCodS();
checkCodT();
if (estop.Checked)
mEStop.Value = "TRIGGERED";
@@ -322,6 +321,67 @@ namespace MTC_Sim
mAdapter.SendChanged();
}
private void checkCodM()
{
if (utils.IsSetAll(STROBE_PLC, Strobe.M_CODE))
{
mCod_M.Value = getNextMCode;
// se il valore è "" allora alzo flag lettura...
if (mCod_M.Value.ToString() == "") STROBE_ADP = STROBE_ADP | Strobe.M_CODE;
// refresh stringhe
refreshCodeMST();
}
else
{
// resetto eventuali flag di lettura...
if (utils.IsSetAll(STROBE_ADP, Strobe.M_CODE))
{
STROBE_ADP -= Strobe.M_CODE;
}
}
}
private void checkCodS()
{
if (utils.IsSetAll(STROBE_PLC, Strobe.S_CODE))
{
mCod_S.Value = getNextSCode;
// se il valore è "" allora alzo flag lettura...
if (mCod_S.Value.ToString() == "") STROBE_ADP = STROBE_ADP | Strobe.S_CODE;
// refresh stringhe
refreshCodeMST();
}
else
{
// resetto eventuali flag di lettura...
if (utils.IsSetAll(STROBE_ADP, Strobe.S_CODE))
{
STROBE_ADP -= Strobe.S_CODE;
}
}
}
private void checkCodT()
{
if (utils.IsSetAll(STROBE_PLC, Strobe.T_CODE))
{
mCod_T.Value = getNextTCode;
// se il valore è "" allora alzo flag lettura...
if (mCod_T.Value.ToString() == "") STROBE_ADP = STROBE_ADP | Strobe.T_CODE;
// refresh stringhe
refreshCodeMST();
}
else
{
// resetto eventuali flag di lettura...
if (utils.IsSetAll(STROBE_ADP, Strobe.T_CODE))
{
STROBE_ADP -= Strobe.T_CODE;
}
}
}
private void message_Leave(object sender, EventArgs e)
{
mMessage.Value = messageText.Text;
@@ -379,9 +439,224 @@ namespace MTC_Sim
Process.Start(string.Format(@"{0}\..\..\dump\dump.exe", path));
}
private void label19_Click(object sender, EventArgs e)
#region area metodi comunicazione con PLC/CNC
/// <summary>
/// recupera primo elemento codaM
/// </summary>
protected string getNextMCode
{
get
{
string answ = "";
if (codaM.Count > 0)
{
// accodo codice M...
answ = codaM.First();
// tolgo elemento
codaM.RemoveAt(0);
}
return answ;
}
}
/// <summary>
/// recupera primo elemento codaS
/// </summary>
protected string getNextSCode
{
get
{
string answ = "";
if (codaS.Count > 0)
{
// accodo codice S...
answ = codaS.First();
// tolgo elemento
codaS.RemoveAt(0);
}
return answ;
}
}
/// <summary>
/// recupera primo elemento codaT
/// </summary>
protected string getNextTCode
{
get
{
string answ = "";
if (codaT.Count > 0)
{
// accodo codice T...
answ = codaT.First();
// tolgo elemento
codaT.RemoveAt(0);
}
return answ;
}
}
#endregion
#region classi x simulazione valori vari
/// <summary>
/// simula alcuni dati generando ad esempio numeri casuali... SE abilitato
/// </summary>
private void simulateData()
{
if (enableDataSim.Checked)
{
DateTime adesso = DateTime.Now;
Random rnd = new Random();
PROG_ROW_NUM.Text = rnd.Next(1, 10000).ToString();
// ora controllo se ci siano eventi M/S/T x alzare flag...
if (codaM.Count > 0) STROBE_PLC = STROBE_PLC | Strobe.M_CODE;
if (codaS.Count > 0) STROBE_PLC = STROBE_PLC | Strobe.S_CODE;
if (codaT.Count > 0) STROBE_PLC = STROBE_PLC | Strobe.T_CODE;
// controllo se ci sia il flag di lettura di un evento M/S/T nel qual caso lo abbasso...
if (STROBE_ADP > 0) STROBE_PLC -= STROBE_ADP;
// aggiorno visualizzazione strobe!
STATUS_PLC_ADP.Text = binaryForm((int)STROBE_PLC);
STATUS_ADP_PLC.Text = binaryForm((int)STROBE_ADP);
#if false
// verifica se ci sia un evento strobe da recepire...
if (STATUS_PLC_ADP.Text.IndexOf("1") >= 0)
{
// verifica SE sia stato recepito da adapter...
if (STATUS_ADP_PLC.Text == STATUS_PLC_ADP.Text)
{
// in questo caso ripulisco da PLC...
STATUS_PLC_ADP.Text = binaryForm(0);
}
}
else
{
// se era ancora sollevato strobe lettura lo abbasso...
if (STATUS_ADP_PLC.Text.IndexOf("1") >= 0)
{
STATUS_ADP_PLC.Text = binaryForm(0);
}
else
{
// se il numero è < 1000 (10%) imposto strobe...
STATUS_PLC_ADP.Text = binaryForm(rnd.Next(1, 10000000));
}
}
#endif
}
}
protected List<string> codaM = new List<string>();
protected List<string> codaS = new List<string>();
protected List<string> codaT = new List<string>();
/// <summary>
/// aggiorna visualizzazione code...
/// </summary>
private void refreshCodeMST()
{
lblCodaM.Text = string.Join(",", codaM.ToArray());
lblCodaT.Text = string.Join(",", codaT.ToArray());
lblCodaS.Text = string.Join(",", codaS.ToArray());
}
private void accodaCodM()
{
if (addCodM.Text.Trim() != "")
{
codaM.Add(addCodM.Text.Trim());
addCodM.Text = "";
}
refreshCodeMST();
}
private void accodaCodS()
{
if (addCodS.Text.Trim() != "")
{
codaS.Add(addCodS.Text.Trim());
addCodS.Text = "";
}
refreshCodeMST();
}
private void accodaCodT()
{
if (addCodT.Text.Trim() != "")
{
codaT.Add(addCodT.Text.Trim());
addCodT.Text = "";
}
refreshCodeMST();
}
private void addCodM_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// accodo testo
accodaCodM();
}
else if (e.KeyCode == Keys.Escape)
{
// svuoto!
addCodM.Text = "";
}
}
private void addCodM_Leave(object sender, EventArgs e)
{
accodaCodM();
}
private void addCodS_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// accodo testo
accodaCodS();
}
else if (e.KeyCode == Keys.Escape)
{
// svuoto!
addCodS.Text = "";
}
}
private void addCodS_Leave(object sender, EventArgs e)
{
accodaCodS();
}
private void addCodT_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// accodo testo
accodaCodT();
}
else if (e.KeyCode == Keys.Escape)
{
// svuoto!
addCodT.Text = "";
}
}
private void addCodT_Leave(object sender, EventArgs e)
{
accodaCodT();
}
#endregion
}
}
+62
View File
@@ -42,7 +42,69 @@ namespace MTC_Sim
{ }
return answ;
}
/// <summary>
/// verifica se un dato bit sia alzato (come flag di strobe)
/// </summary>
/// <param name="value">valore da testare</param>
/// <param name="flag">valore cercato, può essere un singolo valore o un insieme in modalità AND</param>
/// <returns></returns>
public static bool IsSetAll(Strobe value, Strobe flag)
{
return ((value & flag) == flag);
}
/// <summary>
/// verifica se un dato bit sia alzato (come flag di strobe)
/// </summary>
/// <param name="value">valore da testare</param>
/// <param name="flag">valore cercato, può essere un singolo valore o un insieme in modalità OR</param>
/// <returns></returns>
public static bool IsSetAny(Strobe value, Strobe flag)
{
return ((value & flag) != 0);
}
}
/// <summary>
/// Strobe: contiene il set di strobe di comunicazione
///
/// rif: http://stackoverflow.com/questions/17209054/parse-bits-in-a-byte-to-enum
/// </summary>
[Flags]
public enum Strobe : int
{
NONE = 0,
M_CODE = 1 << 0,
S_CODE = 1 << 1,
T_CODE = 1 << 2,
SP04 = 1 << 3,
SP05 = 1 << 4,
SP06 = 1 << 5,
SP07 = 1 << 6,
SP08 = 1 << 8,
SP09 = 1 << 9,
SP10 = 1 << 10,
SP11 = 1 << 11,
SP12 = 1 << 12,
SP13 = 1 << 13,
SP14 = 1 << 14,
SP15 = 1 << 15,
SP16 = 1 << 16,
SP17 = 1 << 17,
SP18 = 1 << 18,
SP19 = 1 << 19,
SP20 = 1 << 20,
SP21 = 1 << 21,
SP22 = 1 << 22,
SP23 = 1 << 23,
SP24 = 1 << 24,
SP25 = 1 << 25,
SP26 = 1 << 26,
SP27 = 1 << 27,
SP28 = 1 << 28,
SP29 = 1 << 29,
SP30 = 1 << 30,
SP31 = 1 << 31,
SP32 = 1 << 32
}
}