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

来源:互联网 发布:时时彩遗漏数据软件 编辑:程序博客网 时间:2024/06/05 10:49
在上一篇文章中讲了“如何通过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)回显命令
46 RecvFlag=1;
47 while (RecvFlag) {
48 if (RX2_Point & FRAME_LEN) { //如果接收到数据
49 state=strstr((char *)RecvBuff,"OK");
50 if (state!=NULL) {
51 RX2_Point=0;
52 RecvFlag=0;
53 SendFlag=2;
54 printf("Recv:%s\r\n",RecvBuff);
55 memset(RecvBuff,0,RECV_LEN);
56 } else {
57 SendFlag=100;
58 RecvFlag=0;
59 }
60 }
61 }
62 }
63 break;
64 case 2: {
65 Usart_Send(USART2,"AT+C1_OP=0\r\n");//配置为TCP
66 Server模式命令
67 RecvFlag=1;
68 while (RecvFlag) {
69 if (RX2_Point & FRAME_LEN) { //如果接收到数据
70 state=strstr((char *)RecvBuff,"OK");
71 if (state!=NULL) {
72 RX2_Point=0;
73 RecvFlag=0;
74 SendFlag=3; //状态标志位置零
75 printf("Recv:%s\r\n",RecvBuff);
76 memset(RecvBuff,0,RECV_LEN);
77 } else {
78 SendFlag=100;
79 RecvFlag=0;
80 }
81 }
82 }
83 }
84 break;
85 case 3: {
86 Usart_Send(USART2,"AT+IP_MODE=0\r\n");
87 //配置为静态IP模式
88 RecvFlag=1;
89 while (RecvFlag) {
90 if (RX2_Point & FRAME_LEN) { //如果接收到数据
91 state=strstr((char *)RecvBuff,"OK");
92 if (state!=NULL) {
93 RX2_Point=0;
94 RecvFlag=0;
95 SendFlag=4; //状态标志位置零
96 printf("Recv:%s\r\n",RecvBuff);
97 memset(RecvBuff,0,RECV_LEN);
98 } else {
99 SendFlag=100;
100 RecvFlag=0;
101 }
102 }
103 }
104 }
105 break;
106 case 4: {
107 Usart_Send(USART2,"AT+IP=192.168.1.88\r\n"); //配置本地IP
108 RecvFlag=1;
109 while (RecvFlag) {
110 if (RX2_Point & FRAME_LEN) { //如果接收到数据
111 state=strstr((char *)RecvBuff,"OK");
112 if (state!=NULL) {
113 RX2_Point=0;
114 RecvFlag=0;
115 SendFlag=5; //状态标志位置零
116 printf("Recv:%s\r\n",RecvBuff);
117 memset(RecvBuff,0,RECV_LEN);
118 } else {
119 SendFlag=100;
120 RecvFlag=0;
121 }
122 }
123 }
124 }
125 break;
126 case 5: {
127 Usart_Send(USART2,"AT+MARK=255.255.255.0\r\n");
128 //配置本地IP
129 RecvFlag=1;
130 while (RecvFlag) {
131 if (RX2_Point & FRAME_LEN) { //如果接收到数据
132 state=strstr((char *)RecvBuff,"OK");
133 if (state!=NULL) {
134 RX2_Point=0;
135 RecvFlag=0;
136 SendFlag=6; //状态标志位置零
137 printf("Recv:%s\r\n",RecvBuff);
138 memset(RecvBuff,0,RECV_LEN);
139 } else {
140 SendFlag=100;
141 RecvFlag=0;
142 }
143 }
144 }
145 }
146 break;
147 case 6: {
148 Usart_Send(USART2,"AT+GATEWAY=192.168.1.1\r\n");
149 //配置本地IP
150 RecvFlag=1;
151 while (RecvFlag) {
152 if (RX2_Point & FRAME_LEN) { //如果接收到数据
153 state=strstr((char *)RecvBuff,"OK");
154 if (state!=NULL) {
155 RX2_Point=0;
156 RecvFlag=0;
157 SendFlag=7; //状态标志位置零
158 printf("Recv:%s\r\n",RecvBuff);
159 memset(RecvBuff,0,RECV_LEN);
160 } else {
161 SendFlag=100;
162 RecvFlag=0;
163 }
164 }
165 }
166 }
167 break;
168 case 7: {
169 Usart_Send(USART2,"AT+C1_PORT=5000\r\n");
170 //配置本地端口号
171 RecvFlag=1;
172 while (RecvFlag) {
173 if (RX2_Point & FRAME_LEN) { //如果接收到数据
174 state=strstr((char *)RecvBuff,"OK");
175 if (state!=NULL) {
176 RX2_Point=0;
177 RecvFlag=0;
178 SendFlag=8; //状态标志位置零
179 printf("Recv:%s\r\n",RecvBuff);
180 memset(RecvBuff,0,RECV_LEN);
181 } else {
182 SendFlag=100;
183 RecvFlag=0;
184 }
185 }
186 }
187 }
188 break;
189 case 8: {
190 Usart_Send(USART2,"AT+START_MODE=0\r\n");
191 //配置启动模式(0--AT模式,1--
192 数据模式)
193 RecvFlag=1;
194 while (RecvFlag) {
195 if (RX2_Point & FRAME_LEN) { //如果接收到数据
196 state=strstr((char *)RecvBuff,"OK");
197 if (state!=NULL) {
198 RX2_Point=0;
199 RecvFlag=0;
200 SendFlag=9; //状态标志位置零
201 printf("Recv:%s\r\n",RecvBuff);
202 memset(RecvBuff,0,RECV_LEN);
203 } else {
204 SendFlag=100;
205 RecvFlag=0;
206 }
207 }
208 }
209 }
210 break;
211 case 9: {
212 Usart_Send(USART2,"AT+EXIT\r\n");
213 //保存配置并进入数据模式
214 RecvFlag=1;
215 while (RecvFlag) {
216 if (RX2_Point & FRAME_LEN) { //如果接收到数据
217 state=strstr((char *)RecvBuff,"OK");
218 if (state!=NULL) {
219 RX2_Point=0;
220 RecvFlag=0;
221 SendFlag=99; //状态标志位置零
222 printf("Recv:%s\r\n",RecvBuff);
223 memset(RecvBuff,0,RECV_LEN);
224 } else {
225 SendFlag=100;
226 RecvFlag=0;
227 }
228 }
229 }
230 }
231 break;
232 case 99: {
233 printf("TCP Server Config Success!\r\n");
234 Config_OK=1;
235 }
236 default:
237 RecvFlag=100;
238 break;
239 case 100: {
240 printf("TCP Server Config Fail!\r\n");
241 Config_OK=1;
242 }
243 break;
244 }
245 }
246 


W5500S2E-S1是一款工业级串口转以太网模块,支持多种波特率,从1.2Kbps至1.152Mbps。采用了WIZnet公司的硬件TCP/IP协议以太网芯片W5500。这是更快、更稳定、更安全的以太网解决方案。


在下一篇“教你如何通过MCU将S2E配置为TCP Client的工作模式”中,我将继续与大家分享WIZnet W5500S2E-S1的功能,请大家敬请期待吧!

WIZnet官方网站:http://www.iwiznet.cn/


WIZnet官方技术服务QQ群:595547972


更多物联网应用,关注WIZnet官方微信号:





阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 女人的快乐器 快乐器图片 快乐器女士用图片图片 快乐器男士用图片动态 性快乐器 男人的快乐器 女人快活器 成人快乐器 男式快乐器 猪鬃快乐器 女快乐器 男用快乐器价格 男快乐器图片 无线快乐器 震动按摩器 女用夫妻性快活器 快乐狗 快乐购hbp 假如你不够快乐 300413股票 快乐一天作文 快乐一天 快乐的一天作文 快乐的一天日记 快乐一天日记 快乐的一天作文300字 快乐的一天作文400字左右 快乐的一天作文300字三年级 快乐一天作文300字 邢台123健康快乐每一天 开心快乐每一天 作文快乐的一天 快乐的一天作文400字 快乐的一天150个字 快乐的一天150字 快乐的一天作文200字 快乐每一天 开心快乐每一天图片 快乐的一天作文200 快乐天 快乐的一天300字