Skip to content

Commit 0652507

Browse files
committed
Přidána instrukce Quida pro zjištění počtu vstupů, výstupů a teploměrů.
1 parent eff6c3b commit 0652507

File tree

3 files changed

+75
-51
lines changed

3 files changed

+75
-51
lines changed

Papouch.Spinel/Spinel97.Device.Quido.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,41 @@ public Boolean CmdSetRele(byte rele, Boolean value, byte timer = 0)
3434
return CmdSetOutput(rele, value, timer);
3535
}
3636

37+
/// <summary>
38+
/// Zjistí počet vstupů, výstupů a vstupů pro teploměr
39+
/// </summary>
40+
/// <param name="inputsCount">počet vstupů</param>
41+
/// <param name="outputsCount">počet výstupů</param>
42+
/// <param name="thermsCount">počet vstupů pro teploměr</param>
43+
/// <returns>vrací True v případě, že modul příkqaz zná a korektně odpoví</returns>
44+
public Boolean CmdGetIOCounts(out int inputsCount, out int outputsCount, out int thermsCount)
45+
{
46+
47+
if ((ci != null) && (ci.Active))
48+
{
49+
byte[] data = { 0x01 };
50+
PacketSpinel97 txPacket = new PacketSpinel97(S97_INST_ReadInfo, data);
51+
txPacket.ADR = this.ADR;
52+
53+
PacketSpinel97 rxPacket;
54+
55+
if (this.SendAndReceive(ref txPacket, out rxPacket))
56+
{
57+
if ((rxPacket.SDATA != null) && (rxPacket.SDATA.Length == 3))
58+
{
59+
inputsCount = rxPacket.SDATA[0];
60+
outputsCount = rxPacket.SDATA[1];
61+
thermsCount = rxPacket.SDATA[2];
62+
return true;
63+
}
64+
}
65+
}
66+
inputsCount = -1;
67+
outputsCount = -1;
68+
thermsCount = -1;
69+
return false;
70+
}
71+
3772
/// <summary>
3873
/// Nastavení výstupu
3974
/// </summary>

QuidoDemo_CS.NET/FormMain.Designer.cs

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

QuidoDemo_CS.NET/FormMain.cs

Lines changed: 27 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ private void checkFormControls()
102102
numericOutputTimer.Enabled = bq;
103103
labelOutputTimer.Enabled = bq;
104104

105-
106105
buttonGetInputs.Enabled = bq;
106+
buttonGetIOCount.Enabled = bq;
107107

108108
buttonGetCounter.Enabled = bq;
109109
buttonGetCounterSettings.Enabled = bq;
@@ -345,65 +345,41 @@ private void buttonSetRele1Off_Click(object sender, EventArgs e)
345345

346346
#region Commands: Inputs
347347

348-
private void buttonGetInputs_Click(object sender, EventArgs e)
348+
private void buttonGetIOCount_Click(object sender, EventArgs e)
349349
{
350350
if (quido != null)
351351
{
352-
LogMsg("*** GetInputs ***");
353-
KvidoTestDelays(null);
354-
355-
356-
357-
//new System.Threading.Timer(ee =>
358-
//{
359-
360-
// bool[] inputs = null;
361-
// if (quido.CmdGetInputs(out inputs))
362-
// {
363-
// string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
364-
// LogMsg(bits);
365-
// //for (int index = 0; index < inputs.Length; index++)
366-
// //{
367-
// // LogMsg("Input " + index.ToString() + " is " + ((inputs[index]) ? "ON" : "OFF"));
368-
// //}
369-
// System.Diagnostics.Debug.Print("---!!!!---");
370-
// } else
371-
// {
372-
// LogMsg("Failed");
373-
// System.Diagnostics.Debug.Print("------");
374-
// }
375-
376-
377-
//}, null, TimeSpan.Zero, TimeSpan.FromMilliseconds(100));
378-
379-
380-
352+
if (quido.CmdGetIOCounts(out int inputsCount, out int outputsCount, out int thermsCount))
353+
{
354+
LogMsg($"Quido has {inputsCount} inputs, {outputsCount} outputs and {thermsCount} thermometer");
355+
}
356+
else
357+
{
358+
LogMsg("Failed");
359+
}
381360
}
382361
}
383362

384-
385-
private void KvidoTestDelays(object state)
363+
private void buttonGetInputs_Click(object sender, EventArgs e)
386364
{
387-
388-
bool[] inputs = null;
389-
if (quido.CmdGetInputs(out inputs))
390-
{
391-
string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
392-
// LogMsg(bits);
393-
//for (int index = 0; index < inputs.Length; index++)
394-
//{
395-
// LogMsg("Input " + index.ToString() + " is " + ((inputs[index]) ? "ON" : "OFF"));
396-
//}
397-
// System.Diagnostics.Debug.Print("------");
398-
}
399-
else
365+
if (quido != null)
400366
{
401-
LogMsg("Failed");
402-
System.Diagnostics.Debug.Print("---Failed---");
367+
bool[] inputs = null;
368+
if (quido.CmdGetInputs(out inputs))
369+
{
370+
string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
371+
StringBuilder result = new StringBuilder();
372+
for (int i = 0; i < bits.Length; i++) {
373+
result.Append(bits[i]);
374+
if ((i + 1) % 4 == 0 && i != bits.Length - 1) result.Append(' ');
375+
}
376+
LogMsg("GetInputs: " + result.ToString());
377+
}
378+
else
379+
{
380+
LogMsg("Failed");
381+
}
403382
}
404-
405-
System.Threading.Timer callbackTimer = new System.Threading.Timer(KvidoTestDelays, null, 100, Timeout.Infinite);
406-
407383
}
408384

409385
#endregion

0 commit comments

Comments
 (0)