完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我取得了以下成就:
我有一个 Teensey-Ultimate GPS sheild-esp8266 设置。我正在尝试使用 TCP 将存储在 SD 卡中的 1Mb 文件发送到本地 python 服务器。我能够发送文件,但问题是它正在占用4 分钟发送 1Mb 文件,而当我从一个发送时,同一个文件Python 客户端脚本需要 5 秒。 数据传输缓慢的原因是什么?有没有办法提高速度。Arduino和Python环境有任何问题吗? 以下是我的Arduino和Python草图: #include //------------------------------------------------------ #include //#include #define TIMEOUT 5000 // mS #define LED 13 #include SDF标准差; SdFile myFile; const int chipSelect = SS; //--------------------------------------------------------------------------- #define DEBUG true void setup() 无效设置() { Serial.begin(115200); Serial1.begin(2000000); Serial1.attachCts(20); delay(1000); Serial.println("Initializing SD card..."); if (!sd.begin(chipSelect, SPI_FULL_SPEED)) sd.initErrorHalt(); delay(1000); Serial.println("Card Initialized"); //AT+UART_DEF=2000000,8,1,0,1....use this command to set BAUD RATE sendData("ATrn",2000,DEBUG): sendData("AT+CIFSRrn",2000,DEBUG); // get ip address sendData("AT+CIPMUX=0rn",1000,DEBUG); // configure for multiple connections sendData("AT+CIPMODE=1rn",1000,DEBUG); sendData2("AT+CIPSTART="TCP","192.168.0.119",80",2000); ----------------查找导入字符串-------------------- //Serial.print("ENTER STRING:"); String IncomingString=""; 布尔值 StringReady = false; 延迟(2000); StringReady= 真; 如果 (StringReady){ //----------------READ FILE IF FOUND IMPORT STRING-------------------- if (!myFile.open("DATA3.TXT", O_READ)) { sd.errorHalt("opening test.txt for read failed"); } millisStartTime = millis(); sendData2("rn",1000); sendData2("AT+CIPSENDrn",2000); while(myFile.available()) { Serial1.print(myFile.read()); } sendData2("rn",500); sendData2("+++",1000); sendData("AT+CIPCLOSE=1rn",1000,DEBUG); myFile.close(); } } void loop() { } String sendData(String command, const int timeout, boolean debug) { String response = ""; Serial1.print(command); long int time = millis(); while( (time+timeout) > millis()) { while(Serial1.available()) { char c = Serial1.read(); // read the next character. response+=c; } } if(debug) { Serial.print(response); } return response; } String sendData2(String command, const int timeout) { String response = ""; Serial1.print(command); long int time = millis(); while( (time+timeout) > millis()) { while(Serial1.available()) { char c = Serial1.read(); // read the next character. response+=c; } } Serial.print(response); return response; } import socket # Import socket module 导入时间 s = socket.socket() # Create a socket object 主机 = '192.168.0.119' port = 80 # Reserve a port for your service. s.bind((host, port)) # Bind to the port f = 开('Got_File.txt','WB') s.listen(5) # Now wait for client connection. 而 True: c, addr = s.accept() # Establish connection with client. print ('Got connection from', addr) start_time = time.time() print ("Receiving Data from Client...") l = c.recv(1024) while (l): print ("Receiving...") f.write(l) #print (l) l = c.recv(1024) f.close() #s.shutdown(socket.SHUT_WR) print ("Done Receiving") print("--- %s seconds ---" % (time.time() - start_time)) #c.send('Thank you for connecting') c.close() |
|
相关推荐
1个回答
|
|
从您的描述来看,您正在使用 ESP8266 通过 TCP 将一个 1MB 的文件发送到本地 Python 服务器,但传输速度非常慢。有几个可能的原因导致这种情况:
1. **网络环境**:如果您的网络环境不稳定或者带宽有限,这可能会影响数据传输速度。 2. **ESP8266 的性能**:ESP8266 是一款低成本的 Wi-Fi 模块,其处理速度和内存有限。在处理大量数据时,可能会导致传输速度变慢。 3. **SD 卡的读写速度**:SD 卡的读写速度可能会影响文件的传输速度。如果您使用的是低速 SD 卡,可能会导致传输速度变慢。 4. **TCP 协议的特性**:TCP 协议本身是一个面向连接的、可靠的、基于字节流的传输层通信协议。在某些情况下,TCP 的可靠性和连接性可能会导致传输速度变慢。 为了提高传输速度,您可以尝试以下方法: 1. **优化网络环境**:确保您的网络环境稳定且带宽足够。 2. **使用更高性能的 Wi-Fi 模块**:如果您的预算允许,可以考虑使用更高性能的 Wi-Fi 模块,如 ESP32。 3. **优化 SD 卡读写速度**:使用高速 SD 卡,以提高文件的读写速度。 4. **调整 TCP 窗口大小**:尝试调整 TCP 窗口大小,以提高传输效率。但请注意,这可能会影响 TCP 的可靠性。 5. **使用 UDP 协议**:如果您的应用程序可以容忍一定程度的数据丢失,可以考虑使用 UDP 协议进行数据传输。UDP 协议相对于 TCP 协议具有更高的传输速度,但可靠性较低。 6. **优化代码**:检查您的 Arduino 和 Python 代码,看看是否有可以优化的地方,以提高传输效率。 请注意,这些方法可能会对您的应用程序的可靠性和稳定性产生影响。在实际应用中,请根据您的具体需求进行权衡。 |
|
|
|
只有小组成员才能发言,加入小组>>
368浏览 6评论
304浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
291浏览 5评论
297浏览 4评论
277浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-27 20:35 , Processed in 0.731039 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191