史記征 崔俊


摘要:在單片機、嵌入式等課程的教學過程中,串行通信是最基礎、最重要的知識點之一。在以往的教學中,常使用串口調試助手作為聯調工具,由于其源代碼不開源,不利于學生對串行通信原理的理解。該文利用Python語言第三方庫設計、開發串口調試上位機,并實現與CC2530單片機進行串行通信,有利于老師的教學和學生對串行通信知識的掌握。
關鍵詞:串行通信;Python語言;CC2530單片機
中圖分類號:TP393? ? ?文獻標識碼:A
文章編號:1009-3044(2019)16-0024-03
開放科學(資源服務)標識碼(OSID):
串行通信是指使用一條數據線,按二進制位對數據進行依次傳輸,每一位數據占據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別適用于計算機與計算機、計算機與外設之間的遠距離通信,在電子類課程中有較為廣泛的應用。
1 Python語言中串行通信背景
1.1 Python語言的特點
吉多·范羅蘇姆( Guido Van Rossum)作為Python語言的設計發明者,于1990年發布了Python的第一個版本。作為一種計算機高級程序設計語言,Python具有如下特點:
1)易于學習
Python的編程思維簡單,注重邏輯、輕于語法,庫資源豐富,保留字較少、易于理解。
2)易于閱讀
Python代碼沒有使用其他語言通常用來訪問變量、定義代碼塊和進行模式匹配的命令式符號,而是采用強制縮進的編碼方式,具有極佳的可讀性。
3)免費、開源
Python是FLOSS (自由/開放源碼軟件)之一。使用Python是免費的,甚至可以對它做改動。
4)高級語言
使用Python語言編程時,無須考慮諸如管理程序內存等底層的細節,只需集中精力關注程序的主要邏輯即可。
5)可移植性
由于Python語言具有開源的特點,Python代碼的移植非常方便,可以在各種不同的操作系統上運行。
6)面向對象
Python不但支持面向過程編程,也支持面向對象編程
7)解釋性
Python作為一種解釋型編程語言,在開發過程中不存在編譯環節。
8)可擴展可嵌入性
在Python中,部分程序可以使用其他語言編寫,如C/C++。
1.2 Python語言版本
Python發展至今,經歷了多個版本的更迭,目前仍然保留的版本主要是基于Python2.X和Python3.X。Python3.X 是未來的趨勢,有許多重要的類庫都已經停止對Python2.X的更新,只保留對Python3.X的更新。
1.3 串行通信API
Python進行串行通信主要使用serial庫和tkinter庫。serial庫封裝了對串口的訪問,在支持的平臺上有統一的接口,支持不同的字節大小、停止位、校驗位和流控設置。tkinter是Python的標準GUI庫,使用tkinter可以快速的創建GUI應用程序。本文利用tkinter庫進行串口通信上位機界面開發。
2 Python語言在串行通信中的應用
2.1 第三方庫安裝
Python第三方庫最常用的安裝方式是通過pip命令。作為Python的內置命令,pip需要通過命令行執行。本文所需庫的安裝命令如下:pip install serial。
2.2 上位機程序代碼
利用Python語言編寫串行通信上位機代碼,以實現如圖1所示界面,通過界面上的組件與下位機進行聯調。
2.3 下位機CC2530程序代碼
2.4 系統聯調結果分析
聯調數據的格式為“燈編號開|關#”,D3燈編號是1,D4燈編號是2,D5燈編號是3,D6燈編號是4,0代表關燈,1代表開燈。如打開D3燈的命令是“11#”,關閉D3燈的命令是“10#”。在圖1上位機界面的聯調數據輸入框中輸入“XY#”,X的取值范圍是1、2、3、4,Y的取值范圍0、1,然后依次點擊打開串口、發送數據按鈕即可控制開發板上四個LED燈的亮滅。
3 結束語
本文利用Python語言第三方庫、CC2530開發板,實現了串口通信上位機開發、系統聯調等功能。基于Python語言的串口通信系統具有易于編程、操作簡單、通信誤碼率低等優點,在單片機相關課程的教學過程中加以應用,有助于學習者對串口通信原理的理解。
參考文獻:
[1] 李全利. 單片機原理及接口技術[M]. 北京: 高等教育出版社, 2009: 182-186.
[2] 王弘博, 孫傳慶. Mark Summerfield.Python3程序開發指南[M]. 2版. 北京: 人民郵電出版社, 2015.
[3] 曾維鵬, 蔡莉莎, 林爾敏. 基于VC++及Proteus的上、下位機串口通信仿真技術[J]. 鎮江高專學報, 2013(10): 74-76.
[4] 金海琴, 陳興, 翟林鵬. 基于Modbus協議的串行通信的應用[J]. 電子設計工程, 2013, 21(8): 157-160.
【通聯編輯:謝媛媛】