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
    void Awake()
    {
        _autd = new AUTD();

        // 単位や座標系はUnity空間に合わせてあります
        // つまり, 単位はm, 座標系は"z"軸の反転した左手座標系です
        // また, 回転指定にクオータニオンを直接指定できます.
        _autd.AddDevice(gameObject.transform.position, gameObject.transform.rotation);

        _autd.Open();
        _autd.AppendModulationSync(AUTD.SineModulation(150)); // 150 Hz
    }
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 static void Test()
        {
            Console.WriteLine("Test with TwinCAT");

            var autd = new AUTD();

            autd.AddDevice(Vector3d.Zero, Vector3d.Zero);

            var link = Link.TwinCAT();

            if (!autd.Open(link))
            {
                Console.WriteLine(AUTD.LastError);
                return;
            }

            TestRunner.Run(autd);
        }
Beispiel #5
0
        public static void Test()
        {
            Console.WriteLine("Test with SOEM");

            var autd = new AUTD();

            autd.AddDevice(Vector3d.Zero, Vector3d.Zero);
            //autd.AddDevice(Vector3d.Zero, Vector3d.Zero, 1);

            var ifname = GetIfname();
            var link   = Link.SOEM(ifname, autd.NumDevices, 1, x =>
            {
                Console.WriteLine($"Unrecoverable error occurred: {x}");
                Environment.Exit(-1);
            });

            if (!autd.Open(link))
            {
                Console.WriteLine(AUTD.LastError);
                return;
            }

            TestRunner.Run(autd);
        }