Последовательная связь между Arduino и Pyserial замедляется после открытия - PullRequest
0 голосов
/ 09 марта 2019

Мне нужна ваша помощь по проблеме, с которой я столкнулся при использовании последовательного соединения между Arduino и Pyserial:

Когда я впервые использую последовательное соединение, это происходит значительно быстрее, чем когдая снова использую последовательное соединение.

Вот минимальный пример:

Arduino-код:

void setup() {
  Serial.begin(9600);
  Serial.println("Arduino ready"); // Print when Arduino ready
}

void loop() {
  // send data only when you receive data:
  if(Serial.available() > 0) {
      Serial.read();
      Serial.println(' ');
  }
  delay(1); // delay in between reads for stability
}

Python-код:

import serial
import time

ser = serial.Serial('COM5',9600,timeout=1)
print(ser.readline()) # Wait until Arduino is ready

for i in range(1,10):
    tic = time.time() # Start timer

    ser.write(b' ')
    ser.readline()

    toc = time.time() # Log time
    print("Serial write / read took %7.4f ms" % ((toc-tic)*1000))

ser.close()

Первый запуск кода Python:

b'Arduino ready\r\n'
Serial write / read took  5.9998 ms
Serial write / read took  6.0000 ms
Serial write / read took  7.0000 ms
Serial write / read took  5.9998 ms
Serial write / read took  6.0003 ms
Serial write / read took  5.9998 ms
Serial write / read took  6.0000 ms
Serial write / read took  7.0002 ms
Serial write / read took  5.9998 ms

Повторный запуск кода Python:

b'Arduino ready\r\n'
Serial write / read took 27.9999 ms
Serial write / read took 29.0003 ms
Serial write / read took 27.9999 ms
Serial write / read took 28.0001 ms
Serial write / read took 27.9999 ms
Serial write / read took 29.0000 ms
Serial write / read took 27.9999 ms
Serial write / read took 28.0001 ms
Serial write / read took 27.9999 ms

Действия, восстанавливающие скорость последовательного соединения:

  • Отключите / подключите USB-кабель между Arduino и ПК
  • Перепрограммируйте Arduino

Сброс Arduino с помощью кнопки сброса не восстанавливает последовательное соединение.

Любые идеи, как добиться скорости соединения первого соединения при повторном открытии соединения?

Я использую Python 3.6 и Pyserial 3.4.Вам нужна дополнительная информация?

Заранее спасибо!

1 Ответ

0 голосов
/ 08 апреля 2019

Проблема больше не возникает, когда я увеличиваю скорость последовательной передачи данных с 9600 до 28800.

Я также обнаружил, что проблема возникает только с моим клоном Arudino Uno.Скорость последовательного соединения не уменьшается на скорости 9600 бод, когда я использую оригинальный Arudino Uno.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...