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;
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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();
        }