Sự khác biệt giữa tất cả các Thư viện nối tiếp phần mềm là gì? Cái nào tương thích với Arduino Nano?


11

Có rất nhiều Thư viện nối tiếp phần mềm, sự khác biệt giữa chúng là gì? Và cái nào tôi có thể sử dụng với Arduino Nano của tôi? Đối với Arduino Nano của tôi, tôi cần một Cổng Nối tiếp Phần cứng và một Cổng Nối tiếp Phần mềm với tốc độ baud là 115200.

Những chân nào của Arduino Nano tôi có thể sử dụng thư viện nối tiếp phần mềm?


Tôi đang sử dụng neoswserial với bàn phím I2C, nhưng khi tôi thêm key=getKey();GSM (sử dụng pin 2 & 3 Arduino Uno) thì không nhận được SMS. Làm ơn giúp tôi với.
Nguyễn Trường Hải

Câu trả lời:


14

Câu trả lời này liệt kê 4 lựa chọn cơ bản:

  • HardwareSerial, luôn luôn là tốt nhất. Đơn giản chỉ cần sử dụng Serialbiến được xác định trước . Trên một số Arduinos, có cổng HardwareSerial thêm, gọi Serial1, Serial2vv Các Nano chỉ có Serial.

  • AltSoftSerial, tốt nhất của các thư viện nối tiếp phần mềm. Chỉ cho phép một phiên bản và nó phải được sử dụng trên một trong các chân Chụp đầu vào (chân 8 & 9 cho Nano).

  • Của tôi NeoSWSeriallà tốt nhất tiếp theo. Nó hoạt động trên bất kỳ hai chân, nhưng chỉ ở tốc độ baud 9600, 19200 và 38400.

  • SoftwareSeriallà sự lựa chọn tồi tệ nhất. Nó hoạt động trên bất kỳ hai chân, nhưng nó rất không hiệu quả. Nó vô hiệu hóa các ngắt trong toàn bộ thời gian mà một ký tự được gửi HOẶC nhận được và nó không thể thực hiện cả hai cùng một lúc (không giống như tất cả các lựa chọn nối tiếp khác). Điều này có thể can thiệp vào các phần khác trong bản phác thảo của bạn, thông tin liên lạc thiết bị khác hoặc với các thư viện.

Nếu bạn có thể sử dụng tốc độ truyền chậm hơn, bạn có thể tiếp tục in gỡ lỗi Serialvà sử dụng AltSoftSerialhoặc NeoSWSerialcho thiết bị của mình.

Nhưng nếu bạn phải sử dụng 115200, sự lựa chọn đáng tin cậy duy nhất là Serial. Mặc dù AltSoftSerialSoftwareSerialcho phép tốc độ truyền đó, họ có thể không gửi / nhận dữ liệu chính xác.

Trong trường hợp đó, tôi sẽ đề nghị sử dụng Serialcho thiết bị 115200. Trừ khi bạn đang sử dụng ISP, bạn sẽ phải ngắt kết nối thiết bị để tải lên bản phác thảo mới qua USB.

Sau đó sử dụng AltSoftSerialhoặc NeoSWSerialcho các báo cáo gỡ lỗi của bạn. Bạn sẽ cần một bộ chuyển đổi nối tiếp USB (hay còn gọi là FTDI) trên các chân được chọn để kết nối với PC. Các Serial Monitorhoặc khác chương trình giả lập thiết bị đầu cuối sẽ đọc từ cổng USB COM.


Là AltSoftSerial giống nhau về hiệu suất và đặc điểm, chỉ có điều NeoICSerial thêm chức năng của cái gì? Tôi hoàn toàn không hiểu. github.com/SlashDevin/NeoICSerial
William Roy

2
@WilliamRoy, NeoICSerialchỉ cần thêm attachInterruptphương thức vào AltSoftSerial. Bạn có thể không cần phải xử lý từng ký tự một cách gián đoạn. Chỉ cần sử dụng AltSoftSerialvà gọi available()và sau đó read()nếu một char đã sẵn sàng. Tương tự, NeoHWSerialthêm attachInterrupttính năng tương tự vào lõi HardwareSerial. Tuy nhiên, NeoSWSeriallà một lớp hoàn toàn khác (nó cũng có attachInterrupttính năng).
slash-dev

-1

Phần mềm nối tiếp mô phỏng một cổng nối tiếp, khác với cổng gốc có đăng ký lưu tất cả các bit theo thứ tự và chúng đặt cờ để gọi vòng lặp chính, nối tiếp phần mềm không có gì về điều đó. Phần mềm nối tiếp phải nhận tất cả các bit, từng bit một, vì vậy bạn phải đọc một cổng kỹ thuật số, đợi một thời gian cụ thể và đọc lại mã kỹ thuật số. Bạn phải thực hiện 10 lần (1 bit start, 8 bit dữ liệu và 1 bit end). Thời gian là rất quan trọng. Để sử dụng một phần mềm nối tiếp, bạn cần phải lo lắng nhiều hơn về hiệu suất.

Bạn có thể sử dụng chân ngắt kỹ thuật số cho chân RX, do đó bạn được "gọi" ở viền xuống (bit start) và 8 bit nhận được.


Điều này thậm chí không cố gắng trả lời câu hỏi ban đầu.
Edgar Bonet

1
Vâng, điều này không cố gắng trả lời câu hỏi ban đầu vì cộng đồng Arduino không biết chính bạn là mã ngoại vi.
Rodrigo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.