public byte[] GetMessage() { HeaderMessage headerMessage = new HeaderMessage(); headerMessage.blberProtocol = 0x01; headerMessage.uTermId = 12345; headerMessage.MsgType = 0x01; headerMessage.uCRC = 678; SpyMessage spyMessage = new SpyMessage(); spyMessage.HeaderMsg = headerMessage; spyMessage.szTime = _time; spyMessage.nEmployeeId = 111222; spyMessage.szEmployeeName = _employee; spyMessage.nManagerId = 333444; spyMessage.szManagerName = _manager; spyMessage.nTableId = 555666; spyMessage.nCheckId = 777888; spyMessage.nTransactionType = 19; spyMessage.szDescription = _description; spyMessage.dAmount = 12.34; spyMessage.nQuantity = 5; int size = Marshal.SizeOf(spyMessage); byte[] bytes = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(spyMessage, ptr, true); Marshal.Copy(ptr, bytes, 0, size); Marshal.FreeHGlobal(ptr); return bytes; }
static void Main(string[] args) { AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit); //byte[] bytes = _messageGenerator.GetMessage(); //string byteString = BitConverter.ToString(bytes); SpyMessage spyMessage = new SpyMessage(); Console.WriteLine("Size: " + Marshal.SizeOf(spyMessage)); if (IsSerial) { string[] ports = SerialPort.GetPortNames(); _serialStream = new SerialStream("COM16", 2400); _serialStream.DataReceived += new Action<byte[]>(callBack); _serialStream.Start(); } else { _tcpListener = new TCPListener(7118, false, callBack); _tcpListener.Start(); } Console.WriteLine("Listening..."); Console.ReadLine(); }
public void ParseByRead(byte[] bytes) { Stopwatch sw = new Stopwatch(); sw.Start(); using (MemoryStream ms = new MemoryStream(bytes)) using (BinaryReader br = new BinaryReader(ms)) { HeaderMessage headerMessage = new HeaderMessage(); headerMessage.blberProtocol = br.ReadByte(); headerMessage.uTermId = br.ReadUInt32(); headerMessage.MsgType = br.ReadByte(); headerMessage.uCRC = br.ReadUInt16(); SpyMessage spyMessage = new SpyMessage(); spyMessage.HeaderMsg = headerMessage; spyMessage.szTime = Encoding.ASCII.GetString(br.ReadBytes(9)); spyMessage.nEmployeeId = br.ReadUInt32(); spyMessage.szEmployeeName = Encoding.ASCII.GetString(br.ReadBytes(40)); spyMessage.nManagerId = br.ReadUInt32(); spyMessage.szManagerName = Encoding.ASCII.GetString(br.ReadBytes(40)); spyMessage.nTableId = br.ReadUInt32(); spyMessage.nCheckId = br.ReadUInt32(); spyMessage.nTransactionType = br.ReadInt32(); spyMessage.szDescription = Encoding.ASCII.GetString(br.ReadBytes(40)); //byte[] amountBytes = br.ReadBytes(8); //spyMessage.dAmount = BitConverter.ToDouble(amountBytes, 0); spyMessage.dAmount = br.ReadDouble(); spyMessage.nQuantity = br.ReadInt16(); Console.WriteLine("PARSE BY READ:"); //Console.WriteLine("Protocol: " + br.ReadByte()); //Console.WriteLine("Term ID: " + br.ReadUInt32()); //Console.WriteLine("Message Type: " + br.ReadByte()); //Console.WriteLine("UCRC: " + br.ReadUInt16()); //Console.WriteLine("Time: " + Encoding.ASCII.GetString(br.ReadBytes(9))); //Console.WriteLine("Employee ID: " + br.ReadUInt64()); //Console.WriteLine("Employee: " + Encoding.ASCII.GetString(br.ReadBytes(40))); //Console.WriteLine("Manager ID: " + br.ReadInt64()); //Console.WriteLine("Manager: " + Encoding.ASCII.GetString(br.ReadBytes(40))); //Console.WriteLine("Table ID: " + br.ReadUInt64()); //Console.WriteLine("Check ID: " + br.ReadUInt64()); //Console.WriteLine("Transaction Type: " + getAlohaType(br.ReadInt32())); //Console.WriteLine("Description: " + Encoding.ASCII.GetString(br.ReadBytes(40))); //Console.WriteLine("ALL: " + BitConverter.ToString(bytes)); //byte[] amountBytes = br.ReadBytes(8); //Console.WriteLine("HEX1: " + BitConverter.ToString(amountBytes)); //Array.Reverse(amountBytes); //Console.WriteLine("HEX2: " + BitConverter.ToString(amountBytes)); //Console.WriteLine("Amount: " + BitConverter.ToDouble(amountBytes, 0)); //Console.WriteLine("Quantity: " + br.ReadInt16()); //Console.WriteLine(); printMessage(spyMessage); } sw.Stop(); Console.WriteLine("Elapse: " + sw.ElapsedMilliseconds); }
public void ParseByMarshal(byte[] bytes) { Stopwatch sw = new Stopwatch(); sw.Start(); SpyMessage spyMessage = new SpyMessage(); int size = Marshal.SizeOf(spyMessage); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(bytes, 0, ptr, size); spyMessage = (SpyMessage)Marshal.PtrToStructure(ptr, spyMessage.GetType()); Marshal.FreeHGlobal(ptr); sw.Stop(); Console.WriteLine("Elapse: " + sw.ElapsedMilliseconds); printMessage(spyMessage); }
private void printMessage(SpyMessage spyMessage) { Console.WriteLine("Protocol: " + spyMessage.HeaderMsg.blberProtocol); Console.WriteLine("Term ID: " + spyMessage.HeaderMsg.uTermId); Console.WriteLine("Message Type: " + spyMessage.HeaderMsg.MsgType); Console.WriteLine("UCRC: " + spyMessage.HeaderMsg.uCRC); Console.WriteLine("Time: " + spyMessage.szTime); Console.WriteLine("Employee ID: " + spyMessage.nEmployeeId); Console.WriteLine("Employee: " + spyMessage.szEmployeeName); Console.WriteLine("Manager ID: " + spyMessage.nManagerId); Console.WriteLine("Manager: " + spyMessage.szManagerName); Console.WriteLine("Table ID: " + spyMessage.nTableId); Console.WriteLine("Check ID: " + spyMessage.nCheckId); Console.WriteLine("Transaction Type: " + getAlohaType(spyMessage.nTransactionType)); Console.WriteLine("Description: " + spyMessage.szDescription); Console.WriteLine("Amount: " + spyMessage.dAmount); Console.WriteLine("Quantity: " + spyMessage.nQuantity); Console.WriteLine(); }