Vlastní driver

Driver je .NET knihovna (DLL). QInsight ji objeví automaticky — stačí, aby třída implementovala rozhraní IDriverBase a DLL ležela ve složce Drivers vedle QInsight.exe. Žádná další registrace není potřeba.

Kostra driveru

Prakticky se dědí z hotové základní třídy DriverBase, která obstará společné věci (protokoly, stavy, nastavení):

public class MyDeviceDriver : DriverBase, ITransportSource<byte[]>
{
    public MyDeviceDriver()   // bezparametrový konstruktor je povinný
    {
        Specification = new SpecificationBase
        {
            Name = "MyDeviceDriver",
            Label = "My Device",
        };
    }

    public override void SetConfiguration()
    {
        // rozparsovat RawSettings ("klíč=hodnota;...") do vlastních polí
    }

    public override async Task StartAsync(CancellationToken ct)
    {
        // otevřít spojení, spustit čtecí smyčku,
        // přijatá data předávat protokolům
    }

    public override async Task StopAsync(CancellationToken ct)
    {
        // ukončit komunikaci a uvolnit spojení
    }

    public override void Send<T>(T data) { /* odeslání dat zařízení */ }
    public override Task SendAsync<T>(T data, CancellationToken ct)
        => Task.Run(() => Send(data), ct);

    public override void Dispose() { /* úklid */ }
}

ITransportSource<T> deklaruje typ dat, který driver předává protokolům (byte[] pro bajtové proudy, CanFrame pro CAN rámce, …). Nemá žádné členy — slouží jen k tomu, aby Project Configuration nabídla k driveru pouze protokoly stavěné na stejné T (nekompatibilní se zašedí). Driver bez deklarace se bere jako neomezený.

O stavu driver informuje voláním SetState(...) — stav se propisuje do okna Logs i do UI.

Šablonu nastavení si driver nese sám: přepište property DefaultRawSettings a vraťte řetězec se všemi parametry a reprezentativními hodnotami — předvyplní se uživateli při přidání driveru v Project Configuration.

Volitelné schopnosti

Podle potřeby driver implementuje další rozhraní:

  • ITransportSource<T> — deklaruje typ přenášených dat pro kompatibilitu protokolů (viz kostra výše),
  • IReplayDriver — driver umí přehrávat záznam (pauza, seek, rychlost…),
  • IProtocolVariableSinkDriver — driver hodnoty odebírá (např. logger),
  • IProtocolVariableCommandDriver — driver přijímá příkazy proměnných.

Nasazení

Zkompilovanou DLL nakopírujte do složky Drivers. Po restartu QInsight se driver objeví v nabídce Home → Project Configuration → Drivers. Do projektu se ukládá jen reference (jméno + verze), takže projekt lze přenést na jiný počítač se stejnou sadou driverů.

Dále

Vlastní protokol — funkční dvojice driver + protokol pak najdete ve dvou kapitolách: nejmenší možnou v Ukázce ISS a plný vzor včetně zápisu v Ukázce teploměr.