树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)

2023-11-17

参考:树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)
作者:图触靓
发布时间: 2020-07-26 21:50:39
网址:https://blog.csdn.net/bhbhhyg/article/details/107599915

跑Linux的树莓派可以通过路由器来与wemos版进行局域网内通信:

核心思想是linux下的socket网络编程,树莓派作为客户端,wemos作为服务器。

wemos版作为服务端代码:

#include <ESP8266WiFi.h>
char ssid[] = "路由器名称";   
char passwd[] = "密码";
 
void initWifiSta()
{
  WiFi.mode(WIFI_STA);         // 设置STA模式
  WiFi.begin(ssid, passwd);   //连接网络
  while (WiFi.status() != WL_CONNECTED) {
         Serial.print(".");
         delay(500);
   }
   Serial.println(WiFi.localIP());  
    //通过串口打印wemos的IP地址192.168.200.110
   delay(500);
  
}
int port = 8888;  //端口号
WiFiServer server(port); // 设置服务器端口号
void setup() {
  Serial.begin(115200);
  initWifiSta();
  pinMode(D2,OUTPUT);
  digitalWrite(D2,HIGH);
  
}
void loop() {
    WiFiClient client = server.available(); 
    server.begin();//服务初始化 
   while (client.connected()) {
         while (client.available() > 0) { 
         char cmd = client.read();  //从客户端读取数据
         Serial.println(cmd);
         if(cmd==49)
         {
          digitalWrite(D2,LOW);
          }
          else if(cmd==50)
          {
            digitalWrite(D2,HIGH);
          }
          
         }
   }
    
 
}

树莓派作为客户端与wemos连接代码:

#include<netinet/in.h>
#include <arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int main(int argc,char **argv){
        char readbuf[2];
        char ch[128];
        if (argc!=3)
        {
                printf("input not good\n");
                exit(-1);
        }
        int fd_a;
        int s_fd=socket(AF_INET, SOCK_STREAM,0);//配置通信模式
        if (s_fd==-1)
        {
                perror("socket");
                exit(-1);
        }
        struct sockaddr_in addr;
        struct sockaddr_in addr1;
        memset(&addr,0,sizeof(struct sockaddr_in));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(atoi(argv[2]));
        inet_aton(argv[1],&addr.sin_addr);
 
        if(connect(s_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)//连接wemos版
        {       
                perror("connect");
                exit(-1);
        }
        while(1){
        printf("请输入发送的指令\n");
        gets(readbuf);
        puts(readbuf);
        write(s_fd,readbuf,strlen(readbuf));//向wemos版发送信息
        }
        return 0;
}

在这里插入图片描述
编译完成后,输入wemos的ip地址(X输入地址),和对应的端口号(A输入端口号),即可连接上wemos版,对其单向通信。

可以通过发指令无线操控wemos版进行工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信) 的相关文章

  • Linux下的C#,Process.Start()异常“没有这样的文件或目录”

    我在使用 Process 类调用程序来启动程序时遇到问题 可执行文件的层次结构位于 bin 目录下 而当前工作目录需要位于 lib 目录下 project bin a out this is what I need to call lib
  • 即使 makefile 和源代码存在,为什么“Build Project”在 Eclipse Helios CDT 中显示为灰色?

    我无法构建我的项目 我在 Eclipse Helios 中创建了一个新的 CDT 项目 并告诉它使用现有的源代码和 makefile 这两者都正确显示在 Package 和 Project 视图中 然而 项目 菜单中的 构建全部 和 构建项
  • 在单个命令中使用前缀重命名文件夹中的所有文件

    重命名带有前缀的文件夹中的所有文件 Unix 假设一个文件夹有两个文件 a txt b pdf 那么它们都应该从一个命令重命名为 Unix a txt Unix b pdf 如果您的文件名包含没有空格并且你没有任何子目录 你可以使用一个简单
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • 确保 config.h 包含一次

    我有一个库项目 正在使用 Linux 中的 autotools 套件移植到该项目 我对自动工具很陌生 本周 我已经了解了其操作的基础知识 我有一个关于如何保留内容的问题config h免遭重新定义 我惊讶地发现生成的config h文件也没
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b

随机推荐

  • js里document的用法

    document write 动态向页面写入内容 document createElement Tag 创建一个html标签对象 document getElementById ID 获得指定ID值的对象 document getEleme
  • mysql 两个时间相减返回年、月、日、时、分、秒

    select timestampdiff 变量 开始时间 结束时间 变量 year 年 month 月 day 天 hour 小时 minute 分钟 second 秒 例如
  • 由Vite读音引发的英语颠覆

    前段时间出了个项目Vite 被读成va t 结果后面发现是读vi t 后面又引出了height的读音 我们有些人读he t 有些人读ha t 结果是读ha t 我也是读了20年的he t 因为有个weight是读we t的 所以想当然的以为
  • 对象和字符串之间的相互转换

    原文链接 对象和字符串之间的相互转换 编程屋 相关依赖
  • Python——12306图片验证码

    本次爬虫 我们来模拟一下12306的验证码验证 本次练习用到的模块 requests re base64 urllib3 第一步 按F12查看验证码图片的信息 提取URL https kyfw 12306 cn passport captc
  • 前端页面之间url传参

    function getUrlParam name var reg new RegExp name var r window location search substr 1 match reg ECMAScript v3 已从标准中删除了
  • 如何设置office2003为默认打开方式

    如何设置office2003为默认打开方式 当系统同时安装 office 2003和 office 2007 或2010 两个版本的 office办公软件的时候 双击打开一个office文档 Word Excel Powerpoint 默认
  • 【CV with Pytorch】第 10 章 :计算机视觉的可解释人工智能

    大多数机器学习和深度学习模型都缺乏解释和解释结果的方法 由于深度学习模型的动态特性和不断增加的最先进模型 当前的模型评估基于准确度分数 这使得机器学习和深度学习成为黑盒模型 这导致对应用模型缺乏信心 对生成的结果缺乏信任 有多个库可以帮助我
  • 刷题统计(蓝桥杯)

    刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天 做 a 道题目 周六和周日每天做 b 道题目 请你帮小明计算 按照计划他将在 第几天实现做题数大于等于 n 题 输入格式 输入一行包含三个整数 a b 和
  • 数据结构基础:2.顺序表。

    顺序表的介绍和实现 一 线性表 1 基本概念 二 顺序表 1 基本概念 分类 1 静态顺序表 分类 2 动态顺序表 2 动态顺序表的功能接口的实现 0 顺序表打印 1 初始化和删除 2 尾插尾删 3 头插头删 4 任意位置插入删除 5 查找
  • 面试题 01.08. 零矩阵

    难度中等 编写一种算法 若M N矩阵中某个元素为0 则将其所在的行与列清零 示例 1 输入 1 1 1 1 0 1 1 1 1 输出 1 0 1 0 0 0 1 0 1 示例 2 输入 0 1 2 0 3 4 5 2 1 3 1 5 输出
  • 并发编程相关面试题(持续更新)

    1 juc包提供了哪些工具 用在什么场景 1 提供了比 synchronized 更加高级的各种同步结构 包括 CountDownLatch CyclicBarrier Semaphore 等 场景 可以实现更加丰富的多线程操作 比如利用
  • TTL反相器、OC门、TS门、推挽输出、开漏输出

    TTL反相器 这是一个TTL反相器 这是经过了很多工程师多种设计最终沉淀出来的电路 这个电路是比较成熟的 我们只需要对这个电路进行解析即可 不需要再去研究当初是如何设计出来的 学过CMOS应该知道 右侧的输出级其实也是个推挽输出 因为长得像
  • 记录一次小问题!ssh脚本打包vue 执行 cnpm run build 无法继续向下走

    问题 ssh脚本打包vue 执行 cnpm run build 无法继续向下走 发现一直停留在 DONE Build complete The dist directory is ready to be deployed INFO Chec
  • JS内存泄漏排查

    定义 内存泄漏 应用程序不再需要的内存 由于某种原因 内存没有返回到操作系统或可用内存池中 原因 1 意外的全局变量 JS 在处理未声明的变量时 对未声明的变量的引用会在全局对象内创建一个新变量 这些全局变量是无法进行垃圾回收的 除非将它们
  • 东方财富四千余支股票2023年度上半年收盘价格走势涨跌可视化分析

    本文数据和图表内容仅供参考 数据仅供参考 数据仅供参考 数据仅供参考 如下是案例A300028的股票2023年收盘价走势及涨跌幅曲线 案例 A股300024 案例 600182走势图 走势分析图谱 原始结果已保存到压缩文件 通过python
  • Python+Selenium练习篇之18-自定义浏览器窗口大小

    本文来学习下如何通过Selenium方法 设置符合不同测试场景浏览器窗口大小 例如 你有一台机器 最大支持1366 768 你完全可以利用这个机器测试不同分辨率下的场景 相关测试脚本代码如下 coding utf 8 import time
  • 区块链技术的应用和数字资产,将会是未来不可阻挡的趋势和潮流

    前言 数字资产的发展 很可能是人类近千年金融史上又一次激动人心的变革 如果让你回到七年前重新选择一次投资机会的话 你可能会选择投资股票 然后坐等15年大牛市资产翻几倍 你也可能会投资房地产 然后坐等16年房地产爆发 资产翻番 但你万万想不到
  • javascript正则表达式学习

    REGEXP对象 javascript通过内置对象RegExp支持正则表达式 有两种方法实例化RegExp对象 1 字面量 var reg bis b var reg2 bis b g 正则规则放在 内 bv表示单词边界 g表示全文搜索 如
  • 树莓派作为客户端与WemosD1作为服务器的无线通信(局域网通信)

    参考 树莓派作为客户端与WemosD1作为服务器的无线通信 局域网通信 作者 图触靓 发布时间 2020 07 26 21 50 39 网址 https blog csdn net bhbhhyg article details 10759