IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> python常用小模块(持续更新) -> 正文阅读

[嵌入式]python常用小模块(持续更新)

串口类

win电脑上,采用两个ttl模块来进行

插入可以看到另一个串口的信息,这里我看到的另一个串口是COM11

需要提前安装串口工具,这里我选用的是conda的环境,因此就是切换到用的虚拟环境,之后pip安装即可

下面先来一段,一秒钟打印一个字符?

import serial
import time

serial = serial.Serial('COM11', 115200)
print(serial)
if serial.isOpen():
   print("open success")
else:
    print("open failed")

try:
    while True:
        serial.write('hello serial\r\n'.encode('utf-8'))
        time.sleep(1)

except KeyboardInterrupt:
    if serial != None:
        serial.close()

运行结果如下?

?分析上面的代码,可以看出,要使用串口的话,首先定义一个串口对象,设置波特率和串口号,当然其他参数是缺省,可设置或者直接默认,也可以直接看看源码

然后要注意的是,pyserial的文档注明write的输入参数必须是bytes 格式的

?可以看到最后进入这个页面

直接看打印信息也可以看出来?


?下面测试发送变量

serial.write(1)

?这里直接发送1

就一直返回00,(前面提到只能发二进制数据)所以这里还是先转字符吧

修改循环中的内容,别忘了前面定义变量

        serial.write((str(a)+'\r\n').encode('utf-8'))
        time.sleep(1)
        a+=1

?

这样就可以发送变量了,之后我们在另一端转成字符即可


下面我们尝试使用树莓派来完成,树莓派有usb头并且本身有串口外设,所有可以用两种方式来进行串口传输 ,下面一一尝试使用这些外设

首先是要开启这个外设,还是系统设置那里,这里我不赘述,和vnc一个地方的

树莓派引脚图:

查看设备,输入

ls -l /dev

看到有啷个串口,这里我们用上面图中比较明显的那个?

?然后我用了扩展线来接线,如下,另一头连上电脑的usb设备

使用pyserial库,安装

sudo apt-get install python-serial

编写python代码?

import serial
import time
ser = serial.Serial("/dev/ttyS0", 9600)
def main():
    while True:
        cnt = ser.inWaiting()
        if cnt != 0:
            recv = ser.read(cnt)
            ser.write(recv)
        ser.flushInput()
        time.sleep(0.1)
    
if __name__ == '__main__':
    main()

?电脑本地建立连接

?输入测试,这里是写的一段回显函数,看起来是还行的,这个库和电脑端一样的?

?下面测试使用USB的方式

输入命令查看usb设备信息,之后再插入usb查看USB信息,结果如下

lsusb

输入命令查看新增的串口信息?

 ls -l /dev/tty*

?后面就一样了,还是用上面的代码,改下口就OK

import serial
import time
ser = serial.Serial("/dev/ttyUSB0", 9600)
def main():
    while True:
        cnt = ser.inWaiting()
        if cnt != 0:
            recv = ser.read(cnt)
            ser.write(recv)
        ser.flushInput()
        time.sleep(0.1)
    
if __name__ == '__main__':
    main()

一切OK?

读取文件类

txt

大致要求如下,记录了一个运动物体的轨迹坐标数据,现希望将其可视化表示出来,数据样例如下

?可以看出,是需要读取文件然后分割字符串,代码如下,这里我建立了两个空列表用于存储需要的数据,之后每行遍历,先清除了换行符,之后利用,进行分隔,取第一个逐个添加到x,之后取第二个逐个添加到y,这里一定注意关闭文件

f = open("test.txt",'r')
x = []
y = []
for line in f:
    # print(line.split(',')[0])
    line= line.strip('\n')
    x.append(int(line.split(',')[0]))
    y.append(int(line.split(',')[1]))
f.close()

之后再使用绘图函数,先画了散点图,之后连线图

plt.scatter(x,y,color="red")
plt.title("demo")
plt.xlabel("X")
plt.ylabel("Y")

plt.plot(x,y,color = "green")
plt.show()

?如下所示

excle

将上面的数据存入excle,首先需要一个库?,注意不要安装最新版的,最新版的不支持xlsx文件。会报错,我这个版本即可

然后是下面的读的库,这里我已经装过了

?下面是编写的代码部分

import xlwt


f = open("test.txt",'r')
x = []
y = []
for line in f:
    # print(line.split(',')[0])
    line= line.strip('\n')
    x.append(int(line.split(',')[0]))
    y.append(int(line.split(',')[1]))
f.close()

workbook = xlwt.Workbook(encoding='utf-8')
ws = workbook.add_sheet("sheet1")

for i in range(len(x)):
    ws.write(i, 0, x[i])
for j in range(len(y)):
    ws.write(j, 1, y[j])
workbook.save('data.csv')

?结果如下

?基本没问题,这里要注意就是用这个模块编写数据长度过长会报错,他一次只能遍历256个单元格

报错信息为

column index (256) not an int in range(256)

源码在这里?

?这里要么我们就每隔256执行一次,要么就改为csv的格式保存,这样就没问题了,这里我用的是csv的方式,详情看代码!

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:08:40  更:2022-01-14 02:10:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:57:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码