16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)

http://www.javashuo.com/article/p-qjlgczuc-cs.htmlhtml

 

其实官方给的RTOS的版本就是在原先非RTOS版本上增长的数组

http://www.javashuo.com/article/p-pqaiacod-bu.html    后面的TCP,UDP基本的配置也就是像AT这样,只不过咱是用SDK开发服务器

配置一下WIFI的工做模式  无线名称网络

 

 

 

 

 

 

 

    wifi_set_opmode(STATIONAP_MODE);//配置WiFi的模式STATION + AP AP--链接WIFI自身的无线实现通讯  STATION--wifi链接路由器,手机或者电脑也链接路由器,实现通讯
    soft_ap_Config.ssid_len = strlen(SSID);//热点名称长度,与你实际的名称长度一致就好

    memcpy(soft_ap_Config.ssid,SSID,soft_ap_Config.ssid_len);//实际热点名称设置,能够根据你的须要来
    memcpy(soft_ap_Config.password,PWD,strlen(PWD));//热点密码设置
    soft_ap_Config.authmode = AUTH_WPA2_PSK;//加密模式
    soft_ap_Config.channel = 1;//信道,共支持1~13个信道
    soft_ap_Config.max_connection = 4;//最大链接数量,最大支持四个,默认四个

    wifi_softap_set_config_current(&soft_ap_Config);//设置 Wi-Fi SoftAP 接口配置,不保存到 Flash
    //    wifi_softap_set_config(&soft_ap_Config);//设置 Wi-Fi SoftAP 接口配置,保存到 Flash

 

下载进去tcp

       

 

 

接着作TCP 服务器函数

其实就是参考这个文档测试

 

 

 

 

 

其实说一下...官方其实给例子了...就是那个不带SDK的1.5版本的加密

 

 

 

 

 

 若是不明白为何是http可是用的TCP  https://www.cnblogs.com/yangfengwu/category/1383497.html    看头几节spa

 

因此我就不班门弄斧了.......直接拷贝,而后写上注释.net

 

 

 

 

 

 

 

 

//接收到数据
void TcpServerRecv(void *arg, char *pusrdata, unsigned short length)
{
    while(length--)
    {
        USART_SendData(UART0, *(pusrdata++));//接收的数据发给串口
    }
}

//断开
void TcpServerDisCon(void *arg)
{
    struct espconn *pesp_conn = arg;

    os_printf("TCP Client %d.%d.%d.%d:%d disconnect\n", pesp_conn->proto.tcp->remote_ip[0],
                pesp_conn->proto.tcp->remote_ip[1],pesp_conn->proto.tcp->remote_ip[2],
                pesp_conn->proto.tcp->remote_ip[3],pesp_conn->proto.tcp->remote_port);
}

//程序启动了监听
void TcpServerListen(void *arg)
{
    struct espconn *pesp_conn = arg;//接收传过来的 espconn 信息

    espconn_regist_recvcb(pesp_conn, TcpServerRecv);//设置接收回调
    espconn_regist_disconcb(pesp_conn, TcpServerDisCon);//设置断开链接回调
}

 

 

 完成了上面就是WIFI监听8888端口 ,客户端链接上之后发送的数据直接转发到串口

模块默认是192.168.4.1

测试

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

好如今咱再进一步  作成透传的   再让WIFI串口接收的数据发给网络

https://blog.csdn.net/u010333084/article/details/51336886

 

上一节咱用任务处理的串口数据,此次咱用回调实现,,这样处理起来快

 

 

 

 

 

 

 

 

 

 

 

 

测试

 

 注意哈,这样作实际上就是那个函数在中断函数里面运行了....切记函数里面别加延时

好如今把串口接收的数据转发给网络

 

由于发送须要

 

 因此咱定义一个全局的这个变量

思路是这个变量在监听到链接,断开和网络接收到数据里面赋值

若是只放到网络接收到数据里面赋值..那么若是客户端链接了,它不先给咱发数据,咱就不能发给他,由于变量没有赋值

不过如今这样有个问题是  最后链接的或者最后给我发的数据的TCP客户端,我下次的数据会发给它

你们能够再作个数组哈,,把这个所有保存下来,,本身扩展下哈

提示哈,,作四个数组就能够,,循环判断若是哪一个在链接状态就发送

 

 

 

测试

 

 

 

 

 

 

 

 

 若是再把这里的发送改成直接用数组复制给串口发送缓冲区(只调用一句话),就完美了

 

 本身开动大脑想办法吧

 

 

 

http://www.javashuo.com/article/p-rrxsaeiu-x.html

相关文章
相关标签/搜索