Saya memerlukan bantuan untuk memecahkan masalah Kesalahan Atribut dalam kode Python saya.
Saya bekerja dengan perangkat serial yang dihubungkan oleh /dev/ttyUSB0 ke Raspberry Pi 2B. Tujuan saya untuk kode ini adalah membaca data serial langsung secara terus menerus dari perangkat serial dan memisahkan perintah yang digambarkan dengan simbol '@' alih-alih /n atau /r.
Proyek ini masih dalam tahap awal tetapi dari beberapa penelitian singkat yang telah saya lakukan, atribut pyserial 'read_until' akan berfungsi dengan sempurna sebagai tulang punggungnya. Ini akan memungkinkan saya membaca dalam satu byte pada satu waktu dan berhenti pada simbol '@', dan kemudian memproses data sebelum melanjutkan ke bagian data serial berikutnya.
Untuk beberapa alasan saya mendapatkan Kesalahan Atribut ketika saya mencoba menggunakan 'read_until' yang mengklaim bahwa objek 'Serial' tidak memiliki fungsi ini. Di bawah ini adalah kode pengujian yang saya gunakan dan kesalahan yang muncul kembali:
import serial
gc = serial.Serial('/dev/ttyUSB0', baudrate = 230400)
print(gc.name)
def getCommand():
gcData = gc.read_until('@', 1).decode('ascii')
print(gcData)
getCommand()
gc.close()
Dan inilah output yang diberikan kode ini kepada saya:
>>>
/dev/ttyUSB0
Traceback (most recent call last):
File "/home/pi/Python/GC/serialRead1.py", line 10, in <module>
getCommand()
File "/home/pi/Python/GC/serialRead1.py", line 7, in getCommand
gcData = gc.read_until('@', 1).decode('ascii')
AttributeError: 'Serial' object has no attribute 'read_until'
>>>
Hal yang membuat frustrasi di balik hal ini adalah 'read_until' seharusnya diimpor bersama dengan perpustakaan serial. Mungkin saya melewatkan sesuatu yang cukup sederhana, tetapi akan sangat membantu jika saya dapat menggunakan atribut ini. Sebagian besar pertanyaan lain tentang 'read_until' merujuk pada 'telnetlib' yang sejauh yang saya tahu tidak sama dengan yang dimiliki PySerial.
Berikut ini tautan ke situs web tempat saya menemukan dokumentasi yang mengatakan bahwa 'read_until' seharusnya menjadi milik PySerial: https://pyserial.readthedocs.io/en/latest/pyserial_api.html
Asal tahu saja, saya sangat baru dalam pemrograman secara umum. Beberapa jargon yang digunakan oleh programmer berpengalaman seperti Anda mungkin berlebihan sehingga saya mungkin tidak tahu bagaimana melakukan solusi yang Anda miliki. Saya meminta kesabaran Anda saat saya mempelajari lebih lanjut tentang pemrograman dan Python secara umum.
Terima kasih banyak atas waktu Anda!
python3 -c 'import serial; print(serial.__version__)'
- person tttapa   schedule 17.03.2020Traceback (most recent call last): File "<string>", line 1, in <module> Attribute Error: 'module' object has no attribute '__version__'
- person Sgt_Baconbits   schedule 17.03.2020__version__
ditambahkan pada tahun 2016. Bagaimana Anda menginstal PySerial? Anda dapat mencobapython3 -c 'import serial; print(serial.VERSION)'
sebagai gantinya. - person tttapa   schedule 17.03.2020sudo apt-get install python-serial
Saya merasa menarik karena Anda mengatakan itu adalah versi yang sangat lama. Saya mencari cara terbaru untuk menginstal pip, dan mencobasudo python3 -m pip install --upgrade pyserial
Ini tidak lagi memberi saya Kesalahan Atribut. Apakah saya akan melompat terlalu jauh untuk mengatakan bahwa ini sudah diperbaiki? - person Sgt_Baconbits   schedule 17.03.2020