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); }
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); }
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); }
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); } } }
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); }
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); }
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); }