Example #1
0
 internal void Add(string name, string type, string connection, string commandMode, string portName, bool?HardwareFlowControl, string networkHost, int?networkPort)
 {
     lock (this.DiscChangers)
     {
         string keyBase = new String(name.ToLower().Where(c => !char.IsWhiteSpace(c)).Take(6).ToArray());
         int    i       = 0;
         string key     = keyBase;
         while (key2DiscChanger.ContainsKey(key))
         {
             i++;
             key = keyBase + i.ToString();
         }
         DiscChanger dc = DiscChanger.Create(type); dc.Key = key;
         Update(dc, name, type, connection, commandMode, portName, HardwareFlowControl, networkHost, networkPort);
         DiscChangers.Add(dc);
         key2DiscChanger[key] = dc;
         Save();
         _hubContext.Clients.All.SendAsync("Reload");
     }
 }
Example #2
0
        internal async Task <string> Test(string key, string type, string connection, string commandMode, string portName, bool?HardwareFlowControl, string networkHost, int?networkPort)
        {
            DiscChanger d = null;
            bool        b = key != null && key2DiscChanger.TryGetValue(key, out d) && connection == d.Connection && portName == d.PortName && networkHost == d.NetworkHost && networkPort == d.NetworkPort;

            if (b)
            {
                d.Disconnect();
            }
            DiscChanger dc = DiscChanger.Create(type);

            try
            {
                dc.Connection          = connection;
                dc.CommandMode         = commandMode;
                dc.PortName            = portName;
                dc.HardwareFlowControl = HardwareFlowControl;
                dc.NetworkHost         = networkHost;
                dc.NetworkPort         = networkPort;
                await dc.Connect(null, null, _logger);

                return(await dc.Test());
            }
            catch (Exception e)
            {
                return($"Disc changer testing of ({key},{type},{connection},{commandMode},{portName},{HardwareFlowControl},{networkHost}) returned error: {e.Message}");
            }
            finally
            {
                dc.Disconnect();
                if (b)
                {
                    await d.Connect();
                }
            }
        }