Ubuntu18.04下使用Python實作序列槽通信
- 前言
- 基本資訊
- 配置過程
-
- 序列槽調試軟體
- 安裝serial庫
-
- 1
- 2
- 3
- 通信調試過程
- 其他問題
- 其他筆記
- 參考資料
前言
Ubuntu18.04使用Python實作序列槽通信方案和之前那篇文章 基本相同,畢竟Jeston nano安裝的系統便是arm版本的Ubuntu18.04.
基本資訊
庫:Python的serial
硬體:電腦Ubuntu18.04系統、USB轉ttl、Jeston nano(做資訊接受發送)
配置過程
序列槽調試軟體
和Windos一樣,ubuntu下也有很多序列槽調試軟體,這裡我使用的是 CuteCom ;
您可以通過以下指令安裝它:
sudo apt-get install cutecom
CuteCom 界面:
安裝serial庫
1
你可以直接在終端下通過pip安裝下載下傳
pip install pyserial
或者conda指令
conda install pyserial
:
Note:如果您使用了anaconda,這裡要注意終端下的環境是哪一個,記得在您計劃使用的Python環境下使用pip指令;
2
你也可以直接在Pycharm編輯器下下載下傳,pyserial即是。
3
測試是否安裝成功:
import serial
不報錯就可。
通信調試過程
硬體連接配接:
測試結果:
電腦端:
Jeston nano端:
測試成功。
電腦Ubuntu18.04端代碼:
import time
import serial
print("UART Demonstration Program")
print("NVIDIA Jetson Nano Developer Kit")
serial_port = serial.Serial(
port='/dev/ttyUSB0',
baudrate=115200,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
)
# Wait a second to let the port initialize
time.sleep(1)
try:
# Send a simple header
serial_port.write("UART Demonstration Program\r\n".encode())
serial_port.write("NVIDIA Jetson Nano Developer Kit\r\n".encode())
while True:
if serial_port.inWaiting() > 0:
data = serial_port.read()
print(data)
serial_port.write(data)
# if we get a carriage return, add a line feed too
# \r is a carriage return; \n is a line feed
# This is to help the tty program on the other end
# Windows is \r\n for carriage return, line feed
# Macintosh and Linux use \n
if data == "\r".encode():
# For Windows boxen on the other end
serial_port.write("\n".encode())
except KeyboardInterrupt:
print("Exiting Program")
except Exception as exception_error:
print("Error occurred. Exiting Program")
print("Error: " + str(exception_error))
finally:
serial_port.close()
pass
其他問題
這裡有一個小問題
問題描述:
插上usb轉ttl,電腦不識别,但是有 /dev/ttyUSB0 這個檔案
解決方法:
添權重限:
sudo chmod 666 /dev/ttyUSB0
Note:這裡 ttyUSB0 這個檔案不是一直都在的,您插上USB轉ttl它就有,拔下它就無了;所有你添加的權限伴随着它拔下就消失了,重新插回需要再添權重限。
另外如果插上USB轉ttl 不顯示 /dev/ttyUSB0,請參考這篇文章裝驅動:
https://blog.csdn.net/u010750137/article/details/57103002.
其他筆記
lsusb能檢視到所有通過USB接入的外設,如下圖,第一個為使用ch340晶片的USB轉ttl、第二個為我使用的聯想滑鼠、第三個為雷蛇鍵盤;
lsmod | grep usbserial
lsmod(英文全拼:list modules)指令用于顯示已載入系統的子產品;grep 指令用于查找檔案裡符合條件的字元串;lsmod | grep 查詢目前系統是否加載了某些子產品。
ubuntu下切換原先python3.6版本和anaconda的python版本安裝庫:預設base是anaconda基礎的Python環境;
你可以使用以下指令激活anaconda環境:
conda activate
以下指令退出:
conda deactivate
檢視虛拟環境
conda-env list
激活虛拟環境
conda activate pythonProject
其中 pythonProject 為虛拟環境名。
參考資料
1、CSDN博文: Windows下使用Python實作序列槽通信.
2、CSDN博文: 英偉達Jeston nano<3>使用Python實作三種方式序列槽通信.