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