完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在写一个草图来将 TCP 连接数据转发到串行端口,反之亦然。简单的代码可以完美运行,但我实现的速度大大低于我的预期。所以我想我会尝试回应我发送的内容以查看问题出在哪里:
代码:全选#include #include "settings.h" #define PORT 9001 WiFiServer server(PORT); WiFiClient client; void setup() { Serial.begin(115200); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(200); } server.begin(); } void loop() { client = server.available(); while(client.connected()) { while(client.available()){ client.write(client.read()); } } } 现在,它连接到我的 WiFi,我正在使用套接字通过 Python 连接到它。但是,我连接的方式并不重要。 因此,在测试 Python 代码中,我发送了 32 个字节并等待返回 32 个字节(因为草图正在回显数据)。我每秒只能处理大约 22 个数据包。这意味着从发送数据到接收数据的延迟大约为 50 毫秒 - 方式,比我对同一 IP 执行 ping 操作时(ping 显示 1 毫秒)要长得多。这里有什么慢? 我对此很陌生。 如果有人想尝试运行它,这是草图的 settings.h: 代码:全选#define WIFI_SSID "" #define WIFI_PASSWORD "" 我在我的电脑上运行的 Python 代码: 代码:全选import time from collections import deque import struct import socket server_config = { 'host': '', # set your IP 'port': 9001, 'timeout': None, 'connect_timeout': 2, } s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(server_config['connect_timeout']) print('connecting to ', server_config) s.connect((server_config['host'], server_config['port'])) s.setblocking(True) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, True) # Send immediately if blocking s.settimeout(None) connection = s.makefile('rwb', 0) q = deque([], 20) while True: t = time.time() connection.write(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r\n') data = connection.readline() t = time.time() - t q.append(t) print(f'{1/(sum(q)/len(q)):.3f}') print(data) |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1042 浏览 1 评论
562浏览 6评论
470浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
456浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 11:18 , Processed in 0.867199 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号