Exemple #1
0
 public void conver_hex_dongle(byte[] rx, string date)
 {
     try
     {
         string str_log         = "";
         string str_log_receive = class_MP_dongle.serial_Receive(rx, date);
         if (class_MP_dongle.Flag_is_change_device_show == false && class_MP_dongle.Flag_show_log == true /*&& class_MP_dongle.Flag_is_no_show_log == false*/)
         {
             str_log = "[" + date + "] RX: ";
             for (int i = 0; i < rx.Length; i++)
             {
                 str_log += String.Format("{0:X2}", rx[i]) + " ";
             }
             str_log += Environment.NewLine;
             log_dongle.Add(str_log);
             serial_data_type tmp = new serial_data_type();
             tmp.data = rx;
             tmp.time = date;
             list_serial_data_error.Add(tmp);
         }
         if (str_log_receive != "")
         {
             log_dongle.Add(str_log_receive);
         }
         class_MP_dongle.Flag_is_no_show_log = false;
     }
     catch (Exception ex)
     { }
 }
Exemple #2
0
        public void Receive_serial_data()
        {
            byte[]      serial_buffer     = null;
            List <byte> serial_error      = new List <byte>();
            int         status            = (int)serial_read.status.STATUS_NULL;
            int         payload_size      = 0;
            int         buffer_index      = 0;
            bool        flag_serial_error = false;
            bool        flag_error_printf = false;
            DateTime    dttest            = DateTime.Now;
            List <byte> d = new List <byte>();

            while (true)
            {
                try
                {
                    if (serialPort1.IsOpen == true && serialPort1.BytesToRead > 0)
                    {
                        byte[] data = new byte[serialPort1.BytesToRead];
                        serialPort1.Read(data, 0, data.Length);
                        d.AddRange(data);
                        if ((DateTime.Now - dttest).TotalMilliseconds >= 1000)
                        {
                            Console.WriteLine(d.Count);
                            dttest = dttest.AddMilliseconds(1000);
                            d.Clear();
                        }

                        for (int i = 0; i < data.Length; i++)
                        {
                            switch (status)
                            {
                            case (int)serial_read.status.STATUS_NULL:
                                if (data[i] == (byte)MP_dongle.CMD.RX_STX)
                                {
                                    status       = (int)serial_read.status.STATUS_SIZE;
                                    payload_size = 0;
                                    if (flag_serial_error)
                                    {
                                        flag_error_printf = true;
                                    }
                                }
                                else
                                {
                                    flag_serial_error = true;
                                    serial_error.Add(data[i]);
                                }
                                break;

                            case (int)serial_read.status.STATUS_SIZE:
                                payload_size     = data[i] + 2;
                                serial_buffer    = new byte[data[i] + 4];
                                serial_buffer[0] = (byte)MP_dongle.CMD.RX_STX;
                                serial_buffer[1] = data[i];
                                buffer_index     = 2;
                                status           = (int)serial_read.status.STATUS_PAYLOAD;
                                if (payload_size > 50)
                                {
                                    status = (int)serial_read.status.STATUS_NULL;
                                }
                                break;

                            case (int)serial_read.status.STATUS_PAYLOAD:
                                serial_buffer[buffer_index] = data[i];
                                buffer_index++;
                                payload_size--;
                                if (payload_size == 0)
                                {
                                    serial_data_type tmp = new serial_data_type();
                                    tmp.data = serial_buffer;
                                    tmp.time = DateTime.Now.ToString("yyy/MM/dd HH:mm:ss.fff");
                                    list_serial_data.Add(tmp);
                                    status = (int)serial_read.status.STATUS_NULL;
                                }
                                break;
                            }
                        }
                        if (flag_error_printf)
                        {
                            flag_error_printf = false;
                            flag_serial_error = false;
                            serial_data_type tmp = new serial_data_type();
                            tmp.data = new byte[serial_error.Count];
                            serial_error.CopyTo(tmp.data, 0);
                            tmp.time = DateTime.Now.ToString("yyy/MM/dd HH:mm:ss.fff");
                            list_serial_data_error.Add(tmp);
                        }
                    }
                }
                catch (Exception ex) { }
            }
        }