如何用smartconfig建立TCP-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3497|回复: 5

如何用smartconfig建立TCP

[复制链接]
发表于 2018-10-8 15:52 | 显示全部楼层 |阅读模式
想问一下,我现在找到相关arduino程序可以用smartconfig可以练到WiFi,但如果想要想要建立tcp透传模式连接传输数据,该怎么搞?
发表于 2018-10-8 16:33 | 显示全部楼层
SmartConfig有时候其实挺麻烦的,不是所有的场合都合适,这时候还不如刷个带WEB配置的透传固件;
想省事你还可以试试我开发的这两款(帮自己宣传,嘻嘻
ESP32:   https://www.arduino.cn/thread-82090-1-1.html
ESP8266: https://www.arduino.cn/thread-81941-1-1.html
发表于 2018-10-8 16:29 | 显示全部楼层
透传其实就是 WIFI收到的数据直接写回串口,串口收到的收据直接从WIFI发出去;

如果你要使用TCP方式进行连接,除了连接到WIFI外,还需要建立TCP连接:
第一步:TCP连接有两种方式,一种是自己是SERVER,客户端连接你;另一种是你是CLIENT,去连接服务器;
以自己为CLIENT方式为例讲解一下:

bool connectedToServer;
WiFiClient tcpClient;

tcpClient.connect("192.168.1.1",8888);  //第一个参数是服务器IP(String),第二个参数是端口号(int)
delay(1000);

        if (!connectedToServer)  //循例打印一下连接状态信息,帮助排错
        {
                Serial.println(F("Connection failed!"));
                return;
        }
        if (connectedToServer)
        {
                tcpClient.keepAlive();
                Serial.println(F("Connection OK"));
        }

以上,就连接好TCP的服务器了,当然,前提是你的服务器已经开启;
然后,你要实现透传,就要在LOOP中做一些数据读取和写入的代码:

void loop()
{
              //扫描串口数据
                if (Serial.available())
                {
                        delay(50); //待缓冲区稳定
                        size_t len = Serial.available();
                        uint8_t *sbuf = NULL;
                        sbuf = (uint8_t*)malloc(sizeof(uint8_t) * len);
                        Serial.readBytes(sbuf, len);
                        if (tcpClient.connected())
                        {
                                tcpClient.write(sbuf, len);
                        }
                        if (NULL != sbuf)
                        {
                                free(sbuf);
                                sbuf = NULL;
                        }
                }

                //扫描网络数据,传回串口中
                if (tcpClient.available())
                {
                        while (tcpClient.available())
                        {
                                Serial.write(tcpClient.read());
                        }
                }
                delay(1);
}

这样就可以了,当然详细你就要自己动手实践一下。
 楼主| 发表于 2018-10-9 13:37 | 显示全部楼层
JamieChu 发表于 2018-10-8 16:33
SmartConfig有时候其实挺麻烦的,不是所有的场合都合适,这时候还不如刷个带WEB配置的透传固件;
想省事你 ...

嗯嗯,谢谢啦,主要是现在只学习到esp8266的arduino程序编写,固件开发还要继续学习,我也只知道一个smartconfig可以配置网络。我就想要实现可以在手机或者web上可以配置网络,并且通过透传传输数据的功能,现在有方向了,开发固件可以实现这个功能,哈哈!:)
发表于 2019-1-24 07:26 | 显示全部楼层
JamieChu 发表于 2018-10-8 16:33
SmartConfig有时候其实挺麻烦的,不是所有的场合都合适,这时候还不如刷个带WEB配置的透传固件;
想省事你 ...

终于发现了传说中的大神
发表于 2019-3-29 11:31 | 显示全部楼层
JamieChu 发表于 2018-10-8 16:29
透传其实就是 WIFI收到的数据直接写回串口,串口收到的收据直接从WIFI发出去;

如果你要使用TCP方式进行连 ...

程序为什么运行出错,求解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:34 , Processed in 0.179281 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表