Skip to content

Commit

Permalink
Přidána instrukce Quida pro zjištění počtu vstupů, výstupů a teploměrů.
Browse files Browse the repository at this point in the history
  • Loading branch information
Papouchcom committed Sep 11, 2023
1 parent eff6c3b commit 0652507
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 51 deletions.
35 changes: 35 additions & 0 deletions Papouch.Spinel/Spinel97.Device.Quido.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,41 @@ public Boolean CmdSetRele(byte rele, Boolean value, byte timer = 0)
return CmdSetOutput(rele, value, timer);
}

/// <summary>
/// Zjistí počet vstupů, výstupů a vstupů pro teploměr
/// </summary>
/// <param name="inputsCount">počet vstupů</param>
/// <param name="outputsCount">počet výstupů</param>
/// <param name="thermsCount">počet vstupů pro teploměr</param>
/// <returns>vrací True v případě, že modul příkqaz zná a korektně odpoví</returns>
public Boolean CmdGetIOCounts(out int inputsCount, out int outputsCount, out int thermsCount)
{

if ((ci != null) && (ci.Active))
{
byte[] data = { 0x01 };
PacketSpinel97 txPacket = new PacketSpinel97(S97_INST_ReadInfo, data);
txPacket.ADR = this.ADR;

PacketSpinel97 rxPacket;

if (this.SendAndReceive(ref txPacket, out rxPacket))
{
if ((rxPacket.SDATA != null) && (rxPacket.SDATA.Length == 3))
{
inputsCount = rxPacket.SDATA[0];
outputsCount = rxPacket.SDATA[1];
thermsCount = rxPacket.SDATA[2];
return true;
}
}
}
inputsCount = -1;
outputsCount = -1;
thermsCount = -1;
return false;
}

/// <summary>
/// Nastavení výstupu
/// </summary>
Expand Down
13 changes: 13 additions & 0 deletions QuidoDemo_CS.NET/FormMain.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

78 changes: 27 additions & 51 deletions QuidoDemo_CS.NET/FormMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ private void checkFormControls()
numericOutputTimer.Enabled = bq;
labelOutputTimer.Enabled = bq;


buttonGetInputs.Enabled = bq;
buttonGetIOCount.Enabled = bq;

buttonGetCounter.Enabled = bq;
buttonGetCounterSettings.Enabled = bq;
Expand Down Expand Up @@ -345,65 +345,41 @@ private void buttonSetRele1Off_Click(object sender, EventArgs e)

#region Commands: Inputs

private void buttonGetInputs_Click(object sender, EventArgs e)
private void buttonGetIOCount_Click(object sender, EventArgs e)
{
if (quido != null)
{
LogMsg("*** GetInputs ***");
KvidoTestDelays(null);



//new System.Threading.Timer(ee =>
//{

// bool[] inputs = null;
// if (quido.CmdGetInputs(out inputs))
// {
// string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
// LogMsg(bits);
// //for (int index = 0; index < inputs.Length; index++)
// //{
// // LogMsg("Input " + index.ToString() + " is " + ((inputs[index]) ? "ON" : "OFF"));
// //}
// System.Diagnostics.Debug.Print("---!!!!---");
// } else
// {
// LogMsg("Failed");
// System.Diagnostics.Debug.Print("------");
// }


//}, null, TimeSpan.Zero, TimeSpan.FromMilliseconds(100));



if (quido.CmdGetIOCounts(out int inputsCount, out int outputsCount, out int thermsCount))
{
LogMsg($"Quido has {inputsCount} inputs, {outputsCount} outputs and {thermsCount} thermometer");
}
else
{
LogMsg("Failed");
}
}
}


private void KvidoTestDelays(object state)
private void buttonGetInputs_Click(object sender, EventArgs e)
{

bool[] inputs = null;
if (quido.CmdGetInputs(out inputs))
{
string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
// LogMsg(bits);
//for (int index = 0; index < inputs.Length; index++)
//{
// LogMsg("Input " + index.ToString() + " is " + ((inputs[index]) ? "ON" : "OFF"));
//}
// System.Diagnostics.Debug.Print("------");
}
else
if (quido != null)
{
LogMsg("Failed");
System.Diagnostics.Debug.Print("---Failed---");
bool[] inputs = null;
if (quido.CmdGetInputs(out inputs))
{
string bits = string.Join("", inputs.Select(b => b ? "1" : "0"));
StringBuilder result = new StringBuilder();
for (int i = 0; i < bits.Length; i++) {
result.Append(bits[i]);
if ((i + 1) % 4 == 0 && i != bits.Length - 1) result.Append(' ');
}
LogMsg("GetInputs: " + result.ToString());
}
else
{
LogMsg("Failed");
}
}

System.Threading.Timer callbackTimer = new System.Threading.Timer(KvidoTestDelays, null, 100, Timeout.Infinite);

}

#endregion
Expand Down

0 comments on commit 0652507

Please sign in to comment.