public void SetUp()
        {
            server = new CAServer(IPAddress.Parse("127.0.0.1"));
            client = new CAClient();
            client.Configuration.SearchAddress = "127.0.0.1";
            client.Configuration.WaitTimeout   = TIMEOUT;

            record = server.CreateRecord <CADoubleRecord>("TEST:DBL");

            record.LowAlarmLimit       = 25;
            record.LowAlarmSeverity    = Constants.AlarmSeverity.MINOR;
            record.LowLowAlarmLimit    = 20;
            record.LowLowAlarmSeverity = Constants.AlarmSeverity.MAJOR;

            record.HighAlarmLimit        = 100;
            record.HighAlarmSeverity     = Constants.AlarmSeverity.MINOR;
            record.HighHighAlarmLimit    = 105;
            record.HighHighAlarmSeverity = Constants.AlarmSeverity.MAJOR;

            record.Value            = 10;
            record.EngineeringUnits = "My";
            server.Start();
            AutoResetEvent waitOne = new AutoResetEvent(false);

            record.RecordProcessed += (obj, args) =>
            {
                waitOne.Set();
            };
            waitOne.WaitOne();
        }
        internal static DataPipe CreateClientUdp(CAClient client, int udpReceiverPort = 0)
        {
            DataPipe res = PopulatePipe(new object[] { new UdpReceiver(null, udpReceiverPort), typeof(PacketSplitter), typeof(ClientHandleMessage) });

            ((ClientHandleMessage)res.LastFilter).Client = client;
            return(res);
        }
        public void SetUp()
        {
            client = new CAClient();
            client.Configuration.SearchAddress = "127.0.0.1";
            client.Configuration.WaitTimeout   = TIMEOUT;

            ServerInit();
        }
        internal static DataPipe CreateClientTcp(CAClient client, System.Net.IPEndPoint iPEndPoint)
        {
            DataPipe res = PopulatePipe(new Type[] { typeof(ClientTcpReceiver), typeof(PacketSplitter), typeof(ClientHandleMessage) });

            ((ClientTcpReceiver)res[0]).Init(client, iPEndPoint);
            ((ClientHandleMessage)res.LastFilter).Client = client;
            return(res);
        }
Esempio n. 5
0
 public void SetUp()
 {
     server = new CAServer(IPAddress.Parse("127.0.0.1"));
     client = new CAClient();
     client.Configuration.SearchAddress = "127.0.0.1";
     client.Configuration.WaitTimeout   = TIMEOUT;
     server.Start();
 }
Esempio n. 6
0
        internal static void S2()
        {
            //CAServer server = new CAServer(System.Net.IPAddress.Parse("129.129.194.45"), 5432, 5432);
            CAServer server = new CAServer(System.Net.IPAddress.Parse("127.0.0.1"), 5432, 5432);
            var      record = server.CreateArrayRecord <CAIntArrayRecord>("BERTRAND:ARR", 196 * 196);
            var      start  = 0;

            record.Scan           = EpicsSharp.ChannelAccess.Constants.ScanAlgorithm.HZ2;
            record.PrepareRecord += (sender, evt) =>
            {
                for (var i = 0; i < record.Value.Length; i++)
                {
                    record.Value[i] = start + i;
                }
                start++;
            };

            var r2 = server.CreateRecord <CAStringRecord>("BERTRAND:STR");

            r2.Value = "Hello there!";

            server.Start();

            //Thread.Sleep(1000);

            CAClient client = new CAClient();

            //client.Configuration.SearchAddress = "129.129.194.45:5432";
            client.Configuration.SearchAddress = "127.0.0.1:5432";
            var channel = client.CreateChannel <int[]>("BERTRAND:ARR");

            channel.MonitorMask = EpicsSharp.ChannelAccess.Constants.MonitorMask.ALL;

            channel.StatusChanged += (sender, newStatus) =>
            {
                Console.WriteLine(
                    "{0} : status {1}",
                    sender.ChannelName,
                    newStatus
                    );
            };
            int sequenceNumber = 0;

            channel.WishedDataCount = 196 * 196;
            channel.MonitorChanged += (sender, newValue) =>
            {
                Console.WriteLine(
                    $"{sender.ChannelName} : {newValue.Length} array elements ; #{sequenceNumber++}"
                    );
            };

            /*var chan2 = client.CreateChannel<string>("BERTRAND:STR");
             * Console.WriteLine(chan2.Get());*/

            //var r = channel.Get();
            System.Console.ReadLine();
        }
 public HomeController()
 {
     _bingApiKey              = ConfigurationManager.AppSettings["BingApiKey"];
     _daysToCache             = Convert.ToInt32(ConfigurationManager.AppSettings["MeetingJsonDayspan"]);
     _dateToCache             = DateTime.Now.AddDays(_daysToCache);
     _bingClient              = new BingClient(_bingApiKey);
     _aaClient                = new AAClient();
     _caClient                = new CAClient();
     _naClient                = new NAClient();
     _filterAndSortingUtility = new FilterAndSortingUtility();
 }
Esempio n. 8
0
        public void Initialize()
        {
            Server = new CAServer(IPAddress.Parse("127.0.0.1"));
            Client = new CAClient();
            Client.Configuration.SearchAddress = "127.0.0.1";
            Client.Configuration.WaitTimeout   = TIMEOUT;

            var  countChange = new AutoResetEvent(false);
            long count       = 3;

            IntArrayRecord    = Server.CreateArrayRecord <CAIntArrayRecord>(IntArrayChannelName, 20);
            IntSubArrayRecord = Server.CreateSubArrayRecord(IntSubArrayChannelName, IntArrayRecord);
            for (var i = 0; i < IntArrayRecord.Value.Length; i++)
            {
                IntArrayRecord.Value[i] = i;
            }

            FloatSubArrayRecord = Server.CreateSubArrayRecord <CAFloatSubArrayRecord>(FloatSubArrayChannelName, 10);
            for (byte i = 0; i < FloatSubArrayRecord.FullArray.Length; i++)
            {
                FloatSubArrayRecord.FullArray[i] = i;
            }

            ByteSubArrayRecord = Server.CreateSubArrayRecord <CAByteSubArrayRecord>(ByteSubArrayChannelName, 35);
            var str   = "Hello world";
            var bytes = Encoding.ASCII.GetBytes(str);

            for (byte i = 0; i < bytes.Length; i++)
            {
                ByteSubArrayRecord.FullArray[i] = bytes[i];
            }
            ByteSubArrayRecord.Scan = Constants.ScanAlgorithm.HZ10;

            void ProcessedHandler(object obj, EventArgs args)
            {
                Interlocked.Decrement(ref count);
                countChange.Set();
            };

            IntArrayRecord.RecordProcessed      += ProcessedHandler;
            FloatSubArrayRecord.RecordProcessed += ProcessedHandler;
            ByteSubArrayRecord.RecordProcessed  += ProcessedHandler;

            while (Interlocked.Read(ref count) > 0)
            {
                if (!countChange.WaitOne(TIMEOUT))
                {
                    Server.Dispose();
                    throw new Exception("Timed out");
                }
            }
            Server.Start();
        }
Esempio n. 9
0
        internal static DataPipe CreateClientUdp(CAClient client)
        {
            DataPipe dataPipe = PopulatePipe(
                new Type[] {
                typeof(UdpReceiver),
                typeof(PacketSplitter),
                typeof(ClientHandleMessage)
            }
                );

            (
                (ClientHandleMessage)dataPipe.LastFilter
            ).Client = client;
            return(dataPipe);
        }
Esempio n. 10
0
        public static void Main(string[] args)
        {
            using (var server = new CAServer())
            {
                var intArrChannel = server.CreateArrayRecord <CAIntArrayRecord>(ArrayChannel, 20);
                var subArrChannel = server.CreateSubArrayRecord(SubArrayChannel, intArrChannel);
                subArrChannel.Scan = ScanAlgorithm.SEC1;

                // Fill array
                for (var i = 0; i < 20; i++)
                {
                    intArrChannel.Value[i] = i;
                }

                subArrChannel.Index  = 0;
                subArrChannel.Length = 10;

                // Shift subarray position and length every second
                var counter = 0;
                subArrChannel.PrepareRecord += (s, e) =>
                {
                    counter++;
                    counter              = counter > 5 ? 0 : counter;
                    subArrChannel.Index  = counter;
                    subArrChannel.Length = 10 + counter;
                };

                server.Start();
                Console.WriteLine("Server started");

                using (var client = new CAClient())
                {
                    var arrayChannel    = client.CreateChannel <int[]>(ArrayChannel);
                    var subArrayChannel = client.CreateChannel <int[]>(SubArrayChannel);

                    void Handler(Channel <int[]> s, int[] v)
                    {
                        Console.WriteLine($"{s.ChannelName}: {string.Join(", ", v)}");
                    };
                    arrayChannel.MonitorChanged    += Handler;
                    subArrayChannel.MonitorChanged += Handler;
                    Console.ReadKey();
                    subArrayChannel.MonitorChanged -= Handler;
                    arrayChannel.MonitorChanged    -= Handler;
                }
            }
        }
Esempio n. 11
0
        static void Main(string[] args)
        {
            var server = new CAServer(IPAddress.Parse("129.129.194.45"));

            var record = server.CreateRecord <CAByteRecord>("TEST-BYTE");

            record.Value = 5;
            server.Start();

            var client = new CAClient(5432);

            client.Configuration.SearchAddress = "129.129.194.45";
            var channel = client.CreateChannel <byte>("TEST-BYTE");

            Console.WriteLine(channel.Get());
            Console.ReadKey();
        }
        public void Initialize()
        {
            Server = new CAServer(IPAddress.Parse("127.0.0.1"));
            Client = new CAClient();
            Client.Configuration.SearchAddress = "127.0.0.1";
            Client.Configuration.WaitTimeout   = TIMEOUT;

            IntArrayRecord = Server.CreateArrayRecord <CAIntArrayRecord>(IntArrayChannelName, 20);
            for (var i = 0; i < IntArrayRecord.Value.Length; i++)
            {
                IntArrayRecord.Value[i] = i;
            }
            Server.Start();

            AutoResetEvent waitOne = new AutoResetEvent(false);

            IntArrayRecord.RecordProcessed += (obj, args) =>
            {
                waitOne.Set();
            };
            waitOne.WaitOne();
        }
        static void DoubleEvents()
        {
            CAClient client = new CAClient();

            client.Configuration.SearchAddress = "127.0.0.1";
            client.Configuration.WaitTimeout   = 500; // .5 seconds

            CAServer       server = new CAServer(IPAddress.Parse("127.0.0.1"));
            CADoubleRecord record = server.CreateRecord <CADoubleRecord>("TEST:DBL");

            record.Scan  = EpicsSharp.ChannelAccess.Constants.ScanAlgorithm.ON_CHANGE;
            record.Value = 0;

            long nbEvents = 0;

            //AutoResetEvent waitOne = new AutoResetEvent(false);
            Channel <double> channel = client.CreateChannel <double>("TEST:DBL");

            channel.MonitorChanged += delegate(Channel <double> c, double d)
            {
                nbEvents++;
                record.Value = nbEvents;
            };

            Stopwatch sw = new Stopwatch();

            sw.Start();

            while (sw.Elapsed.TotalSeconds < 10)
            {
                //Console.WriteLine(sw.Elapsed.TotalSeconds);
                Console.Write(string.Format("Time remaining {0:0.0}   \r", 10 - sw.Elapsed.TotalSeconds));
                Thread.Sleep(100);
            }
            Console.WriteLine("NB Double events: " + (nbEvents / 10) + " / sec.           ");
            server.Dispose();
            client.Dispose();
        }
Esempio n. 14
0
        private static void S4(string[] args)
        {
            var client = new CAClient(5432);

            //client.Configuration.SearchAddress = "129.129.194.45:5432";

            //client.Configuration.SearchAddress = "129.129.194.45:5055";
            client.Configuration.SearchAddress = "129.129.130.255:5064";
            //client.Configuration.SearchAddress = "129.129.130.255:5064;129.129.131.255:5064;129.129.137.255:5064;129.129.158.255:5064";
            client.Configuration.WaitTimeout = 2000;
            //var channel = client.CreateChannel<string>("SYSAD-AB:HOSTNAME");
            //var channel = client.CreateChannel<string>("ARIDI-PCT:CURRENT");
            //var r = channel.Get();
            var channel = client.CreateChannel <int[]>("DISKFREE-AB-LT:ARR-M");
            //channel.MonitorMask = EpicsSharp.ChannelAccess.Constants.MonitorMask.ALL;

            /*int sequenceNumber = 0;
             * channel.StatusChanged += (sender, newStatus) =>
             * {
             *  Console.WriteLine(
             *    "{0} : status {1}",
             *    sender.ChannelName,
             *    newStatus
             *  );
             * };
             *
             * channel.MonitorChanged += (sender, newValue) =>
             * {
             *  Console.WriteLine(
             *    $"{sender.ChannelName} : {newValue.Length} array elements ; #{sequenceNumber++}"
             *  );
             * };*/

            var r = channel.Get <int[]>();


            System.Console.ReadLine();
        }
        static void Main(string[] args)
        {
            int nbRepeat = 1;

            if (args.Any(row => row == "-r"))
            {
                for (int i = 0; i < args.Length; i++)
                {
                    if (args[i] == "-r")
                    {
                        i++;
                        nbRepeat = int.Parse(args[i]);
                    }
                }
            }

            for (int r = 0; r < nbRepeat || nbRepeat == 0;)
            {
                if (nbRepeat > 0)
                {
                    r++;
                }

                if (r != 0 || nbRepeat == 0)
                {
                    Console.WriteLine("-------------------------------------------");
                    Console.WriteLine("-------------------------------------------");
                    Thread.Sleep(100);
                }

                using (var client = new CAClient())
                {
                    client.Configuration.WaitTimeout = 10000;
                    client.Configuration.DebugTiming = true;

                    string channelName  = "";
                    bool   usingMonitor = false;

                    for (int i = 0; i < args.Length; i++)
                    {
                        if (args[i] == "-e")
                        {
                            i++;
                            client.Configuration.SearchAddress = args[i];
                        }
                        else if (args[i] == "-m")
                        {
                            usingMonitor = true;
                        }
                        else
                        {
                            channelName = args[i];
                        }
                    }

                    client.Configuration.DebugTiming = true;
                    Console.WriteLine("EPICS Configuration: " + client.Configuration.SearchAddress);
                    Console.WriteLine("Trying to read " + channelName);
                    var sw = new Stopwatch();
                    sw.Start();

                    var channel = client.CreateChannel <string>(channelName);

                    bool hasError = false;

                    if (usingMonitor)
                    {
                        Console.WriteLine("Monitor and wait for the first value back.");
                        channel.MonitorChanged += (c, v) =>
                        {
                            Console.WriteLine("Value: " + v);
                            gotMonitorValue.Set();
                        };
                        try
                        {
                            gotMonitorValue.WaitOne(5000);
                        }
                        catch
                        {
                            hasError = true;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Get and waits the value back.");
                        try
                        {
                            Console.WriteLine(channel.Get());
                        }
                        catch (Exception ex)
                        {
                            hasError = true;
                            //Console.WriteLine(ex);
                        }
                    }

                    sw.Stop();
                    Console.WriteLine("Status: " + channel.Status.ToString());
                    Console.WriteLine("-------------------------------------------");
                    Console.WriteLine("Timings:");
                    Console.WriteLine("-------------------------------------------");

                    TimeSpan?prevTime = null;
                    foreach (var i in channel.ElapsedTimings)
                    {
                        if (!prevTime.HasValue)
                        {
                            Console.WriteLine(i.Key + ": " + i.Value.ToString());
                        }
                        else
                        {
                            Console.WriteLine(i.Key + ": " + (i.Value - prevTime).ToString());
                        }
                        prevTime = i.Value;
                    }

                    Console.WriteLine("-------------------------------------------");
                    Console.WriteLine("Total: " + sw.Elapsed.ToString());
                    Console.WriteLine("Search answered by " + channel.SearchAnswerFrom);
                    Console.WriteLine("IOC: " + channel.IOC);
                    Console.WriteLine("EPICS Type: " + channel.ChannelDefinedType);
                    if (channel.Status != EpicsSharp.ChannelAccess.Constants.ChannelStatus.CONNECTED || hasError)
                    {
                        Console.Beep();
                    }
                }
            }

            if (System.Diagnostics.Debugger.IsAttached)
            {
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
            }
        }
Esempio n. 16
0
        private static void S1()
        {
            //CAServer server = new CAServer(System.Net.IPAddress.Parse("129.129.130.44"), 5162, 5162);
            CAServer server = new CAServer(System.Net.IPAddress.Parse("129.129.130.44"), 5432, 5432);
            var      record = server.CreateRecord <CAStringRecord>("BERTRAND:STR");

            record.Value          = "Hello there!";
            record.Scan           = EpicsSharp.ChannelAccess.Constants.ScanAlgorithm.HZ10;
            record.PrepareRecord += ((sender, e) => { record.Value = DateTime.Now.ToLongTimeString(); });

            var record2 = server.CreateRecord <CAStringRecord>("BERTRAND:STR2");

            record2.Value          = "Hello there too!";
            record2.Scan           = EpicsSharp.ChannelAccess.Constants.ScanAlgorithm.HZ10;
            record2.PrepareRecord += ((sender, e) => { record2.Value = DateTime.Now.ToLongTimeString(); });

            var record3 = server.CreateRecord <CAEnumRecord <MyEnum> >("BERTRAND:ENUM");

            record3.Value          = MyEnum.Alain;
            record3.Scan           = EpicsSharp.ChannelAccess.Constants.ScanAlgorithm.SEC1;
            record3.PrepareRecord += ((sender, e) => { record3.Value = 1 - record3.Value; });

            Thread.Sleep(1000);

            CAClient client = new CAClient();

            //client.Configuration.WaitTimeout = 1000;
            client.Configuration.SearchAddress = "129.129.130.44:5432";

            /*var c = client.CreateChannel<ExtControlEnum>("BERTRAND:ENUM");
             * var r=c.Get();*/

            var record4 = server.CreateRecord <CAEnumRecord <GoodEnumU8> >("TEST");

            record4.Value = GoodEnumU8.two;

            var channel = client.CreateChannel <ExtControlEnum>("TEST");
            var result  = channel.Get();


            Console.WriteLine("S to stop or start answering get");
            Console.WriteLine("Q to quit");
            Console.WriteLine("Running!");
            while (true)
            {
                switch (Console.ReadKey().Key)
                {
                case ConsoleKey.S:
                    //server.StopGet = !server.StopGet;
                    //record2.Dispose();
                    break;

                case ConsoleKey.Q:
                    return;

                default:
                    break;
                }
            }


            /*CAClient client = new CAClient();
             * client.Configuration.WaitTimeout = 1000;
             * var c=client.CreateChannel("ARIDI-PCT:CURREsNT");
             * Console.WriteLine(c.Get<string>());
             * Console.ReadKey();*/
        }