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); } }
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(); }
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 }
public void Clear() { _autd.Clear(); }