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
{
    public MyDeviceDriver()   // bezparametrový konstruktor je povinný
    {
        Specification = new SpecificationBase
        {
            Name = "MyDeviceDriver",
            Label = "My Device",
            Version = "1.0.0",
        };
    }

    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 */ }
}

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

Volitelné schopnosti

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

  • 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.