// This Handler is for reading all input without wating for a whole line private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { // Find out which serial port --> which myserial SerialPort sp = (SerialPort)sender; MySerialDictionary.TryGetValue(sp.PortName, out Object myserial_serial_obj); MySerial myserial = (MySerial)myserial_serial_obj; //Rx_char_buffer_QUEUE int buf_len = sp.BytesToRead; if (buf_len > 0) { // Read in all char byte[] input_buf = new byte[buf_len]; sp.Read(input_buf, 0, buf_len); { int ch_index = 0; while (ch_index < buf_len) { byte byte_data = input_buf[ch_index]; myserial.Rx_byte_buffer_QUEUE.Enqueue(byte_data); ch_index++; } } } }
private static void DataReceivedHandler_KLine(object sender, SerialDataReceivedEventArgs e) { // Find out which serial port --> which myserial SerialPort sp = (SerialPort)sender; MySerialDictionary.TryGetValue(sp.PortName, out Object myserial_serial_obj); MySerial myserial = (MySerial)myserial_serial_obj; while (sp.BytesToRead > 0) { // Read in all char bool IsMessageReady = false; byte byte_data = (byte)sp.ReadByte(); if (myserial.ECU_filtering == true) { if (myserial.ECU_data_to_be_filtered.Count > 0) { myserial.ECU_data_to_be_filtered.RemoveAt(0); } if (myserial.ECU_data_to_be_filtered.Count == 0) { myserial.ECU_filtering = false; } } else { myserial.RawDataInString += byte_data.ToString("X2") + " "; IsMessageReady = myserial.KLineKWP2000Process.ProcessNextByte(byte_data); if (IsMessageReady) { BlockMessage new_message = myserial.KLineKWP2000Process.GetProcessedBlockMessage(); myserial.KLineBlockMessageList.Add(new_message); myserial.KLineRawDataInStringList.Add(myserial.RawDataInString); myserial.RawDataInString = ""; IsMessageReady = false; //break; } } } }
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { // Find out which serial port --> which bluerat SerialPort sp = (SerialPort)sender; MySerialDictionary.TryGetValue(sp.PortName, out Object my_serial_obj); MySerial mySerial = (MySerial)my_serial_obj; //Rx_char_buffer_QUEUE int buf_len = sp.BytesToRead; if (buf_len > 0) { // Read in all char char[] input_buf = new char[buf_len]; sp.Read(input_buf, 0, buf_len); int ch_index = 0; while (ch_index < buf_len) { char ch = input_buf[ch_index]; if ((ch == '\n') || (ch == '\r')) { if (mySerial.Rx_char_buffer_QUEUE.Count > 0) { char[] temp_char_array = new char[mySerial.Rx_char_buffer_QUEUE.Count]; mySerial.Rx_char_buffer_QUEUE.CopyTo(temp_char_array, 0); mySerial.Rx_char_buffer_QUEUE.Clear(); string temp_str = new string(temp_char_array); mySerial.OnRaiseGetLineEvent(new GetLineEventArgs(temp_str)); } } else { mySerial.Rx_char_buffer_QUEUE.Enqueue(ch); } ch_index++; } } }