天天看點

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

Windows下使用Python實作序列槽通信

  • 基本資訊
  • 配置過程
    • 配置思路
    • 詳細配置過程
      • 安裝USB裝TTL驅動
      • 配置serial庫
      • 擷取裝置端口号
      • 配置序列槽通信
        • 配置說明
        • 測試過程
  • 其他學習記錄
  • 參考資料

基本資訊

端口号:COM5

使用語言:Python

使用序列槽通信庫:python的serial庫

測試環境:Windows-Jeston nano

使用硬體:筆記本電腦windows系統、USB轉ttl、Jeston nano(做資料接受)

配置過程

配置思路

這裡配置思路和之前發的博文使用Jeston nano配置序列槽通信的思路一緻,均調用python的serial庫實作相應的功能,隻是這裡的端口号不像linux下ttyUSB這種形式,而是類似于COM5這種,這與第一步使用的驅動軟體有關。

詳細配置過程

安裝USB裝TTL驅動

浏覽器搜尋ch340:

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

選擇安裝即可:

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

配置serial庫

你可以直接用pip下載下傳serial庫

pip install pyserial
           

但是可能因為你換源的關系找不到這個庫,當然你也可以直接從github下載下傳:

github位址:https://github.com/pyserial/pyserial

配置過程:直接下載下傳上述連結 zip 檔案,将其中serial檔案夾複制到您 使用的python工程目錄下的 Lib/site-packages下即可

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

我這裡是在anaconda環境下;

當然你也可以直接在pycharm編輯器上下載下傳(如果能搜得到的話);

測試:import serial 無報錯即可。

擷取裝置端口号

以 COM5 為例

這裡可以在裝置管理器中直接檢視ch340的端口号:右擊 此電腦-屬性-裝置管理器-端口

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

也可以使用代碼檢視:

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

代碼如下:

import serial
import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
    print("The Serial port can't find!")
else:
    plist_0 = list(plist[0])
    serialName = plist_0[0]
    serialFd = serial.Serial(serialName, 9600, timeout=60)
    print("check which port was really used >", serialFd.name)
           

配置序列槽通信

配置說明

說明:

因為手裡沒有兩個USB轉ttl,不能做到在windows下同時發送和接受資料,是以借助手邊的jeston nano來完成資料傳輸測試;對于你,如果有兩個USB轉ttl,你可以開一個序列槽調試軟體測試;當然,你可以用單片機通信,如51、32、arduino;

測試平台:

​ Windows-pycharm-python-serial

​ Jeston nano-CuteCom

(CuteCom為一linux下的序列槽調試sudo apt-get install cutecom軟體,你可以通過:

sudo apt-get install cutecom

安裝,通過:

sudo CuteCom

使用)

測試效果:代碼實作雙方發送接受資料,并将資料列印出來;這裡因為我還不會用python實作多線程,是以隻能用兩個代碼分别實作發送和接受。

測試過程

測試效果:

​ windows端:

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

​ Jeston nano端:

​ 配置;這裡可以直接看見Jeston nano3個序列槽

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

發送接收:

Windows下使用Python實作序列槽通信基本資訊配置過程其他學習記錄參考資料

windows端代碼:

import time
import serial

print("UART Demonstration Program")
print("NVIDIA Jetson Nano Developer Kit")


serial_port = serial.Serial(
    port="COM5",                #記得替換此處端口号
    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

           

後續有時間可以試試python多線程或者windows下使用C++調用相應的庫實作序列槽通信…

其他學習記錄

python部分:

​ python環境的包都在Lib/site-packages下;

​ Communication.Print_Used_Com() :Communication類調用Print_Used_Com()函數;

​ Python有3種方法,靜态方法(staticmethod),類方法(classmethod)和執行個體方法 代碼:global Ret ,聲明rect為全局變量

global Ret

聲明rect為全局變量(在類中)

關于通信:

​ 如果要同時收發資料,要使用python多線程實作;

​ 可以直接用printf方法發送資料

​ serial.Serial(serialName, 9600, timeout=60) 這裡指派為 5、‘com5’、“com5”、‘COM5’、“COM5”都可以 不區分大小寫

serial.printf("%c", a);

這裡找一種電腦和Jeston nano傳輸檔案的方式,要求:不使用外網、網際網路連接配接。

參考資料

1、pyserial官方github倉庫:https://github.com/pyserial/pyserial.

2、這篇部落格稍微總結了一下serial庫的常用參數: https://www.cnblogs.com/-wenli/p/11261109.html .

3、https://www.cnblogs.com/dongxiaodong/p/9992083.html .

繼續閱讀