Giao tiếp Python rs232

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_______4
Anaconda 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
7
Sẽ 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
4

xu 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
0

Hà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ào
  • import 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
2

Phổ 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]
5ute
import 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 EOL

Phầ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

Làm cách nào để gửi dữ liệu qua cổng nối tiếp trong Python?

Truyền dữ liệu. Đầu tiên, chúng ta cần bao gồm thư viện nối tiếp. Sau đó, chúng tôi có thể khai báo một phiên bản của cổng nối tiếp và thêm các tham số SerialPort, baudRate và timeOut , tôi đang sử dụng serial0, 115200 và 0. 050. Để tìm cổng nối tiếp Pi của bạn, hãy sử dụng lệnh 'lsdev'. Trong trường hợp của tôi, cổng nối tiếp của tôi là serial0.

PySerial có giống với nối tiếp không?

pySerial bao gồm một chương trình đầu cuối dựa trên bảng điều khiển nhỏ có tên là nối tiếp .

Anaconda có PySerial không?

Cài đặt PySerial . Nếu bạn đã cài đặt bản phân phối Anaconda đầy đủ của Python, PySerial có thể được cài đặt bằng Dấu nhắc Anaconda. If you installed the full Anaconda distribution of Python, PySerial comes pre-installed. If you do have the full Anaconda distribution of Python installed, PySerial can be installed using the Anaconda Prompt.

Mô-đun PySerial trong Python là gì?

PySerial là thư viện cung cấp hỗ trợ cho các kết nối nối tiếp ["RS-232"] trên nhiều loại thiết bị khác nhau . cổng nối tiếp kiểu cũ, khóa Bluetooth, cổng hồng ngoại, v.v. Nó cũng hỗ trợ các cổng nối tiếp từ xa thông qua RFC 2217 [kể từ V2. 5].

Chủ Đề