使用 arduino 客户端/python 服务器通过以太网转储数据

2024-06-24

我正在使用 arduino 以太网从传感器读取数据,然后想将数据发送到另一栋建筑物中的计算机以驱动 python 软件中的逻辑/控制。我决定在 python/arduino 中绘制一个简单的草图,仅通过以太网将文本从 arduino 发送到我的 python 程序:

arduino客户端代码主要取自EthernetClient示例:

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x40, 0x9F};
byte ip[] = {192, 168, 0, 172};
byte server[] = {192,168,0,17};
int port = 1700;

EthernetClient client;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  Ethernet.begin(mac, ip);
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, port)) {
    Serial.println("connected.");
    //print text to the server
    client.println("This is a request from the client.");
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while(true);
  }
}

然后是我的Python代码:

import socket

host = ''
port = 1700
address = (host, port)

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((address))
server_socket.listen(5)

print "Listening for client . . ."

conn, address = server_socket.accept()

print "Connected to client at ", address

//pick a large output buffer size because i don't necessarily know how big the incoming packet is
output = conn.recv(2048);
print "Message received from client:"
print output

conn.send("This is a response from the server.")
conn.close()

print "Test message sent and connection closed."

服务器的响应是我所期望的:

Listening for client . . .
Connected to client at  ('192.168.0.172', 1025)
Message received from client:
This is a request from the client.
Test message sent and connection closed.

但客户收到:

connecting...
connected.
This
disconnecting.

并且似乎在流后停止从我的服务器接收文本。这是为什么?

另一个问题:为什么我要求我的arduino连接端口1700,但python声称它正在接收来自端口1025的请求?

thanks!


None

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

使用 arduino 客户端/python 服务器通过以太网转储数据 的相关文章

  • 嵌套生成器表达式 - 意外结果[重复]

    这个问题在这里已经有答案了 这是测试代码 units 1 2 tens 10 20 nums a b for a in units for b in tens units 3 4 tens 30 40 x for x in nums 假设第
  • Django 1.6:清除一张表中的数据

    我有一个名为 UGC 的表 想要清除该表中的所有数据 我不想重置整个应用程序 这也会删除所有其他模型中的所有数据 是否可以只清除一个模型 我还为我的应用程序配置了 South 如果这有帮助的话 你可以使用原始 SQL https docs
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • 查找数据集中的异常值

    我有一个 python 脚本 它创建服务器正常运行时间和性能数据列表的列表 其中每个子列表 或 行 包含特定集群的统计信息 例如 格式良好的它看起来像这样 Cluster Availability Requests Sec Errors S
  • 如何在redis中使用python删除排序集中的项目

    如何使用 python 删除排序集中大于某个值的项目 key foo pipe redis master conn pipeline pipe zadd key 1 a pipe zadd key 2 b pipe zadd key 3 c
  • 使用 cx_oracle 返回 MERGE 中受影响的行数

    如何在 CX Oracle 中执行 MERGE INTO sql 命令来获取受影响的行数 当我在cx oracle 上执行MERGE SQL 时 我得到的cursor rowcount 为 1 有没有办法获取受合并影响的行数 由于 cx o
  • python 函数 *args 和 **kwargs 以及其他指定的关键字参数

    我有一个 Python 类 它的方法应该以这种方式接受参数和关键字参数 class plot def init self x y self x x self y y def set axis self args xlabel x ylabe
  • 使用 Python 访问内存映射文件

    我希望利用激战 2 中的内存映射文件 该文件旨在链接到 Mumble 以获得位置音频 该文件包含有关字符坐标的信息和其他有用的信息 我已经能够使用此脚本访问坐标信息 import mmap import struct last while
  • 并行执行按位运算的代码

    我有这段代码 通过将该 AU 矩阵的每个字节 8 个元素打包到 A 中来减少内存消耗 从而使 100k 200k 矩阵占用更少的空间 正如您所期望的 这段代码需要永远运行 我也计划将行数增加到 200k 我正在一个非常强大的实例 CPU 和
  • 如果每个元组中的第二项重复,如何从元组列表中删除元素?

    如果每个元组中的第二项重复 如何从元组列表中删除元素 例如 我有一个按第一个元素排序的列表 如下所示 alist 0 7897897 this is a foo bar sentence 0 653234 this is a foo bar
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • 使用 pytherejs 嵌入小部件:错误的视角和相机观察

    我在用pythreejs可视化一些 3D 模型 在 Jupyter 笔记本上可视化模型时 一切都按预期进行 但是当尝试将小部件嵌入 HTML 文档时 我面临两个问题 看起来相机在加载时正在查看 0 0 0 而不是预期的那样 一旦您与小部件交
  • 如何为 PyYAML 编写代表程序?

    我想要一个自定义函数来序列化任意 python 对象 就像 json dump 函数有一个名为 default 的可选参数 如果对象不是 json 可序列化的 它应该是 json 转储器将调用的函数 我只是想从 json 包中执行相当于此操
  • [Python]比较两个 zip 文件的函数,一个位于 FTP 目录中,另一个位于我的本地计算机上

    我在创建比较两个 zip 文件的函数时遇到问题 如果它们相同 而不仅仅是名称相同 这是我的代码示例 def validate zip files self host 192 168 0 1 port 2323 username 123 pa
  • python 函数中的对象不可迭代错误

    我有一个简单的功能如下 comdList range 0 27 for t in comdList print t 但是它返回一个 in object not iterable 错误 在函数之外它工作正常 这是怎么回事 尝试这个 for t
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将
  • print() 函数的有趣/奇怪的机制

    我正在学习Python 我目前正在学习如何定义自己的函数 并且在尝试理解返回值和打印它之间的区别时遇到了一些困难 我读到的关于这个主题的描述对我来说不太清楚 所以我开始自己尝试 我想我现在已经明白了 如果我没记错的话 区别在于你可以传递 a
  • 如何限制单元测试的最大运行时间?

    我目前正在运行一些单元测试 这些测试可能需要很长时间才能失败或无限期地运行 在成功的测试运行中 它们总是会在一定的时间内完成 是否可以创建一个 pytest 单元测试 如果在一定时间内未完成 该测试就会失败 您可以安装 pytest tim

随机推荐

  • 如何从类型中省略属性?

    我对 Typescript 中的 Omit 类型有疑问 所以我知道 Omit 类型与Pick并且是这样构建的 type Omit
  • 与 jUnit 相比 TestNG 的缺点? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我熟悉 jUnit 并且听说 TestNG 可能是解决 jUnit 的一些烦恼的方法 例如它坚持为每个测试创建一个单独的测试类实例 从而迫使我对
  • ASP.NET MVC 使用自定义模型绑定程序时从客户端检测到潜在危险的 Request.Form 值

    在这里得到错误 ValueProviderResult value bindingContext ValueProvider GetValue ConfirmationMessage 如何仅允许选择值 IE ValidateInput fa
  • 将基于材质的对话框主题与 AppCompat 结合使用

    我的清单中有一项活动 我曾经使用对话框主题进行样式设置 我找不到如何替换它AppCompat图书馆
  • 如何在任何 MQ 平台上实现这个单一并发分布式队列?

    我目前正在努力寻找实现特定类型队列的解决方案 这需要以下特征 所有队列必须遵守作业添加的顺序 整个队列的并发度为1 这意味着每个队列一次只会执行一个作业queue 不是工人 像这样排队的人会超过几千人 它需要分布式并且能够扩展 例如 如果我
  • 开放、安全的 TCP 通道的安全期限有多长?

    我们有一个网络服务 充当我们的客户和其他服务之间的网关 客户端向第三方服务发送消息并从第三方服务接收随机消息 客户端的服务器通过安全套接字打开到我们的 Web 服务器的通道 以便接收传入的消息 并且不必每隔几分钟轮询一次服务器 我的问题是
  • 在Firestore中管理createdAt时间戳

    每天我都会将产品从外部零售商进口到谷歌云Firestore https firebase google com docs firestore 数据库 在此过程中 产品可以是新的 新文档将添加到数据库中 或现有的 现有文档将在数据库中更新 应
  • 现代无窗弹出窗口

    我已经看到一段时间没有窗口的弹出窗口 它看起来像一个定制的 png 文件作为弹出窗口 很多时候右上角有一个大的近十字 有人可以告诉我这是如何调用的以及它是用什么样的代码编写的吗 在 JavaScript 中实现弹出窗口的方法有很多 现在大多
  • 在 Mac 上使用 Homebrew 安装 PHP

    我正在尝试使用 Homebrew 在我的 Mac 计算机上安装 PHP 我正在使用以下命令 brew install php 但是 我收到以下错误 Error No available formula with the name php g
  • SQL Server:如何从递归函数内执行更新?

    我有一个递归标量函数 需要根据它返回的值更新另一个表中的记录 但是函数中不允许使用 UPDATE 语句 如何从函数内更新表 不允许使用 UPDATE 语句 功能 这就是规则 函数不允许有任何数据更改的副作用 您必须使用存储过程来UPDATE
  • 如何使用康康康舞?

    我想向我的 Rails 应用程序中的用户授予权限 我有 管理员 可以创建 更新和删除所有帖子和评论 用户 只能创建和更新自己的评论 访客 则不能执行这些操作 为此 我使用宝石 devise 和 cancancan 我理解 devise 宝石
  • 无法在 Java 中反序列化来自 C++ 的 protobuf 数据

    我的问题是在 C 中序列化 protobuf 数据并可能在 Java 中反序列化数据 这是我根据 dcn 给出的提示使用的代码 这样 我用 C 创建了 protobuf 数据并将其写入通过套接字发送的 ostream Name name n
  • 如何使Emacs C源目录永久化?

    我是 Emacs 新手 刚刚学习如何使用它 我知道如何设置 Emacs C Source dir 但我不知道如何使此更改永久生效 我想我必须在 emacs 文件中设置它 但我不知道它的命令是什么 有人可以帮忙吗 通常 大多数用户可设置的变量
  • GoogleVis 图表未在 Rmarkdown 中呈现

    在 Rmarkdown 之外 独立的 googleVis 图表工作正常 但是当我将其插入 Rmarkdown 文件时 我只收到 Rmarkdown 代码 查看器输出 gt TEST H 4 13 2016 require googleVis
  • 设置捆绑包中组的标题页脚

    How can I leave a message under group type in Setting bundle something like this 它记录在这里 https developer apple com librar
  • Google Visualization 无法与 appscript html 服务配合使用

    我想将 appscript htmlservice 与 appscript 一起使用 html 服务似乎可以工作 但可视化不起作用 这是供参考的代码 代码 GS Script as app template function doGet r
  • readdir() 是否保证顺序?

    我正在使用 opendir readdir 获取类 linux 系统上的文件列表 看起来目录条目是按文件名的字母顺序返回的 但是 我在手册页中没有看到任何有关此顺序的保证 谁能告诉我 readdir 是否保证订单 The readdir方法
  • Ajax GET 请求:使用参数还是将数据放入 URL?

    在 Ajax GET 请求中将数据作为参数传递与作为 URL 的一部分传递相比有何优势 使用参数 var ajax new Ajax Request server php parameters store 11200 product Mea
  • SQL Server 2008-获取表约束

    你能帮我构建一个查询 检索所有表中的约束 每个表中的约束计数 并显示NULL对于没有任何约束的表 这是我到目前为止所拥有的 Select SysObjects Name As Constraint Name Tab Name as Tabl
  • 使用 arduino 客户端/python 服务器通过以太网转储数据

    我正在使用 arduino 以太网从传感器读取数据 然后想将数据发送到另一栋建筑物中的计算机以驱动 python 软件中的逻辑 控制 我决定在 python arduino 中绘制一个简单的草图 仅通过以太网将文本从 arduino 发送到