python3腳本篇1-串口通訊腳本

2020-12-06 一葉孤沙

前言

本文我們來學習Python軟體包pyserial的使用,硬體採用wemos D1開發板,直接燒錄串口章節代碼即可,本文主要編寫PC端Python腳本,完成腳本和外接串口設備通訊的功能。

一、基礎知識

1.pyserial簡介:

pyserial模塊是python和串口設備通訊的package,串口是計算機上比較通用的通訊協議,串口設備通過USB插入電腦,python通過pyserial模塊就可以完成和串口設備的通訊,其主要函數說明如下:

2 安裝pyserial

pip3 install pyserial

二、示例

1.程序

# encoding=utf-8

import serial

import threading

import datetime

import queue

from time import sleep

class Uart(object):

def __init__(self, port):

self.err = 0

self.run_status = 0

try:

self.uart = serial.Serial(port, 9600)

self.run_status = 1

print("start uart success")

except:

print("start uart error")

self.err = -1

def uart_recv_thread(self):

print("start uart_recv_thread")

while True:

try:

data = self.uart.readline()

data = "[uart==>pc] " + data.decode()

print(data)

sleep(0.05)

except Exception as e:

print("Error")

print(e)

def run(self):

threading.Thread(target=self.uart_recv_thread, daemon=True).start()

def close(self):

print("close uart")

self.uart.close()

def uart_send_data(self, data):

print("pc==>uart: ", data)

self.uart.write(data.encode())

if __name__ == "__main__":

uart = Uart("COM13")

if(-1 != uart.err):

uart.run()

while(True):

input_data = input("Please input:\r\n")

if ("quit" == input_data):

uart.close()

break

else:

uart.uart_send_data(input_data)

sleep(0.1)

print("exit uart")

程序中定義了一個Uart類,構造函數中實現打開串口設備功能,如果打開失敗,Uart.err = -1,初始化對象後,調用Uart.run()即可開啟接收線程,注意創建線程函數中daemon=True,表示設置接收線程為守護線程,當主線程退出後,該守護線程也退出,否則將成為殭屍線程一直存在。主線程中處理邏輯比較簡單,當用戶輸入數據不是「quit」時候,直接發送給串口設備,否則關閉串口,退出主線程。

三、運行

1. 硬體連接

注意wemos D1中需要編譯燒錄「wemos D1 arduino物聯網開發板應用筆記2-串口通信」章節中代碼,大家也可自行編寫,其實現功能是當串口收到數據後,原路返回。

2. 運行python腳本

進入run.py根目錄,終端(本文用VS Code下終端,也可在CMD命令窗口執行)輸入python3 run.py即可運行程序,界面如下:

手動輸入hello world,wemos收到數據後會立刻返回。

手動輸入「quit」,退出主線程,此時守護線程也會退出。

四、結語

本節完,實際操作過程中需要注意的地方有如下幾點:

(1) python相關

本文使用到了python線程、對象等內容,如果沒有接觸過這方面的朋友,最好看下網上相關教程,實際項目開發過程中不僅要使用串口接收線程,也要及時有效地對數據進行處理,本文是直接列印接收數據,比較好的方式是串口接收線程接收到數據後放置接收隊列中,然後再做其他處理,感興趣的朋友可自行嘗試。

作者:小驛

寄語:事在人為,不去做你怎麼知道行還是不行。

相關焦點

  • 基於Voronoi二維多晶體的衍生腳本操作2
    2021年1月已經過完了,今天是2月的第一天,時間如風,略過我英俊的臉龐,無聲無息。過的是真快。今天呢,還是談一談腳本。雖然我已經很久沒寫子程序了。我對腳本的興趣更大。小夥伴們期待的umeshmotion,我記著的,會寫的。今天還是談那個二維的泰森多邊形,最近看到有粉絲的留言,大家的留言我基本都能看到,一般都會回復。有位小夥伴問我怎麼讓二維的晶粒生成的更均勻。
  • 腳本輔助對網路遊戲的影響
    而腳本的出現,卻毀了一切的一切。 腳本,就是掛機式的源頭。爾後,各個遊戲廠家加大對遊戲的安全性開發,基本黑不了遊戲內部文件了,於是,腳本就誕生了。腳本就是記錄FB每個怪物的坐標,根據遊戲內部的快捷鍵鎖定攻擊對象,完成FB。每天所需日常的坐標,自動完成日常。自動攻擊怪物達到刷怪目的。自動打寶圖,自動跑鏢。又因為腳本是輔助性外部文件,很多廠家很難檢測出來,檢測出來又不好封號。記得最猖獗的時候,騰訊TP如果檢測後臺有按鍵精靈直接封號3天。
  • 使用Django 項目中的 ORM 編寫偽造測試數據腳本
    不過這需要比較多的文章才能達到分頁效果,但本地開發時一般都只有幾篇測試文章,如果一篇篇手工添加將會非常麻煩。解決方案是我們可以寫一個腳本,自動生成任意數量的測試數據。腳本寫好後,只需運行腳本就可以往資料庫填充大量測試數據。腳本就是一段普通的 Python 代碼,非常簡單,但是通過這個腳本你將學會如何在 django 外使用 ORM,而不僅僅在 django 應用的內部模塊使用。
  • Blender遊戲引擎的 Python 腳本
    您將學習如何在 Blender 中使用 Python 腳本用腳本調整車輛移動,加速,停車。請記住,汽車只是用作使用 Python 的示例。本教程將教您 Blender 遊戲引擎的 Python 腳本基礎知識,包括通過腳本訪問和更改邏輯信息。即使您對 Python 有所了解,本教程也很容易理解。
  • Skype 驚現跨區域腳本漏洞 IE成幫兇
    最近,我發現,Skype 竟然以本地區域(Local Zone)運行其 IE 控制項,更大問題是,Skype 將 HTML 頁面運行在非鎖定狀態的本地區域,和 AOL 即時通訊曾經犯的錯誤一樣。    這意味著,如果向這些頁面注如入一段腳本,將有可能在用戶的機器上執行這段代碼,GNUCITIZEN 的 PDP 說,可以使用 Airpwn Wifi 數據包注入漏洞套用到該機制,我完全同意。
  • 使用腳本繪製吸附勢能面
    其實手動撒點,再採集數據也是可行的,但是會比較麻煩,因此作者根據實際需要開發了一款腳本scan_adsorption_energy用於自動完成這個過程。腳本使用Python編寫,需要numpy和matplotlib第三方庫。 我們首先算好一個吸附例子得到CONTCAR,這個可以讓我們得到吸附分子的元素信息和理想的吸附高度。
  • LOL虎神評價韓服走A怪:外掛腳本無疑,韓服目前腳本非常多!
    LOL虎神評價韓服走A怪:外掛腳本無疑,韓服目前腳本非常多! 最近韓服的走A怪事件鬧得沸沸揚揚,這個韓服前十的選手一手大嘴老鼠的無敵走A讓無數職業選手都懷疑是用了腳本外掛!
  • 叉叉腳本參戰 奇蹟MU覺醒全自動腳本一鍵主線日常全搞掂
    為了守護王國,為了對抗入侵的魔族殲滅魔焰軍團,使用叉叉助手《奇蹟MU:覺醒》高速升級腳本吧!一鍵高速完成主線支線每日副本等多樣日常任務,輕鬆練級刷裝備,只需幾天即可獲得極高的戰力!馬上下 載叉叉助手即可獲得高速腳本享受。
  • AE腳本的安裝使用技巧大全,值得收藏
    (一)AE插件、腳本、預設的區別(UP主實用技術分享)(1)AE插件AE插件存在於你的ae安裝目錄下的Support FilesPlug-ins文件夾裡在AE CC之後,AE PR的插件會存在於兩個目錄,/我的軟體是默認C盤位置安裝/)位置1位置2至於ae插件的註冊或者叫破解方法一種是根據你所得到的插件提供的序列號或算號器得到的註冊信息在ae中的effect contorls面版的options(或其他)中填入註冊信息即可。
  • 手遊輔助腳本平臺哪個好
    手遊輔助腳本平臺哪個好?當然選擇BT手遊APP這款軟體!開啟後將帶來各種VIP特權、無限資源、GM商城福利等等!而且遊戲下載速度快到超乎你想像!不好用來打我!
  • 賽爾號:巔峰中常見的腳本機制
    腳本算是一種巔峰文化,在狂野和33模式較為常見,腳本就是自動戰鬥方式,特點是陣容較為固定,出招方式較為固定,無法主動切換精靈,了解一些常見的巔峰腳本及其戰鬥方式,對於我們上分以及刷幣都有好處。那麼接下來我們談一談腳本常見的精靈以及其戰鬥方式。
  • 王者榮耀是怎樣煉成的(三)unity組件與腳本
    這回我們來侃侃unity中的組件與腳本。一.組件與腳本簡介1.組件組件(Component),顧名思義,就是遊戲物體的組成部件。這和我們對現實生活的認識是一致的。就比如說一臺主機,是有CPU,顯卡,主板,內存條等等組成的。這些部件就是主機的「組件」。這些組件一旦有不滿意的,隨時可以增刪改查。
  • 星際2地圖編輯器全新腳本接近C語言
    C語言的高手也許可以歡呼了,暴雪在最新的星際爭霸2官方藍貼中證實了全新的星際地圖編輯器將採用一種類似C語言的腳本語言——Galaxy,任何一名有C語言基礎的SC2愛好者都可以輕易上手。
  • 按鍵精靈設置循環腳本循環次數等等
    按鍵精靈設置循環腳本的圖文步驟 在使用按鍵精靈這款軟體中,可以使用軟體自帶的100多種腳本,也可以自己設置腳本,或者對現有腳本進行修改。今天,我就為大家介紹一下怎麼設置循環腳本,這就包括:設置循環次數、熱鍵、循環開啟時間等步驟,一起來學習一下吧!
  • 遊標腳本性能問題詳解之案例實踐篇
    下面的兩個遊標腳本分別創建並執行了dynamic和fast forward only兩種類型的遊標。,1  print '3'exec sp_cursorclose @p2  註:腳本中用到的和遊標有關的存儲過程,請參考:http://jtds.sourceforge.net
  • Python 腳本案例:為流域插值雨量計
    我們不僅更新完善了諸多功能,最重要的是加入了Python 腳本。什麼是Python?Python是一種解釋型腳本語言。用戶可以在腳本編輯器中直接創建、管理和執行腳本,並提供腳本示例來幫助您入門。通過提供對所有GIS、模型和時間序列數據的直接訪問(從PCSWMM7.2版本開始,將支持所有任何格式的數據導入!及導出到任意格式,處理任意的結果分析!)PCSWMM中的Python腳本幾乎可以完成任何事情:從智能化模型開發過程和執行實時洪水預報,到支持從讀取和寫入到第三方文件格式。
  • Arduino的串口通訊函數
    串口通訊是單片機當中用到的最多的一種通訊,對我而言,它最大的一個優勢就是簡單,相對於I2C、SPI等,參與串口通訊的線只有兩根,分別為接收端、發送端,當然還包括電源線,我們暫且不管。單片機工作的時候一般都是單片機與之間單片機通訊,還有一種就是單片機與電腦的通訊,與電腦通訊主要是調試單片機的時候使用,那麼串口通訊到底在通訊什麼呢?
  • 極具潛力的效率啟動器 App,Raycast 腳本功能詳解
    上面是一個簡單的 Bash 腳本,通過 echo 命令支持列印出 Hello World! 字符串。其中,注釋掉的部分是腳本配置項。其中包含參數: schemaVersion:架構版本,Raycast 預留為將來 API 的變化做準備。目前只有第 1 版。
  • 怎麼運用按鍵精靈製作滑鼠連擊的遊戲輔助腳本
    按鍵精靈2014 —遊戲輔助製作軟體 首先打開按鍵精靈,選擇新建按捏進入按鍵精靈2014版頁面,看見腳本編輯器 腳本屬性區,更改腳本描述和熱鍵,描述改成「滑鼠連點」,啟動熱鍵改成「Ctrl+1」中止鍵改成「Ctrl+2」,方便日後調用。
  • 按鍵精靈的使用-安裝並製作第一個小腳本
    按鍵精靈打開後的界面是這樣子的我們點擊新建腳本,會彈出一個窗口,直接點確定就可以,然後就會出現另一個窗口,也就是我們進行代碼編寫的窗口了廢話不多說,開始編寫一個很簡單的小腳本,先切回原始碼區然後我們在代碼編輯區編寫 :   KeyPress 49,1   如下圖所示:接著點擊調試按鈕我們用記事本來測試剛剛所編寫的小腳本吧