Example #1
0
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            if (FTransporter == null)
            {
                FTransporter           = new WebsocketClientTransporter();
                FTransporter.Connected = () => Initialize();
                FRCPClient.SetTransporter(FTransporter);
                FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
            }
            else if (FRemoteHost.IsChanged || FRemotePort.IsChanged)
            {
                FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
            }

            //request all values from the server
            if (FInit[0])
            {
                if (!FTransporter.IsConnected)
                {
                    FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
                }
                else
                {
                    Initialize();
                }
            }

            FIsConnected[0] = FTransporter.IsConnected;
        }
Example #2
0
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            if (FTransporter == null)
            {
                FTransporter           = new WebsocketClientTransporter();
                FTransporter.Connected = () => Initialize();
                FRCPClient.SetTransporter(FTransporter);
                FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
            }
            else if (FRemoteHost.IsChanged || FRemotePort.IsChanged)
            {
                FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
            }

            //request all values from the server
            if (FInit[0])
            {
                if (!FTransporter.IsConnected)
                {
                    FTransporter.Connect(FRemoteHost[0], FRemotePort[0]);
                }
                else
                {
                    Initialize();
                }
            }

            FIsConnected[0] = FTransporter.IsConnected;
            if (FIsConnected[0])
            {
                if (!string.IsNullOrWhiteSpace(FRCPClient.ConnectedServerVersion))
                {
                    FServerInfo[0] = "RCP Version: " + FRCPClient.ConnectedServerVersion + ", Application Id: " + FRCPClient.ConnectedServerApplicationId;
                }
            }
            else
            {
                FParamIds.Clear();
                UpdateOutputs();
            }
        }
Example #3
0
        public Client()
        {
            InitializeComponent();

            var transporter = new WebsocketClientTransporter();

            Carrot = new RCPClient();
            Carrot.SetTransporter(transporter);

            Carrot.ParameterAdded += (s, p) =>
            {
                UIParams.Add(p.Id, p);
                label1.Text = UIParams.Count.ToString() + ": " + p.Label;

                p.Updated += P_Updated;

                if (p is BangParameter)
                {
                    FTheBang         = p as BangParameter;
                    FTheBang.OnBang += Client_OnBang;
                }
                else if (p is ImageParameter)
                {
                    var imageParam = p as ImageParameter;
                    using (var stream = new MemoryStream(imageParam.Value))
                    {
                        stream.Seek(0, SeekOrigin.Begin);
                        var img = Image.FromStream(stream);
                        pictureBox1.Image = img;
                    }
                }
            };

            Carrot.ParameterRemoved += (s, p) =>
            {
                if (p is BangParameter)
                {
                    FTheBang.OnBang -= Client_OnBang;
                    FTheBang         = null;
                }
                //remove UI matching p
                UIParams.Remove(p.Id);
            };

            Carrot.StatusChanged = (status, message) =>
            {
                // e.g.:
                switch (status)
                {
                case RcpTypes.ClientStatus.Disconnected: /*show something*/ break;

                case RcpTypes.ClientStatus.Connected: Carrot.Initialize(); break;

                case RcpTypes.ClientStatus.VersionMissmatch: MessageBox.Show(message); break;

                case RcpTypes.ClientStatus.Ok: /*nop*/ break;
                }
            };

            transporter.Connect("127.0.0.1", 10000);
        }