Public Documentation
  • Introduction
  • Getting started
    • Introduction
    • 1. Welcome Page
    • 2. Introduction (Beginner's Guide)
  • Portal Tools
    • Blocko
      • Ůvod do blocka
      • Flip-flop
      • REST-API bloček
    • Grid
      • Úvod do GRID
      • Základní Tlačítko (základy GRID)
      • vylepšený Přepínač (stylování a pokročilé možnosti GRID)
      • text generátor button (messeage type, two elements one widget)
      • graf (pokročilé funkce GRID)
      • Slider (User class v GRIDu)
      • Styly a jejich použití
  • Cloud
    • Cloud
    • Instancies
    • Rest-Api
  • General
    • What we plan
  • Hardware a programování
    • Úvod
      • Nahrání prvního programu
    • Konektivita
      • Specifikace zdroje internetu
      • GSM
      • 6LowPAN
      • Komunikace s portálem
      • Přepínání mezi servery
    • Hardware
      • Základní jednotky
        • IODAG3E
          • Rozhraní a periférie
          • Konektor X a Y
          • Napájení
          • Připojení zdroje k VBAT
          • Paměti
          • Technické specifikace
          • Schémata
        • IODAG3L
      • Rozšiřující moduly
        • GSM shield
        • LED shield
        • Relay shield
        • RFID shield
        • Ultrasonic shield
        • Meteo shield
        • Movement shield
        • PIR shield
        • RGB Displej shield
        • Serial shield
      • Ostatní
        • DevKitG3
          • Schéma
        • TK3G
          • Schéma
        • ZPPG3
          • Schéma
        • WEXP
    • Programování HW
      • Architektura FW
        • Aktualizace FW
        • Autobackup
      • Struktura programu
      • Byzance API
        • Vstupy a výstupy do Portálu
        • Callback Busy
        • Odložený restart
        • Callbacky připojení
        • Uživatelská makra
      • MBED API
        • Vstupy a výstupy
        • Komunikační rozhraní
        • Časování
        • RTOS
      • Knihovny
        • DHT
        • DS1820
        • Dali
        • EdgeStruct
        • I2CWrapper
        • Knock
        • MFRC522
        • MFRC522::MIFARE_Key
        • MPU9150
        • ms5637
        • OneWire
        • PCA9536
        • RGB_matrix
        • RollerDrive
        • SHT21
        • ST7565
        • Servo
        • TCA6424A
        • TLC59116
        • TripleSevenSeg
        • MFRC522::Uid
        • WS2812
        • WakeUp
      • Offline programování
        • Vlastní IDE
        • Upload kódu z GUI
        • Upload kódu z konzole
        • Upload kódu Drag&drop
    • Tutoriály
      • Datum a čas (RTC)
      • Komunikace po sériové lince (UART) s PC
        • Konfigurace sériové linky v PC
        • Programování sériové linky
      • Základní tutoriály
        • Digital Read
        • Analog Read/Write
        • PWM Fade
        • Timer/Ticker
        • State Change Detection
        • Ovládání LED modulu
        • BusOut
        • HC-SR04 Senzor
      • Pokročilé
    • Správa a diagnostika
      • Zdroj restartu
      • LED modul
      • Identifikace zařízení
      • Monitoring parametrů
      • Vytížení zařízení
      • Webové rozhraní
        • Základní přehled
        • Správce firmware
        • Vlákna
        • Definované vstupy
        • Konfigurace MQTT
        • Nastavení
      • Bootloader
        • Režimy bootloaderu
        • Command mód
        • Další vlastnosti bootloaderu
      • Webová konzole
      • Konfigurace zařízení
        • Confighash
      • Omezení konfigurace
        • Konfigurace
        • Binárky
        • Omezení MQTT
        • Lowpan
    • Knowledge base
      • Náhodná čísla
      • Watchdog
      • Paměť RAM
Powered by GitBook
On this page
  • Definice fyzických vstupů a výstupů
  • Definice virtuálních vstupů a výstupů
  • Definice komunikačních rozhraní
  • Hlavní funkce programu
  • Funkce pre_init()
  • Funkce init()
  • Funkce loop()
  • Hello world
  1. Hardware a programování
  2. Programování HW

Struktura programu

PreviousAutobackupNextByzance API

Last updated 6 years ago

Zařízení Byznce se programují v jazyce C++ a využívají a . Pro správnou funkčnost programu je nutné na první řádek nejprve importovat knihovnu "byzance.h" příkazem

#include "byzance.h"

Tato knihovna má za úkol automaticky inicializovat periferie, připojit zařízení k internetu a inicializovat vlákna, která se starají o a připojení k serverům. Importem knihovny se také zpřístupní funkce a .

Definice fyzických vstupů a výstupů

Po importu všech potřebných knihoven je možno začít používat objekty definované v knihovnách. Může se jednat o vytvoření konstuktorů, periferie, nebo fyzické , které se budou v programu používat.

// Definice fyzických vstupů a výstupů
DigitalOut DI1(X02);
DigitalIn DO1(X05);
AnalogOut AO1(Y23);
AnalogIn AI1(Y22)

Další informace je možno naleznout v sekci .

Definice virtuálních vstupů a výstupů

Při programování funkčního bloku nástroji BLOCKO v portálu Byzance je často potřeba definovat virtuální vstupy a výstupy, které symbolizují právě vstupy a výstupy funkčního bloku ven ze zařízení. Tyto definice je nutné zanést společně s fyzickými vstupy a výstupy.

// digitalni vstup s nazvem din_name
DIGITAL_INPUT(din_name, {
    my_din_variable = value;
})

// analogovy vstup s nazvem ain_name
ANALOG_INPUT(ain_name, {
    my_ain_variable = value;
})

Bližší informace o významu a funkci virtuálních vstupů/výstupů a jejich programování je možno naleznout v příslušné kapitole.

Definice komunikačních rozhraní

Pokud je v programu potřeba využít nějaké komunikační rozhraní jako Sériová linka, SPI, CAN apd. je vhodné provést jejich definici v této části za definicí vstupů a výstupů. Definice sériové linky je znázorněna v následujícím kódu.

Serial pc(SERIAL_TX_pin, SERIAL_RX_pin); // tx, rx

Hlavní funkce programu

Program může mít definované tři základní funkce

  • pre_init()

  • init()

  • loop()

Funkce pre_init()

Tato funkce je zavolána na začátku programu jako první, ještě předtím, než je inicializováno vlákno Byzance a předtím než se zařízení připojí k serverům. Tuto funkci není povinné implementovat, nicméně její implementace může být užitečná například při debugu komunikace se servery nebo ovládání některých funkcí inicializovaných operačním systémem MBED.

void pre_init(){

}

Funkce init()

Funkce init je provedená hned po funkci pre_init a stejně tak pouze jednou. Tato funkce slouží k inicializaci prvků potřebných v hlavní části programu. Její implementace není povinná.

void init(){
    pc.printf("Hello world\n");
}

Funkce loop()

Poslední hlavní funkcí je funkce loop, Tato funkce je vykonávaná ve smyčce a nahrazuje tak funkci while(true). Jediným rozdílem je to, že mezi jednotlivými smyčkami se dává prostor Byzance vláknu, které zajišťuje komunikaci a resetuje se watchdog.

void loop(){
    pc.printf("Hello world\n");
    Thread::wait(500);
}

Hello world

Následující kód zobrazuje strukturu programu Hello_world s definicí vstupů, výstupů a komunikačních rozhraní a implementací všech třech hlavních funkcí

#include "byzance.h"

// Definice fyzických vstupů a výstupů
DigitalOut DO1(X02);
DigitalIn DI1(X05);
AnalogOut AO1(Y23);
AnalogOut AI1(Y22);

Serial pc(SERIAL_TX, SERIAL_RX); // tx, rx

void init(){
    // Hello world se vypise jednou pri startu
    pc.printf("Hello world from init function\n");
}

void loop(){
    // Hello world se bude vypisovat stale dokola kazdych 500 ms
    pc.printf("Hello World\n");
    Thread::wait(500);
}

Bližší informace ke komunikačním rozhraním lze získat v sekci

MBED API
Byzance API
aktualizaci firmware
Byzance API
uživatelská makra
vstupy a výstupy
MBED API
Vstupy a výstupy do Portálu
MBED API-Komunikační rozhraní