Bagaimana saya bisa terhubung ke perangkat serial USB?

12

Saya memiliki perangkat dengan kabel port serial USB yang ingin saya sambungkan ke Raspberry Pi saya. Chipset untuk kabel serial USB ini adalah PL-2303 dari Prolific Technology, Inc.

Bagaimana saya bisa membaca data dari koneksi serial perangkat ini menggunakan Python?

Penipu
sumber
1
Pertanyaan menarik. Ini mungkin membantu dengan bagian USB: raspberrypi.stackexchange.com/questions/258/…
Jivings
1
Apakah ini dua pertanyaan? Secara khusus, 'bagaimana saya bisa menginstal driver untuk perangkat serial?' dan 'bagaimana saya bisa terhubung ke perangkat serial di dalam Python?'. Pertanyaan tentang driver akan lama di situs ini. Namun, pertanyaan Python mungkin lebih spesifik untuk situs seperti StackOverflow. Saya akan menganggap berkomunikasi dengan perangkat serial di Python adalah sama, terlepas dari arsitektur berbasis linux atau mekanisme instal.
RLH
Seharusnya tidak ada perbedaan antara berkomunikasi dengan port serial on board (pin UART) dan port serial USB.
Alex Chamberlain
Pertanyaan ini berbunyi: bagaimana saya memulai dengan tes [Konfigurasi \ Litmus untuk PL2303 TTL ke Serial] ( raspberrypi.stackexchange.com/questions/41553/… )? Setelah perangkat keras dikonfirmasi, maka orang dapat menjalankan menjalankan pyserial untuk menarik data dari port serial
gatorback

Jawaban:

7

Untuk berbicara dengan perangkat serial menggunakan Python, gunakan modul pyserial. Jika tidak tersedia dalam distribusi Anda, itu dapat diinstal dengan mendapatkan salinan sumber dari halaman proyek pyserial dan menjalankan "python setup.py install"

Contoh-contoh sederhana penggunaan pyserial tersedia di bagian pendahuluan singkat .

Modul untuk PL-2303 tersedia secara default - lihat repositori firmware GitHub - saat Anda mencolokkan perangkat, Anda akan melihatnya menyala /var/log/messages. Saya telah terhubung ke Arduino, dan "hanya bekerja" pada port komunikasi /dev/ttyUSB0(perangkat yang berbeda, driver, chipset, dll., Sehingga jarak tempuh Anda mungkin berbeda ).

Hexelpdkk
sumber
Menyambungkan perangkat dan saya sekarang melihat / dev / ttyUSB0 jadi sepertinya ada peluang bagus itu akan "berfungsi".
Swinders
Dengan pyserial terinstal dan menggunakan contoh miniterm saya dapat melihat data dari perangkat :)
Swinders
4

PL-2303 didukung dengan baik, dan akan muncul sebagai /dev/ttyUSBx. Tidak diperlukan driver. Baca seperti yang Anda lakukan pada port serial normal. Saya belum pernah menggunakan Python, tetapi dalam C ++, saya membuka () dalam mode non-blocking, pilih () untuk melihat apakah ada data untuk dibaca, dan kemudian lakukan baca ().

James Bennet
sumber
4

Unduh pySerial ( https://pypi.python.org/pypi/pyserial )

wget http://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz?raw=true -O pyserial-2.7.tar.gz
tar -xzf pyserial-2.7.tar.gz
cd pyserial-2.7
sudo python setup.py install

Anda dapat memeriksa ketersediaan ttyUSB dengan saluran

ls -ltr /dev|grep -i ttyUSB

Untuk melihat penggunaan keluaran serial

tail -f /dev/ttyUSB<NUMBER FROM ABOVE>

Untuk keluar crtl + c

Buat file testserial.py rekatkan kode ini

#!/usr/bin/python
from time import sleep
import serial

# Establish the connection on a specific port
ser = serial.Serial('/dev/ttyUSB0', 9600) 

x = 1 while True:
       print ser.readline() # Read the newest output 
       x += 1
VeggieVampire
sumber