Яка різниця між усіма послідовними бібліотеками програмного забезпечення? Який з Arduino Nano сумісний?


11

Є так багато послідовних бібліотек програмного забезпечення, які відмінності між ними? І який я можу використовувати зі своїм Arduino Nano? Для мого Arduino Nano мені потрібен один апаратний послідовний порт та один програмний послідовний порт із максимальною швидкістю 115200.

На яких штифтах Arduino Nano можна використовувати послідовну бібліотеку програмного забезпечення?


Я використовую neoswserial з клавіатурою I2C, але коли я додаю key=getKey();свій GSM (використовуючи контакт 2 та 3 Arduino Uno), не отримує SMS. Допоможіть мені, будь ласка.
Nguyễn Trường Hải

Відповіді:


16

У цій відповіді перелічені 4 основні варіанти:

  • HardwareSerial, завжди найкращий. Просто використовуйте попередньо визначену Serialзмінну. На деяких Arduinos є додаткові порти HardwareSerial, що називаються Serial1, Serial2і т. Д. У Nano є тільки Serial.

  • AltSoftSerial, найкраща з послідовних бібліотек програмного забезпечення. Допускається лише один екземпляр, і він повинен бути використаний на одному із штифтів вводу для захоплення (штифти 8 та 9 для Nano).

  • Моє NeoSWSerialнаступне найкраще. Він працює на будь-яких двох штифтах, але лише зі швидкістю передачі 9600, 19200 та 38400.

  • SoftwareSerial- найгірший вибір. Він працює на будь-яких двох штифтах, але це дуже неефективно. Він вимикає переривання протягом усього часу, коли персонаж надсилається АБО отримано, і він не може робити обидва одночасно (на відміну від усіх інших послідовних варіантів). Це може заважати іншим частинам вашого ескізу, комунікаціям інших пристроїв або бібліотекам.

Якщо ви можете використовувати більш повільну швидкість передачі даних, ви можете тримати відбитки налагодження Serialта використовувати AltSoftSerialабо NeoSWSerialдля свого пристрою.

Але якщо вам доведеться використовувати 115200, єдиний надійний вибір Serial. Хоча AltSoftSerialі SoftwareSerialдозволяють цю швидкість передачі даних, вони можуть не надсилати / отримувати дані правильно.

У цьому випадку я б запропонував використовувати Serialдля пристрою 115200. Якщо ви не користуєтесь провайдером, вам доведеться відключити пристрій, щоб завантажити новий ескіз через USB.

Тоді використовуйте AltSoftSerialабо NeoSWSerialдля вашої заяви про налагодження. Для підключення до ПК вам знадобиться адаптер TTL Serial-to-USB (він же FTDI) на вибраних штифтах. Serial MonitorАбо інший термінал програма емулятора буде зчитувати з цим USB COM - порту.


Чи однаковий AltSoftSerial за продуктивністю та характеристиками, тільки NeoICSerial додає функціональність? Я не зрозумів повністю. github.com/SlashDevin/NeoICSerial
Вільям Рой

2
@WilliamRoy, NeoICSerialпросто додає attachInterruptметод до AltSoftSerial. Ймовірно, вам не потрібно обробляти кожен символ в перерві. Просто скористайтеся AltSoftSerialі зателефонуйте, available()і тоді, read()якщо картка готова. Аналогічно NeoHWSerialдодає таку ж attachInterruptособливість до ядра HardwareSerial. Однак NeoSWSerialце зовсім інший клас (він також має attachInterruptособливість).
slash-dev

-2

Послідовне програмне забезпечення емуляція послідовного порту, що відрізняється від рідного порту, який має реєстр, щоб зберегти всі біти в порядку, і вони встановили прапор для виклику основного циклу, програмний серій нічого цього не має. Послідовне програмне забезпечення повинно отримувати всі біти по одному, тому ви повинні прочитати цифровий порт, почекати певний час і знову прочитати цифровий контакт. Ви повинні зробити це 10 разів (1 стартовий біт, 8 бітів даних та 1 кінцевий біт). Час дуже важливий. Для використання серійного програмного забезпечення потрібно більше турбуватися про продуктивність.

Ви можете використовувати цифровий штифт переривання для штифта RX, тому вас "викликають" в нижній межі (початковий біт) і отримали 8 біт.


1
Це навіть не намагається відповісти на початкове запитання.
Едгар Бонет

1
Так, це не намагається відповісти на початкове запитання, оскільки спільнота Ардуїно не знає, чи є сам периферійний код.
rodrigo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.