public string?Open()
        {
            try
            {
                AddDevices();

                var link = AUTDSettings.Instance.LinkSelected switch
                {
                    LinkSelect.SOEM => Link.SOEM(AUTDSettings.Instance.InterfaceName.Split(',').LastOrDefault()?.Trim() ?? string.Empty,
                                                 _autd.NumDevices, AUTDSettings.Instance.CycleTicks),
                    LinkSelect.TwinCAT => Link.TwinCAT(),
                    LinkSelect.Emulator => Link.Emulator(AUTDSettings.Instance.EmulatorPort, _autd),
                    _ => throw new NotImplementedException()
                };

                if (!_autd.Open(link))
                {
                    return(AUTD.LastError);
                }

                IsOpen.Value = true;
                _autd.Clear();
                return(null);
            }
            catch (Exception e)
            {
                return(e.Message);
            }
        }
Beispiel #2
0
        public static void Run(AUTD autd)
        {
            var examples = new List <(TestFn, string)> {
                (SimpleTest.Test, "Single Focal Point Test"),
                (BesselBeamTest.Test, "BesselBeam Test"),
                (HoloGainTest.Test, "Multiple Focal Points Test"),
                (STMTest.Test, "Spatio-Temporal Modulation Test"),
                (SeqTest.Test, "PointSequence Test (Hardware STM)"),
                (SeqGainTest.Test, "GainSequence Test (Hardware STM with arbitrary Gain)"),
                (AdvancedTest.Test, "Advanced Test (Custom gain/modulation, and output delay)"),
                (CustomTest.Test, "Custom Test (Custom Focus)")
            };

            if (autd.NumDevices == 2)
            {
                examples.Add((GroupTest.Test, "Grouped gain Test"));
            }

            autd.Clear();

            var firmList = autd.FirmwareInfoList().ToArray();

            if (!firmList.Any())
            {
                Console.WriteLine("Failed to read firmware information of some devices. You probably use firmware v1.8 or earlier.");
            }
            foreach (var(firm, index) in firmList.Select((firm, i) => (firm, i)))
            {
                Console.WriteLine($"AUTD {index}: {firm}");
            }

            while (true)
            {
                for (var i = 0; i < examples.Count; i++)
                {
                    Console.WriteLine($"[{i}]: {examples[i].Item2}");
                }

                Console.WriteLine("[Others]: finish");
                Console.Write("Choose number: ");

                if (!int.TryParse(Console.ReadLine(), out var idx) || idx >= examples.Count)
                {
                    break;
                }

                var fn = examples[idx].Item1;
                fn(autd);

                Console.WriteLine("press any key to finish...");
                Console.ReadKey(true);

                Console.WriteLine("finish.");
                autd.Stop();
            }

            autd.Clear();
            autd.Close();
            autd.Dispose();
        }
Beispiel #3
0
    void Awake()
    {
        _autd = new AUTD();

        _autd.AddDevice(gameObject.transform.position, gameObject.transform.rotation);

        string ifname = @"write your interface name here";

        _link = Link.SOEM(ifname, _autd.NumDevices);
        _autd.Open(_link);

        _autd.Clear();

        _autd.Send(Modulation.Sine(150)); // 150 Hz
    }
Beispiel #4
0
 public void Clear()
 {
     _autd.Clear();
 }