ESP32(MicroPython) LCD1602 显示通过Socket通信接收的数据

news2024/9/9 4:42:53

本程序 实现了通过LCD1602 显示通过Socket通信接收的数据。由于外设驱动有滚动显示的特性并且每次显示要清除之前显示的内容,在显示字符前通过空格和换行清除之前显示的数据,并判断字符串长度,一行显示不下时分两行显示。

代码如下

#导入Pin模块
from machine import Pin
import time
import network
import usocket
from machine import Pin,I2C
from i2c_lcd import I2cLcd
import re

#定义LED控制对象
led1=Pin(15,Pin.OUT)
# LCD 1602 I2C 地址
DEFAULT_I2C_ADDR = 0x27
i2c = I2C(1,sda=Pin(14),scl=Pin(12),freq=400000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)  # 初始化(设备地址, 背光设置)

#路由器WIFI账号和密码
ssid="Mercury_X30G"
password="Xu3328313"

#服务器地址和端口
dest_ip="192.168.1.100"
dest_port=10000

#WIFI连接
def wifi_connect():
    wlan=network.WLAN(network.STA_IF)  #STA模式
    wlan.active(True)  #激活
    start_time=time.time()  #记录时间做超时判断
    
    if not wlan.isconnected():
        print("conneting to network...")
        wlan.connect(ssid,password)  #输入WIFI账号和密码
        
        while not wlan.isconnected():
            led1.value(1)
            time.sleep_ms(300)
            led1.value(0)
            time.sleep_ms(300)
            
            #超时判断,15 秒没连接成功判定为超时
            if time.time()-start_time>15:
                print("WIFI Connect Timeout!")
                break
        return False
    
    else:
        led1.value(0)
        print("network information:", wlan.ifconfig())
        return True

#程序入口
if __name__=="__main__":
    
    if wifi_connect():
        socket=usocket.socket()  #创建socket连接
        addr=(dest_ip,dest_port)  #服务器IP地址和端口
        socket.connect(addr)
        socket.send("Connected")
        while True:
            text=socket.recv(32)  #单次最多接收32字节,避免超出屏幕范围
            if text==None:
                pass
            
            elif len(text)<=16: #一行能显示则直接显示
                text=text.decode("utf-8")
                lcd.putstr("                \n")
                lcd.putstr("                \n") #清屏
                lcd.putstr(text)
                socket.send("I get:"+text)
            else: #需要用两行显示则分割字符串
                text=text.decode("utf-8")
                lcd.putstr("                \n")
                lcd.putstr("                \n") #清屏
                lcd.putstr(text[:17]) #显示第一行
                lcd.putstr('\n') #换行
                lcd.putstr(text[17:]) #显示第二行
                socket.send("I get:"+text)    
            time.sleep_ms(300)
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#对字符串的常用处理总结C#控制台

目录 C#用空格分隔的字符串string转换成字符数组string[]&#xff1b;字符串数组string[]转换成整型数组int[] 1、将用console.readline()获取的用空格分隔的string转换成string[] 2、将string[]转换成int[]&#xff08;c#3.0&#xff09; 截取指定字符串 C#RichTextBox截断…

ModaHub魔搭社区:Milvus 数据迁移工具 – MilvusDM

目录 Milvus 数据迁移工具 — MilvusDM 简介 功能介绍 Faiss to Milvus Milvus 数据迁移工具 — MilvusDM 简介 MilvusDM 是一款针对 Milvus 研发的数据迁移工具&#xff0c;支持 Milvus 数据传输以及数据文件的导入与导出&#xff1a; Faiss to Milvus&#xff1a;将未…

基于Transformer视觉分割综述

基于Transformer视觉分割综述 SAM &#xff08;Segment Anything &#xff09;作为一个视觉的分割基础模型&#xff0c;在短短的 3 个月时间吸引了很多研究者的关注和跟进。如果你想系统地了解 SAM 背后的技术&#xff0c;并跟上内卷的步伐&#xff0c;并能做出属于自己的 SAM…

获取齐治堡垒机任意用户登录权限

他一个人呆呆地坐在禾场边上&#xff0c;望着满天的星星&#xff0c;听着小河水朗朗的流水声&#xff0c;陷入了一种说不清楚的思绪之中。这思绪是散乱而飘浮的&#xff0c;又是幽深而莫测的。他突然感觉到&#xff0c;在他们这群山包围的双水村外面&#xff0c;有一个辽阔的大…

spring之BeanFactory

spring之BeanFactory DefaultListableBeanFactory示例代码类继承实现结构 BeanFactory是Bean工厂&#xff0c;所以很明显&#xff0c;BeanFactory会负责创建Bean&#xff0c;并且提供获取Bean的API。 DefaultListableBeanFactory 在Spring源码中&#xff0c;BeanFactory接口存…

ULTRAMAT 23红外气体分析仪

后面板接口图 485通信接口 7脚和9脚 模拟量接口 选装接口 635430034211014569720.pdf (chem17.com)https://img64.chem17.com/2/20140807/635430034211014569720.pdf 特此记录 anlog 2023年7月3日

redis从零开始(6)----分布式锁

场景 修改时&#xff0c;经常需要先将数据读取到内存&#xff0c;在内存中修改后再存回去。在分布式应用中&#xff0c;可能多个进程同时执行上述操作&#xff0c;而读取和修改非原子操作&#xff0c;所以会产生冲突。增加分布式锁可以解决这个问题 基本原理 同步锁&#xf…

14.PWM输出

1.通用定时器PWM概述&#xff1a; 2.PWM工作过程&#xff1a; 2.PWM模式1&PWM模式2&#xff1a; 3.向上计数配置&#xff1a; 4.PWM模式&#xff1a; 5.自动重载的预装载寄存器&#xff1a; 6.STM32定时器3输出通道引脚&#xff1a; 7.PWM输出库函数&#xff1a; PWM输出…

java 单元测试覆盖率调研

1、覆盖率工具对比 根据网上的资料搜索发现&#xff0c;现在常用的 java 单元测试覆盖率工具主要有&#xff1a; EmmaCoberturaJacocoClover(商用&#xff09; 工具JacocoEmmaCobertura原理使用 ASM 修改字节码修改 jar 文件&#xff0c;class 文件字节码文件基于 jcoverage,…

Squid代理服务器配置及CDN简介

Squid代理服务器配置及CDN简介 一、Squid介绍1、代理的工作机制2、代理服务器的概念3、代理服务器的作用4、Squid代理的类型 二、Squid搭建1、安装Squid服务2、构建传统代理服务器3、构建透明代理服务器4、ACL访问控制5、Squid日志分析6、Squid反向代理 三、CDN1、CDN简介2、CD…

vue项目打包后css js 加载不进来,路径不对的问题

问题描述&#xff1a;本地运行都是正常的&#xff0c;打包后出现css js 加载不进来&#xff0c;路径不对&#xff0c;接口调用地址不对出现undefined字段&#xff0c;如图&#xff1a; 网上差了很多资料&#xff0c;试了很多方法都不行&#xff0c;也有说是 publicPath: ./ 配置…

【Matlab】智能优化算法_正余弦优化算法SCA

【Matlab】智能优化算法_正余弦优化算法SCA 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 func_plot.m4.2 Get_Functions_details.m4.3 initialization.m4.4 main.m4.5 SCA.m 5.运行结果6.参考文献 1.背景介绍 尽管需要更多的函数评估&#xff0c;但文献表明&#xff0c…

【花雕】全国青少年机器人技术一级考试试卷(实操真题之三)

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…

MyBatis-Plus学习3 Wrapper条件构造器

组装查询Wrapper Testpublic void test01() {// 查询用户名包含a&#xff0c;年龄在20-30之间&#xff0c;邮箱信息不为null的用户信息QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.like("name", "a").between("…

Linux Shell脚本中的变量和流程控制

Linux Shell脚本中的变量和流程控制 Linux Shell脚本是一种方便的自动化工具&#xff0c;它可以帮助我们完成各种复杂任务。在本文中&#xff0c;我们将详细介绍Shell脚本中的变量和流程控制语句&#xff0c;以及如何使用它们编写高效、可读性强的脚本。 变量 在Shell脚本中&…

【LeetCode热题100】打卡第31天:买卖股票的最佳时机二叉树中的最大路径和

文章目录 【LeetCode热题100】打卡第31天&#xff1a;买卖股票的最佳时机&二叉树中的最大路径和⛅前言 买卖股票的最佳时机&#x1f512;题目&#x1f511;题解 二叉树中的最大路径和&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第31天&#xff1a;买卖股票…

Hello Vue3

一、为什么要学vue3 vue官网&#xff1a;https://cn.vuejs.org/api/ 这是vue官网的简介&#xff0c;说vue2在23年年底就停止维护了&#xff0c;将来会拥抱vue3,这是事务发展的一个必然趋势。 二、vue3相比于vue2做了哪些方面的改进和优化 以下是Vue3相比于Vue2的一些改进和…

DAY37:贪心算法(四)跳跃游戏+跳跃游戏Ⅱ

文章目录 55.跳跃游戏思路完整版总结 45.跳跃游戏Ⅱ思路完整版为什么next覆盖到了终点可以直接break&#xff0c;不用加上最后一步逻辑梳理 总结 55.跳跃游戏 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃…

weui 密码二次检查校验

检验规则里rules[]增加: equalTo:需要匹配一致的字段名 我这第一个密码是&#xff1a;USR_PWD&#xff0c;第二个密码是&#xff1a;USR_PWD2,让第二个等于第一个就可以了&#xff1a; equalTo:USR_PWD 效果&#xff1a;

MIT 6.S081 教材第七章内容 -- 调度 --下

MIT 6.S081 教材第七章内容 -- 调度 -- 下 引言调度多路复用代码&#xff1a;上下文切换代码&#xff1a;调度代码&#xff1a;mycpu和myprocsleep与wakeup代码&#xff1a;sleep和wakeup代码&#xff1a;Pipes代码&#xff1a;wait, exit和kill真实世界练习 引言 MIT 6.S081 …