Пример #1
0
        // 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++;
                    }
                }
            }
        }
Пример #2
0
        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;
                    }
                }
            }
        }
Пример #3
0
        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++;
                }
            }
        }