Beispiel #1
0
        void kowhaiTree_DataChange(object sender, KowhaiTree.DataChangeEventArgs e)
        {
            Application.DoEvents();
            System.Threading.Thread.Sleep(250);

            byte[] buffer = new byte[PACKET_SIZE];
            Kowhai.kowhai_symbol_t[] symbols = KowhaiTree.KowhaiNodeInfo.CreateNodeInfoSymbolList(e.Info).ToArray();
            KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
            prot.header.command = KowhaiProtocol.CMD_WRITE_DATA;
            prot.header.id = GetTreeId();
            int bytesRequired;
            KowhaiProtocol.CreateReadDataPacket(buffer, PACKET_SIZE, ref prot, symbols, out bytesRequired);
            int overhead;
            KowhaiProtocol.kowhai_protocol_get_overhead(ref prot, out overhead);
            int offset = 0;
            int maxPayloadSize = PACKET_SIZE - overhead;
            while (e.Buffer.Length - offset > maxPayloadSize)
            {
                KowhaiProtocol.CreateWriteDataPacket(buffer, PACKET_SIZE, ref prot, symbols, CopyArray(e.Buffer, offset, maxPayloadSize), (ushort)offset, out bytesRequired);
                comms.Send(buffer, bytesRequired);
                offset += maxPayloadSize;
            }
            prot.header.command = KowhaiProtocol.CMD_WRITE_DATA_END;
            KowhaiProtocol.CreateWriteDataPacket(buffer, PACKET_SIZE, ref prot, symbols, CopyArray(e.Buffer, offset, e.Buffer.Length - offset), (ushort)offset, out bytesRequired);
            comms.Send(buffer, bytesRequired);
        }
Beispiel #2
0
        void kowhaiTree_NodeRead(object sender, KowhaiTree.NodeReadEventArgs e)
        {
            Application.DoEvents();
            System.Threading.Thread.Sleep(250);

            byte[] buffer = new byte[PACKET_SIZE];
            Kowhai.kowhai_symbol_t[] symbols = KowhaiTree.KowhaiNodeInfo.CreateNodeInfoSymbolList(e.Info).ToArray();
            KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
            prot.header.command = KowhaiProtocol.CMD_READ_DATA;
            prot.header.id = GetTreeId();
            int bytesRequired;
            KowhaiProtocol.CreateReadDataPacket(buffer, PACKET_SIZE, ref prot, symbols, out bytesRequired);
            comms.Send(buffer, bytesRequired);
        }
Beispiel #3
0
 private void CallGetTreeData(ushort treeId, ushort baseSymbol)
 {
     KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
     byte[] buffer = new byte[PACKET_SIZE];
     int bytesRequired;
     prot.header.command = KowhaiProtocol.CMD_READ_DATA;
     prot.header.id = treeId;
     Kowhai.kowhai_symbol_t[] syms = new Kowhai.kowhai_symbol_t[] { new Kowhai.kowhai_symbol_t(baseSymbol, 0) };
     if (KowhaiProtocol.CreateReadDataPacket(buffer, PACKET_SIZE, ref prot,
         syms,
         out bytesRequired) == Kowhai.STATUS_OK)
         comms.Send(buffer, bytesRequired);
 }
Beispiel #4
0
 private void CallFunction(ushort functionId, byte[] data)
 {
     KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
     byte[] buffer = new byte[PACKET_SIZE];
     int bytesRequired;
     prot.header.command = KowhaiProtocol.CMD_CALL_FUNCTION;
     prot.header.id = functionId;
     int overhead;
     if (KowhaiProtocol.kowhai_protocol_get_overhead(ref prot, out overhead) == Kowhai.STATUS_OK)
     {
         int maxDataSize = PACKET_SIZE - overhead;
         int bytesWritten = 0;
         if (data != null)
         {
             while (bytesWritten < data.Length)
             {
                 byte[] temp = new byte[Math.Min(maxDataSize, data.Length - bytesWritten)];
                 Array.Copy(data, bytesWritten, temp, 0, temp.Length);
                 if (KowhaiProtocol.CreateCallFunctionPacket(buffer, PACKET_SIZE, ref prot,
                     temp, (ushort)bytesWritten,
                     out bytesRequired) == Kowhai.STATUS_OK)
                 {
                     comms.Send(buffer, bytesRequired);
                     bytesWritten += temp.Length;
                 }
                 else
                     break;
             }
         }
         else
         {
             if (KowhaiProtocol.CreateCallFunctionPacket(buffer, PACKET_SIZE, ref prot,
                 data, 0,
                 out bytesRequired) == Kowhai.STATUS_OK)
                 comms.Send(buffer, bytesRequired);
         }
     }
 }
Beispiel #5
0
        private void trackBar_Scroll(object sender, EventArgs e)
        {
            byte[] buffer = new byte[PACKET_SIZE];
            int bytesRequired;
            KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
            prot.header.tree_id = TREE_ID_TEENSY;
            prot.header.command = KowhaiProtocol.CMD_WRITE_DATA;

            Kowhai.kowhai_symbol_t[] symbols;
            byte[] data;

            symbols = new Kowhai.kowhai_symbol_t[] { new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.Teensy),
                                                     new Kowhai.kowhai_symbol_t((UInt16)KowhaiSymbols.Symbols.Constants.GPIO, 5),
                                                     new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.PORT) };
            data = new byte[] { 0 };
            if (trackBar1.Value > trackBar1.Maximum / 2)
                data[0] = 9;
            else if (trackBar1.Value < trackBar1.Maximum / 2)
                data[0] = 18;
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, data, 0, out bytesRequired);
            SendData(buffer, bytesRequired);

            symbols = new Kowhai.kowhai_symbol_t[] { new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.Teensy),
                                                     new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.TIMER2),
                                                     new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.OCR2A) };
            data = new byte[] { 0 };
            if (trackBar1.Value > trackBar1.Maximum / 2)
                data[0] = (byte)((trackBar1.Value - trackBar1.Maximum / 2) * 10);
            else if (trackBar1.Value < trackBar1.Maximum / 2)
                data[0] = (byte)((Math.Abs(trackBar1.Value - trackBar1.Maximum / 2)) * 10);
            if (trackBar2.Value > trackBar2.Maximum / 2)
                data[0] = (byte)Math.Max(0, data[0] - ((trackBar2.Value - trackBar2.Maximum / 2) * 10));
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, data, 0, out bytesRequired);
            SendData(buffer, bytesRequired);

            symbols = new Kowhai.kowhai_symbol_t[] { new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.Teensy),
                                                     new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.TIMER2),
                                                     new Kowhai.kowhai_symbol_t((UInt32)KowhaiSymbols.Symbols.Constants.OCR2B) };
            data = new byte[] { 0 };
            if (trackBar1.Value > trackBar1.Maximum / 2)
                data[0] = (byte)((trackBar1.Value - trackBar1.Maximum / 2) * 10);
            else if (trackBar1.Value < trackBar1.Maximum / 2)
                data[0] = (byte)((Math.Abs(trackBar1.Value - trackBar1.Maximum / 2)) * 10);
            if (trackBar2.Value < trackBar2.Maximum / 2)
                data[0] = (byte)Math.Max(0, data[0] + ((trackBar2.Value - trackBar2.Maximum / 2) * 10));
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, data, 0, out bytesRequired);
            SendData(buffer, bytesRequired);
        }
Beispiel #6
0
        void kowhaiTree_NodeRead(object sender, KowhaiTree.NodeReadEventArgs e)
        {
            Application.DoEvents();
            System.Threading.Thread.Sleep(250);

            byte[] buffer = new byte[PACKET_SIZE];
            List<ushort> arrayIndexes = CreateNodeInfoArrayIndexList(e.Info);
            Kowhai.kowhai_symbol_t[] symbols = Kowhai.GetSymbolPath(GetDescriptor(sender), e.Info.KowhaiNode, e.Info.NodeIndex, arrayIndexes.ToArray());
            KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
            prot.header.tree_id = GetTreeId(sender);
            prot.header.command = KowhaiProtocol.CMD_READ_DATA;
            int bytesRequired;
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, out bytesRequired);
            //sock.Send(buffer, bytesRequired);
            SendData(buffer, bytesRequired);
        }
Beispiel #7
0
        void kowhaiTree_DataChange(object sender, KowhaiTree.DataChangeEventArgs e)
        {
            Application.DoEvents();
            System.Threading.Thread.Sleep(250);

            byte[] buffer = new byte[PACKET_SIZE];
            List<ushort> arrayIndexes = CreateNodeInfoArrayIndexList(e.Info);
            Kowhai.kowhai_symbol_t[] symbols = Kowhai.GetSymbolPath(GetDescriptor(sender), e.Info.KowhaiNode, e.Info.NodeIndex, arrayIndexes.ToArray());
            KowhaiProtocol.kowhai_protocol_t prot = new KowhaiProtocol.kowhai_protocol_t();
            prot.header.tree_id = GetTreeId(sender);
            prot.header.command = KowhaiProtocol.CMD_WRITE_DATA;
            int bytesRequired;
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, out bytesRequired);
            int overhead;
            KowhaiProtocol.kowhai_protocol_get_overhead(ref prot, out overhead);
            int offset = 0;
            int maxPayloadSize = PACKET_SIZE - overhead;
            while (e.Buffer.Length - offset > maxPayloadSize)
            {
                KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, CopyArray(e.Buffer, offset, maxPayloadSize), (ushort)offset, out bytesRequired);
                //sock.Send(buffer, bytesRequired);
                SendData(buffer, bytesRequired);
                offset += maxPayloadSize;
            }
            KowhaiProtocol.Create(buffer, PACKET_SIZE, ref prot, symbols, CopyArray(e.Buffer, offset, e.Buffer.Length - offset), (ushort)offset, out bytesRequired);
            //sock.Send(buffer, bytesRequired);
            SendData(buffer, bytesRequired);
        }