а я думаю что этого камня вполне достаточно либы кривые это факт! вот скажите while (1){ port1.listen(); while (port1.available() > 0) {} port2.listen(); while (port2.available() > 0) {} port3.listen(); while (port3.available() > 0) {} } разве оно способно хоть один байт принять? мне так мыслиться что port*.available() > 0 ни когда не станет больше нуля!

Комментарии: 13

  1. Alexander

    The number of bytes available to read Слушаем порт, если в буфере больше 0 байт, то обрабатываем

    • Dim

      отлично и как долго слушаем?

      • Alexander

        Каждый системный тик

        • Dim

          это не ответ как долго слушаем до переключения на другой порт? port1.listen(); while (port1.available() > 0) {}

          • Alexander

            bool SoftwareSerial::listen() { if (!_rx_delay_stopbit) return false; if (active_object != this) { if (active_object) active_object->stopListening(); _buffer_overflow = false; _receive_buffer_head = _receive_buffer_tail = 0; active_object = this; setRxIntMsk(true); return true; } return false; }

            • Dim

              замечательно а сколько это в микросекундах? при отсутствии даты

              • Alexander

                Каждый системный тик, который плывет от размера программы Поэтому вы и не получите гарантии обработки посылки Только по прерыванию

                • Dim

                  но это прерывание будет сброшено когда наступит очередь: port2.listen(); while (port2.available() > 0) {} ?

                  • Alexander

                    Это не прерывание

                    • Dim

                      значит тут нет прерываний?

                      • Alexander

                        В софт сериал нет конечно

                        • Dim

                          вообще никаких? ни от таймера ни от порта? а как же это: Note: Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

            • Anonim

              Ну и жуть

Не нашли ответ?

Вам также может быть интересно