Cổng nối tiếp là giao diện truyền thông nối tiếp thông qua đó thông tin được truyền tuần tự từng bit một. Mặt khác, các cổng song song truyền nhiều bit đồng thời. PySerial và các chức năng như đọc nối tiếp python giúp giao tiếp với Cổng nối tiếp dễ dàng hơn
nội dung
Giới thiệu về gói PySerial
Python trên máy tính đã cài đặt gói PySerial có thể giao tiếp với phần cứng bên ngoài. Đây là một gói hữu ích cho người giải quyết vấn đề vì nó tạo điều kiện trao đổi dữ liệu giữa máy tính và phần cứng bên ngoài như vôn kế, đồng hồ đo lưu lượng, đèn và các thiết bị khác gửi thông tin qua cổng
Cài đặt mô-đun
Gói PySerial KHÔNG phải là một phần của Thư viện chuẩn Python. Do đó, hãy cài đặt thủ công. Bản phân phối Anaconda của Python đi kèm với gói được cài đặt sẵn
PIP Installation Command
$ pip install pyserial
Anaconda Prompt Command
> conda install pyserial
Nhập mô-đun + Xác minh cài đặt
Sau khi cài đặt, phiên bản có thể được xác minh bằng lệnh sau
import serial print[serial.version]
Giới thiệu về chức năng
serial.read[]
Đối số – Truyền một giá trị số nguyên để chỉ định số byte sẽ được trả về
Trả về - Cung cấp cho chúng tôi một số byte được chỉ định
Sử dụng chức năng đọc nối tiếp Python để lấy thông tin từ cổng nối tiếp
Đọc nối tiếp Python là một chức năng quan trọng của mô-đun. Nó cho phép chúng tôi thu thập thông tin được cung cấp từ các cổng. Đây là một triển khai Python giúp chúng tôi làm như vậy
with serial.Serial['/my/sample1', 3443, timeout=1] as serial: readOneByte = serial.read[] readTenByte = serial.read[10]
Giải trình
By default, .read[]
reads one byte at a time. By providing an integer value, you can set how many bytes of information are to be read by the function.
Đọc nối tiếp Python so với Readline
Anaconda Prompt Command
> conda install pyserial
3_______1_______4Anaconda Prompt Command
> conda install pyserial
3 sẽ trả về một byte mỗi lần. Anaconda Prompt Command
> conda install pyserial
4 sẽ trả về tất cả các byte cho đến khi đạt đến EOL. Nếu một số nguyên được chỉ định trong hàm, nó sẽ trả về số byte đóBán tại
Anaconda Prompt Command
> conda install pyserial
7Sẽ trả về 20 byte. Thay vì sử dụng
Anaconda Prompt Command
> conda install pyserial
3 trong các lần lặp lại, có thể sử dụng Anaconda Prompt Command
> conda install pyserial
4xu hướng
[Đã giải quyết] Không tìm thấy tay cầm có nhãn nào để đưa vào chú thích
Sử dụng Serial Read + Write trên Raspberry Pi
Đảm bảo rằng Raspberry Pi của bạn được cập nhật bằng cách chạy các lệnh sau
sudo apt update
sudo apt upgrade
Đọc dữ liệu
ser = serial.Serial[ # Serial Port to read the data from port='/dev/ttyUSB0', #Rate at which the information is shared to the communication channel baudrate = 9600, #Applying Parity Checking [none in this case] parity=serial.PARITY_NONE, # Pattern of Bits to be read stopbits=serial.STOPBITS_ONE, # Total number of bits to be read bytesize=serial.EIGHTBITS, # Number of serial commands to accept before timing out timeout=1 ] # Pause the program for 1 second to avoid overworking the serial port while 1: x=ser.readline[] print x
Viết dữ liệu
import time import serial ser = serial.Serial[ # Serial Port to read the data from port='/dev/ttyUSB0', #Rate at which the information is shared to the communication channel baudrate = 9600, #Applying Parity Checking [none in this case] parity=serial.PARITY_NONE, # Pattern of Bits to be read stopbits=serial.STOPBITS_ONE, # Total number of bits to be read bytesize=serial.EIGHTBITS, # Number of serial commands to accept before timing out timeout=1 ] counter=0 # Mentions the Current Counter number for each line written # Pauses for one second each iteration to avoid overworking the port while 1: ser.write["Write counter: %d \n"%[counter]] time.sleep[1] counter += 1
Đọc nối tiếp Python ở định dạng Hex
Sử dụng hàm
import serial print[serial.version]0, chúng tôi đang lưu trữ dữ liệu byte ở định dạng hex trong biến
import serial print[serial.version]1
import serial ser = serial.Serial[ port='/samplePort/ttyUSB1', baudrate=115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout = None ] while 1: print ser.read[] hexData= ser.read[].hex[] print hexData
Chạy nhiều ô trong Jupyter Notebook
Hàm pySerial in_waiting trong Python
Hàm này có thể được sử dụng để truy xuất số lượng byte trong bộ đệm đầu vào .
Return[s] – Số nguyên
Đối số - Không có
Hàm out_waiting[] thực hiện tương tự. Nó cung cấp số byte trong bộ đệm đầu ra
Đây là một chương trình ví dụ thực hiện chức năng đã nói
Anaconda Prompt Command
> conda install pyserial
0Hàm pySerial flush[] của Python
import serial print[serial.version]2 loại bỏ nội dung của bộ đệm bên trong của đối tượng tệp. Nó không nhận bất kỳ đối số nào cũng như không trả lại bất kỳ thứ gì. Có 2 loại chức năng xả
import serial print[serial.version]
3 – Xóa bộ đệm đầu vàoimport serial print[serial.version]
4 – Xóa bộ đệm đầu ra
Anaconda Prompt Command
> conda install pyserial
1Đọc dữ liệu từ bảng Arduino bằng Python Đọc nối tiếp
Arduino là một nền tảng điện tử nguồn mở cung cấp phần cứng và phần mềm dễ sử dụng. Các bo mạch Arduino có thể đọc đầu vào từ cảm biến, ngón tay trên nút hoặc tin nhắn Twitter, sau đó chúng xuất ra dưới dạng động cơ, đèn LED hoặc thậm chí là văn bản
Anaconda Prompt Command
> conda install pyserial
2Phổ biến bây giờ
Nguyên nhân gây ra sự cố "vượt quá tốc độ dữ liệu iopub" và cách khắc phục
Lỗi thông thường
Python import serial
print[serial.version]
5uteimport serial
print[serial.version]
6 import serial
print[serial.version]
7
Đối với sự cố này, hãy thử đổi tên tệp dự án của bạn thành 'serial. py'. Xóa
import serial print[serial.version]8 nếu nó tồn tại. Sau đó chạy
import serial print[serial.version]9
Ngoài ra, sự cố này xảy ra do gói bạn đang nhập có cùng tên với tệp dự án của bạn
Câu hỏi thường gặp về Đọc nối tiếp Python
Chúng ta có thể đọc nhiều byte cùng một lúc trong lần đọc nối tiếp không?
Hàm
serial.read[]
0 chỉ nhận một byte tại một thời điểm. Tuy nhiên, chúng ta có thể lặp lại hàm để nhận từng byte một qua nhiều vòng lặp. Điều này khá dư thừa. serial.read[]
1 sẽ đọc một bộ byte hoàn chỉnh cho đến khi đạt được EOLPhần kết luận
Chúng tôi biết được rằng với sự trợ giúp của Mô-đun PySerial và Đọc nối tiếp Python, chúng tôi có thể xử lý thông tin từ các thiết bị qua Cổng nối tiếp