Python Flask框架实现Proteus仿真Arduino与网页数据交互

目录
  • 实验原理
  • 开发环境
  • Flask虚拟环境
  • Python Flask源码
  • 用Proteus仿真Arduino
  • 用com0com建立虚拟串口对
  • 运行程序

实验原理

模拟电脑通过串口与Arduino开发板通信,并通过网页实现简单交互

开发环境

1、Windows10

2、Python3.10

3、Proteus8.6

4、com0com虚拟串口工具

Flask虚拟环境

先安装virtualenv:

pip install virtualenv

建立项目文件夹(比如demo_4)

在demo_04文件夹内,文件-打开powershell

建立虚拟环境venv

PS D:\code\flask\demo_04> virtualenv venv

demo_04文件夹里面会出现venv文件夹,后面安装的python库都装在这个文件夹里面

激活虚拟环境:

PS D:\code\flask\demo_04> .\venv\Scripts\activate

在虚拟环境中安装Flask和pyserial(python的串口库)

(venv) PS D:\code\flask\demo_04> pip install Flask pyserial

如果下载慢,建议修改pip源为清华大学源(请同学们自行百度)

至此开发环境配置完毕

Python Flask源码

文件目录结构:

demo_04
    -html
        index.html
    -static
        -images
            pic_bulboff.gif
            pic_bulbon.gif
    app.py

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
	$("#button_open").click(function(){
		$.get("http://127.0.0.1:5000/open",function(data,status){
			alert("数据: " + data + "\n状态: " + status);
		});
	});
    $("#button_close").click(function(){
		$.get("http://127.0.0.1:5000/close",function(data,status){
			alert("数据: " + data + "\n状态: " + status);
		});
	});
    setInterval(function() {
        $.get("http://127.0.0.1:5000/get",function(data,status){
            if (data == 1){
                document.getElementById("myimage").src="static/images/pic_bulbon.gif";
            }
            else{
                document.getElementById("myimage").src="static/images/pic_bulboff.gif";
            }
		});
    }, 1000);
});
</script>
</head>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
<button id="button_open">打开串口COM2</button>
<button id="button_close">关闭串口COM2</button>
<img id="myimage" src="static/images/pic_bulboff.gif" width="100" height="180">
</body>
</html>

app.py

import os
import serial
from flask import Flask
from flask import send_from_directory
app = Flask(__name__)
root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "html")#html是个文件夹
@app.route('/')
def home():
    return send_from_directory(root, "index.html")#homepage.html在html文件夹下
@app.route('/open')
def open_port():
    global ser
    port = 'COM2'
    baudrate = 9600  # 设置波特率
    timeout = 1
    ser = serial.Serial(port, baudrate, timeout=timeout)
    return 'Serial Port open'
@app.route('/close')
def close_port():
    ser.close()
    return 'Serial Port close'
@app.route('/get')
def read_port():
    ser.reset_input_buffer()
    line = ser.readline()
    return line
if __name__ == '__main__':
   app.run(debug = True)

用Proteus仿真Arduino

原理图:

Arduino源码:

void setup() {
  // put your setup code here, to run once:
pinMode(0,INPUT);
Serial.begin(9600);
Serial.println("hello my friend!");
pinMode(2,INPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==0) {
    Serial.println("0");
  }else{
    Serial.println("1");
  }
  delay(500);
}

用com0com建立虚拟串口对

安装完com0com后,开始菜单打开Setup Command Prompt,运行下图的命令即可创建一个虚拟串口对COM1和COM2(往COM1写数据,可以从COM2读出来,反之亦然)

创建完后,设备管理器可以看到新增了串口设备:

本实验中,Proteus中仿真的Arduino向串口COM1中写数据(在Proteus中双击COMPIM控件,设置Physical port为COM1),Python代码app.py从COM2读取数据,从而实现网页和Arduino的数据交互。

运行程序

1、Proteus中点击三角按钮开始仿真,COMPIM控件上可以看到TXD管脚闪烁,说明在发送数据

2、powershell中运行app.py

(venv) PS D:\code\flask\demo_04> python .\app.py

打开浏览器地址http://127.0.0.1:5000 看到网页:

点击打开串口按钮,然后在Proteus中切换SW1开关状态,可以看到网页中灯泡照片变亮变暗

到此这篇关于Python Flask框架实现Proteus仿真Arduino与网页数据交互的文章就介绍到这了,更多相关Proteus仿真Arduino与网页交互内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python接口传输url与flask数据详解

    周五下午,作为小白太痛苦了,这两天一直在做一件事,如下: 使flask接口中的函数执行的同时,向指定的url传递数据(我甚至不知道怎么描述这个问题).大概的函数结构使这样的: app1 = Flask('app1') @app1.route('/', methods=["POST"]) def pic(): data = request.get_data() # 获取参数字典 # func1在执行过程中会保存图并对图片进行处理 # *需求是在func1把图保存后立即向指定的url传输图

  • Python Flask实现图片验证码与邮箱验证码流程详细讲解

    目录 1. 图片验证码 1.1 工具类-utility.py 1.2 控制层-user.py 2. 邮箱验证码 2.1 准备 2.2 工具类-utility.py 2.3 控制层-user.py 1. 图片验证码 1.1 工具类-utility.py 将所有和图片验证码有关的方法放在类 ImageCode import random import string from io import BytesIO from PIL import Image, ImageFont, ImageDraw c

  • Python flask框架定时任务apscheduler应用介绍

    目录 基本使用 trigger启动方式 cron启动方式 使用装饰器定时启动任务 flask-apscheduler将apscheduler移植到了flask应用中,使得在flask中可以非常方便的使用定时任务了,除此之外,它还有如下几个特性 根据Flask配置加载调度器配置 根据Flask配置加载任务调度器 允许指定服务器运行任务 提供RESTful API管理任务,也就是远程管理任务 为RESTful API提供认证 下载安装 pip install flask-apscheduler 基本

  • Python Flask框架开发之运用SocketIO实现WebSSH方法详解

    Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装,如下内容将重点简述SocketIO库在Flask框架中是如何被应用的,最终实现WebSSH命令行终端功能,其可用于在Web浏览器内实现SSH命令行执行. 首先我们先来看一下SocketIO库是如何进行通信的,对于前端部分需要引入socket.io这个框架,然后就是利用该框架内提供的各类函数实现创建

  • Python Flask框架使用介绍

    目录 1. 数据库连接池 2. wtfroms 3. 信号 3.1 内置信号 3.2 使用信号 3.3 自定义信号 4. 多app应用 5. flask-script 5.1 快速使用 5.2 自定制命令 1. 数据库连接池 使用 pymsql 链接数据库 导入:pip3 install dbutils pool.py 创建数据库连接池 from dbutils.pooled_db import PooledDB import pymysql POOL = PooledDB( creator=p

  • Python Flask框架实现Proteus仿真Arduino与网页数据交互

    目录 实验原理 开发环境 Flask虚拟环境 Python Flask源码 用Proteus仿真Arduino 用com0com建立虚拟串口对 运行程序 实验原理 模拟电脑通过串口与Arduino开发板通信,并通过网页实现简单交互 开发环境 1.Windows10 2.Python3.10 3.Proteus8.6 4.com0com虚拟串口工具 Flask虚拟环境 先安装virtualenv: pip install virtualenv 建立项目文件夹(比如demo_4) 在demo_04文

  • Python Flask框架模板操作实例分析

    本文实例讲述了Python Flask框架模板操作.分享给大家供大家参考,具体如下: 模板 在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求.实际上,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容. 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体值需要从使用的数据中获取.使用真实值替换变量,再返

  • Python Flask框架扩展操作示例

    本文实例讲述了Python Flask框架扩展操作.分享给大家供大家参考,具体如下: 请求上下文(request context) Flask有两大核心:Werkzeug和Jinja2.Werkzeug实现路由.调试和Web服务器网关接口.Jinja2实现了模板. request和response都属于请求上下文对象. 当调用app = Flask(name)的时候,创建了程序应用对象app: request 在每次http请求发生时,WSGI server调用Flask.call():然后在F

  • python flask框架实现传数据到js的方法分析

    本文实例讲述了python flask框架实现传数据到js的方法.分享给大家供大家参考,具体如下: 首先要清楚后台和前端交互所采用的数据格式. 一般选JSON,因为和js完美贴合. 后台返回的数据进行序列化 在/homepageRecommend 路由的 view方法中返回序列化数据 dict = {"a":1, "b":2}<br data-filtered="filtered"> import json json.dumps(di

  • python flask框架实现重定向功能示例

    本文实例讲述了python flask框架实现重定向功能.分享给大家供大家参考,具体如下: flask 重定向: from flask import * app = Flask(__name__) @app.route('/') def index(): return redirect(url_for('login')) @app.route('/login') def login(): return render_template('login.html') if __name__ == '_

  • Python flask框架post接口调用示例

    本文实例讲述了Python flask框架post接口调用.分享给大家供大家参考,具体如下: from flask import Flask,render_template,request app = Flask(__name__) @app.route("/login",methods = ['POST','GET']) def login(): if request.method == "POST": username = request.form.get('u

  • python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pip install flask 2.简单上手 一个最小的 Flask 应用如下: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __na

  • python flask框架快速入门

    Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL. 其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2.这两个也是 Flask 框架的核心. Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-script:插入脚本: Flask-migrate:管理迁移数据库: Flask-Session:S

  • 浅谈Python flask框架

    目录 1. flask 框架概述 1.1flask 框架优势 1.2flask 框架获取 1.3flask 框架使用 2. flask demo步骤 3. flask 基础功能 3.1路由功能 3.2模版提供 4.总结  前言: Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析.人工智能.web后端等应用场景上. Python 目前主要流行的web框架:flask.Django.Tornad

  • 使用python flask框架开发图片上传接口的案例详解

    python版本:3.6+ 需要模块:flask,pillow 需求:开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片. 目录结构: app.py编辑内容: from flask import Flask, request, Response, render_template from werkzeug.utils import secure_filename import os import uuid from PIL import Image, ExifTags app =

随机推荐