Skip to content

Dokumentace: THT2, TH2E

papouch.com edited this page Jul 3, 2018 · 8 revisions

Hlavní části této stránky:

Může se hodit:

Základní příklad použití

Nejjednodušší příklad C# WPF aplikace s tlačítkem Měřit.

using Papouch.Communication;
using Papouch.Spinel.Spinel97;
using Papouch.Spinel.Spinel97.Device.Tht2Th2e;
using System;
using System.Windows;

namespace TestApp
{
    public partial class MainWindow : Window
    {
        private ICommunicationInterface ci;
        public Tht2Th2e MyDevice;

        public MainWindow()
        {
            InitializeComponent();

            // Příklad pro THT2 ("sériový port" RS485):
            ci = new CiSerialPort();
            ci.ConfigString = "provider=SERIAL_PORT;PortName=COM4;BaudRate=9600;";

            // Příklad pro TH2E na adrese 192.168.1.124 s datovým portem 10001:
            // Upozornění: TH2E musí být v režimu TCP server!
            //ci = new CiTcpClient();
            //ci.ConfigString = "provider=TCP_CLIENT;Host=192.168.1.124;Port=10001;";

            if (!ci.Open(true))
            {
                MessageBox.Show("Spojení se nepodařilo otevřít!");
                Application.Current.Shutdown();
            }

            // 0x31 je výchozí adresa z výroby
            // 0xFE je univerzální adresa pokud je na lince jen jedno zařízení
            MyDevice = new Tht2Th2e(ci, 0xFE);
            if (MyDevice == null)
            {
                MessageBox.Show("Zařízení se nepovedlo inicializovat!");
                Application.Current.Shutdown();
            }
        }

        private void Measure_Click(object sender, RoutedEventArgs e)
        {
            ResponseACK MeasureAck = MyDevice.CmdGetMeasure(out Tht2Th2e.MeasuredValues values);
            string output = "";
            if (MeasureAck == ResponseACK.AllIsOk)
            {
                output += $"Statusy teploty: {values.TemperatureStatus} \n";
                if (values.TemperatureStatus.HasFlag(Tht2Th2e.FlagsStatus.Valid))
                    output += $"Teplota: {values.Temperature:0.0} ° \n";

                output += $"Statusy vlhkosti: {values.HumidityStatus} \n";
                if (values.HumidityStatus.HasFlag(Tht2Th2e.FlagsStatus.Valid))
                    output += $"Vlhkost: {values.Humidity:0.0} % \n";

                output += $"Statusy rosného bodu: {values.DewPointStatus} \n";
                if (values.DewPointStatus.HasFlag(Tht2Th2e.FlagsStatus.Valid))
                    output += $"Rosný bod: {values.DewPoint:0.0} ° \n";
            }
            else
                output += $"Chyba: {MeasureAck}";

            TxtOutput.Text = output.Trim();
        }

    }
}

...a definice jednoduchého rozhraní ve WPF:

<Window x:Class="TestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:QuidoApp"
        mc:Ignorable="d"
        Title="TestApp" Height="152" Width="400" ResizeMode="NoResize">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <TextBox x:Name="TxtOutput" Text="?" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12" />
        <Button Grid.Column="1" Content="Měřit" Margin="20" Click="Measure_Click"/>
    </Grid>
</Window>