예제 #1
0
        /// <summary>
        /// Reads a virtual pin.
        /// </summary>
        /// <param name="vp">The virtual pin to read.</param>
        public void ReadVirtualPin(VirtualPin vp)
        {
            if (Connected)
            {
                txMessageId++;
                List <byte> txMessage = new List <byte>()
                {
                    ( byte )Command.HARDWARE_SYNC
                };

                txMessage.Add(( byte )(txMessageId >> 8));
                txMessage.Add(( byte )(txMessageId));
                txMessage.Add(( byte )'v');
                txMessage.Add(( byte )'r');
                txMessage.Add(0x00);

                txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(vp.Pin.ToString()));

                int msgLength = txMessage.Count - 3;

                txMessage.Insert(3, ( byte )((msgLength) >> 8));
                txMessage.Insert(4, ( byte )((msgLength)));

                WriteToTcpStream(txMessage);
            }
        }
예제 #2
0
        /// <summary>
        /// This is the widget set property sender
        /// </summary>
        /// <param name="vp">The virtual pin with properties to send.</param>
        public void SetProperty(VirtualPin vp)
        {
            if (Connected)
            {
                txMessageId++;
                List <byte> txMessage  = new List <byte>();
                int         startCount = 0;

                foreach (Tuple <object, object> p in vp.Property)
                {
                    startCount = txMessage.Count;

                    txMessage.Add((byte)Command.SET_WIDGET_PROPERTY);
                    txMessage.Add(( byte )(txMessageId >> 8));
                    txMessage.Add(( byte )(txMessageId));

                    txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(vp.Pin.ToString()));
                    txMessage.Add(0x00);
                    txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(p.Item1.ToString()));
                    txMessage.Add(0x00);
                    txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(p.Item2.ToString()));

                    int msgLength = (txMessage.Count - startCount) - 3;

                    txMessage.Insert(startCount + 3, ( byte )((msgLength) >> 8));
                    txMessage.Insert(startCount + 4, ( byte )((msgLength)));
                }

                WriteToTcpStream(txMessage);
            }
        }
예제 #3
0
        /// <summary>
        /// This is the virtual pin sender.
        /// </summary>
        /// <param name="vp">The virtual pin to send.</param>
        public void SendVirtualPin(VirtualPin vp)
        {
            if (Connected)
            {
                txMessageId++;
                List <byte> txMessage = new List <byte>()
                {
                    (byte)Command.HARDWARE
                };

                txMessage.Add(( byte )(txMessageId >> 8));
                txMessage.Add(( byte )(txMessageId));
                PrepareVirtualWrite(vp, txMessage);

                WriteToTcpStream(txMessage);
            }
        }
예제 #4
0
        internal void BridgeVirtualWrite(int b, VirtualPin vp)
        {
            if (Connected)
            {
                txMessageId++;
                List <byte> txMessage = new List <byte>()
                {
                    ( byte )Command.BRIDGE
                };

                txMessage.Add(( byte )(txMessageId >> 8));
                txMessage.Add(( byte )(txMessageId));
                txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(b.ToString()));
                txMessage.Add(( byte )(0x00));

                PrepareVirtualWrite(vp, txMessage);

                WriteToTcpStream(txMessage);
            }
        }
예제 #5
0
        public static void PrepareVirtualWrite(VirtualPin vp, List <byte> txMessage)
        {
            txMessage.Add(( byte )'v');
            txMessage.Add(( byte )'w');
            txMessage.Add(0x00);

            txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(vp.Pin.ToString()));

            txMessage.Add(0x00);

            foreach (object o in vp.Value)
            {
                txMessage.AddRange(ASCIIEncoding.ASCII.GetBytes(o.ToString().Replace(',', '.')));
                txMessage.Add(0x00);
            }

            txMessage.RemoveAt(txMessage.Count - 1);

            int msgLength = txMessage.Count - 3;

            txMessage.Insert(3, ( byte )((msgLength) >> 8));
            txMessage.Insert(4, ( byte )((msgLength)));
        }
예제 #6
0
 public void VirtualWrite(VirtualPin vp)
 {
     refBlynk.BridgeVirtualWrite(Pin, vp);
 }