/// <summary> /// Converts this OPC Packet instance to a byte array as specified by the OPC Protocol. /// https://github.com/scanlime/fadecandy/blob/master/doc/fc_protocol_opc.md /// </summary> /// <returns>Byte Array representation of the OPCCommand.</returns> public byte[] ToByteArray() { List <byte> returnValue = new byte[] { Channel, (byte)Command }.ToList(); returnValue.AddRange(BitConverter.GetBytes(Length)); returnValue.AddRange(Data); return(returnValue.ToArray()); }
public void SendData(byte id, byte instruction, byte[] parameter = null) { var arrayData = new List <byte>(); arrayData.Add(id); arrayData.Add(parameter == null ? (byte)2 : (byte)(parameter.Length + 2)); arrayData.Add(instruction); if (parameter != null) { arrayData.AddRange(parameter); } arrayData.Add(Tools.CheckSum(arrayData.ToArray())); var sendData = new byte[] { 0xFF, 0xFF }.ToList(); sendData.AddRange(arrayData); if (ShowDebugInfo) { Console.Write("发送指令>>>>>>:"); sendData.ForEach(v => Console.Write(v.ToString("X2") + " ")); Console.WriteLine(); } _serialPort.Write(sendData.ToArray(), 0, sendData.Count); }
public void TestAgnosticToRepeatedDelimiterMultuple() { // setup var delimiter = new byte[] { 0 }; // create processor var logger = new LoggerFactory().CreateLogger <SimpleMessageDataProcessor>(); var proc = SimpleMessageDataProcessor.CreateProcessor(logger, 500, 2); // test buffer with errors var buffer = new byte[] { 0, 1, 0, 0, 0, 0, 0, 1, 0 }.ToList(); // delimiter with length header (256 + 0) and error delimietrs more buffer.AddRange(Enumerable.Range(0, 34).Select(i => (byte)99)); buffer.AddRange(new byte[] { 0, 1, 0 }); buffer.AddRange(Enumerable.Range(0, 256).Select(i => (byte)99)); // tesr ret var ret = proc.ProcessReceivedRawData(buffer.ToArray(), buffer.Count()); Assert.AreEqual(256, ret.Last().Length); }
// public static void SendToAllConnected() // { //_socket. // } public ServerListReport(IPAddress listen, ushort port, Action <string, string> log, Action <string, string> logError, string gameName) { if (gameName != null) { _gameName = gameName; } List <byte> initialMessage = new byte[] { 0x09, 0x00, 0x00, 0x00, 0x00 }.ToList(); initialMessage.AddRange(Encoding.ASCII.GetBytes(_gameName)); initialMessage.Add(0x00); //Console.WriteLine("[initial:]" + _initialMessage[0] + _initialMessage[1] + _initialMessage[2] + _initialMessage[3] + _initialMessage[4] + ',' + _initialMessage[5] + ',' + _initialMessage[6] + ',' + _initialMessage[7] + ',' + _initialMessage[8] + ',' + _initialMessage[9]); _initialMessage = initialMessage.ToArray(); //Console.WriteLine("[initial:]" + _initialMessage[0] + _initialMessage[1] + _initialMessage[2] + _initialMessage[3] + _initialMessage[4] + ',' + _initialMessage[5] + ',' + _initialMessage[6] + ',' + _initialMessage[7] + ',' + _initialMessage[8]); Log = log; LogError = logError; GeoIP.Initialize(log, Category); Servers = new ConcurrentDictionary <string, GameServer>(); Thread = new Thread(StartServer) { Name = "Server Reporting Socket Thread" }; Thread.Start(new AddressInfo() { Address = listen, Port = port }); new Thread(StartCleanup) { Name = "Server Reporting Cleanup Thread" }.Start(); new Thread(StartDynamicInfoReload) { Name = "Dynamic Info Reload Thread" }.Start(); }
public void TestAgnosticToRepeatedDelimiter() { // setup var delimiter = new byte[] { 0 }; int headerLength = 2; // create processor var proc = new SimpleMessageDataProcessor(new LoggerFactory().CreateLogger <SimpleMessageDataProcessor>(), 500, delimiter, headerLength); // test buffer var buffer = new byte[] { 0, 1, 0 }.ToList(); // delimiter with length header (256 + 0) buffer.AddRange(Enumerable.Range(0, 256).Select(i => (byte)99)); // tesr ret var ret = proc.ProcessReceivedRawData(buffer.ToArray(), buffer.Count()); Assert.AreEqual(1, ret.Count()); Assert.AreEqual(256, ret.First().Length); }