教你如何通过MCU配置S2E为TCP Client的工作模式

串口转以太网, 博客, 物聯網
在上两篇文章中分别讲述了通过MCU配置S2E为UDP、TCP Server的工作模式”,相信小伙伴们已经对S2E的基本功能了解了一些,现在就让我们再接再厉、更上一层楼吧: 首先我们先了解一下MCU与S2E的接线方式:   1、接线方式: 2、例程说明: 打开“通过MCU配置S2E为TCP Client例程”,主程序中第一部分TIM3_Init();是设定一个帧中断的时间定时器,这是因为该例程MCU的串口是通过帧中断来接收AT命令配置S2E后返回的数据的。 第二部分USARTX_Init();初始化MCU用到的串口,这里用USART1_Config();是printf功能,用于查看调试信息。USART2_Config();用于配置S2E,需要注意的是该串口的配置参数需要同S2E的串口配置参数一致,否则配置失败。 第三部分主循环中的TCP_Client_Mode();用于配置S2E为TCP Client模式。S2E的AT命令列表详见各个S2E型号的用户手册AT命令章节介绍。配置成功,串口打印“TCP Client Config Success!”,配置失败串口打印“TCP Client Config Fail!”。 01 /**************************************************** 02 函数名:TCP_Client_Mode 03 形参:无 04 返回值:无 05 函数功能:通过串口发送AT命令配置S2E模块 06 ****************************************************/ 07 volatile uint8_t SendFlag=0; 08 09 void TCP_Client_Mode(void) 10 { 11     uint8_t RecvFlag=1; 12     char *state; 13     switch (SendFlag) { 14     case 0: { 15         Usart_Send(USART2,"AT\r\n");                                                                 //终端检测命令 16         while (RecvFlag) { 17             if (RX2_Point & FRAME_LEN) { 18                 //如果接收到数据 19                 state=strstr((char *)RecvBuff,"OK"); 20                       //判断回复的数据中是否有“OK” 21                 if (state!=NULL) {                                                                                            //有 22                     RX2_Point=0; 23                               //接收缓冲区指针置零 24                     RecvFlag=0; 25                              //接收标致位置零 26                     SendFlag=1;                                                                                                //发送标志位置零 27                     printf("Recv:%s\r\n",RecvBuff); 28                     memset(RecvBuff,0,RECV_LEN); 29                            //接收缓存清零 30                 } else {                                                                                                                            //无 31                     SendFlag=100;                                                                                              //配置失败 32                     RecvFlag=0; 33                 } 34             } 35         } 36     } 37     break; 38     case 1: { 39         Usart_Send(USART2,"AT+ECHO=0\r\n"); 40                    //开启(1)/关闭(0)回显命令 41         RecvFlag=1;…
Read More

教你如何通过MCU配置S2E为TCP Server的工作模式

串口转以太网, 博客, 物聯網
在上一篇文章中讲了“如何通过MCU配置S2E为UDP模式”,相信小伙伴们已经了解了S2E的基本功能,在这一篇中,我们再接再厉,继续学习一下“如何通过MCU配置S2E为TCP Server的工作模式”,无论是配置UDP模式还是配置TCP模式,都是通过串口转以太网的方式实现的: 1、接线方式 2、例程说明 打开“通过MCU配置S2E为TCP Server例程”,主程序中第一部分TIM3_Init();是设定一个帧中断的时间定时器,这是因为该例程MCU的串口是通过帧中断来接收AT命令配置S2E后返回的数据的。 第二部分USARTX_Init();初始化MCU用到的串口,这里用USART1_Config();是printf功能,用于查看调试信息。USART2_Config();用于配置S2E,需要注意的是该串口的配置参数需要同S2E的串口配置参数一致,否则配置失败。 第三部分主循环中的TCP_Server_Mode();用于配置S2E为TCP Server模式。S2E的AT命令列表详见各个S2E型号的用户手册AT命令章节介绍。配置成功,串口打印“TCP Server Config Success!”,配置失败串口打印“TCP Server Config Fail!”。 1 /**************************************************** 2 函数名:    TCP_Server_Mode 3 形参:     无 4 返回值:    无 5 函数功能: 通过串口发送AT命令配置S2E模块 6 ****************************************************/ 7 volatile uint8_t SendFlag=0; 8 9 void TCP_Server_Mode(void) 10 { 11     uint8_t RecvFlag=1; 12     char *state; 13 14     switch (SendFlag) { 15     case 0: { 16         Usart_Send(USART2,"AT\r\n"); 17                    //终端检测命令 18         while (RecvFlag) { 19             if (RX2_Point & FRAME_LEN) { 20                 //如果接收到数据 21                 state=strstr((char *)RecvBuff,"OK"); 22                       //判断回复的数据中是否有“OK” 23                 if (state!=NULL) { 24                     //有 25                     RX2_Point=0; 26                               //接收缓冲区指针置零 27                     RecvFlag=0; 28                              //接收标致位置零 29                     SendFlag=1; 30                              //发送标志位置零 31                     printf("Recv:%s\r\n",RecvBuff); 32                     memset(RecvBuff,0,RECV_LEN); 33                            //接收缓存清零 34                 } else {                                      //无 35                     SendFlag=100; 36                              //配置失败 37                     RecvFlag=0; 38                 } 39             } 40         } 41     } 42     break; 43     case 1: { 44         Usart_Send(USART2,"AT+ECHO=0\r\n"); 45                    //开启(1)/关闭(0)回显命令…
Read More