日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【实例记录】在ubuntu上运行python实现与单片机多线程串口通信

發布時間:2024/9/30 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【实例记录】在ubuntu上运行python实现与单片机多线程串口通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 工具
    • 步驟

工具

工具:自己電腦雙系統的ubuntu18.04,單片機esp8266,一個usb轉ttl模塊,ubuntu上已經下載了python的3.6和pip,還需要pip install serial
首先在windows下測試板子是否能順利收發數據:
打開串口調試助手
這里不需要用usb轉ttl插windows的usb口,直接把esp8266連安卓線插上就好

板子里的程序是發1亮燈,發0關燈,發其他的則原樣返回,可見結果是對的,亮燈也如預期。

步驟

模塊和單片機連接:
G-GND
5V-VIN
TXD-RX
RXD-TX
需要知識:串口通信 多線程 線程鎖
打開串口權限
sudo chmod 777 /dev/ttyUSB0

注意杜邦線一定要接對,不然可能單片機沒有上電都不知道
寫代碼:

import threading import serial import time from time import sleep from threading import Lock from datetime import datetime loops=[2, 4] lock=Lock() date_time_format='%y-%M-%d %H:%M:%S' serial = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.5) def date_time_str(date_time):return datetime.strftime(date_time, date_time_format)def loop(n_loop, n_sec):lock.acquire(blocking=True,timeout=2)serial.write("1".encode())sleep(n_sec)print(f'線程({n_loop})開始執行:{date_time_str(datetime.now())},先休眠({n_sec})秒')serial.write("0".encode())sleep(n_sec)lock.release()print(f'線程({n_loop})休眠結束,結束于:{date_time_str(datetime.now())}')def begin(n_loop,sec):sleep(sec)serial.write("yes".encode())data = serial.read(20)print(data.decode())# 為線程定義一個函數def print_time(threadName, delay):serial.write("1".encode())sleep(delay)serial.write("0".encode())sleep(delay)def receive(threadName,delay):serial.write("999".encode())data = serial.read(20)print('this is'+str(data))sleep(delay)# 創建兩個線程def main():print(f'---所有線程開始執行:{date_time_str(datetime.now())}')threads=[]n_loops=range(len(loops))t=threading.Thread(target=loop, args=(1, loops[0]))threads.append(t)m=threading.Thread(target=begin,args=(2,loops[1]))threads.append(m)for i in n_loops: # start threadsthreads[i].start()for i in n_loops: # wait for allthreads[i].join() # threads to finishprint(f'---所有線程執行結束于:{date_time_str(datetime.now())}')if __name__ == '__main__':main()

結果:

亮燈也成功了。

然后記錄一下關于python的將字典轉化為json:

import jsonprint(json.dumps(list('abcde'))) dict = {"time":1,"localtion":9.8} ni = json.dumps(dict) print(dict) print(ni)

總結

以上是生活随笔為你收集整理的【实例记录】在ubuntu上运行python实现与单片机多线程串口通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。