学前班
最后登录1970-1-1
在线时间 小时
注册时间2019-3-5
|
测试环境:野火指南者开发板,http_client例程
应用场景描述:在http_client例程的基础上修改代码,设置了一个串口中断,当串口中断发生时,标志位置1。在主函数的while循环里,有do_http_client函数,函数内容如下所示(加粗红色部分为修改部分)
void do_http_client(void)
{
uint8 ch=SOCK_HUMTEM;
uint16 anyport=3000;
uint8 buffer[119]={0};
uint8_t j=0;
switch(getSn_SR(ch))
{
case SOCK_INIT:
connect(ch, yeelink_server_ip ,yeelink_port);
break;
case SOCK_ESTABLISHED:
if(getSn_IR(ch) & Sn_IR_CON)
{
setSn_IR(ch, Sn_IR_CON);
}
if(flag==1)
{
flag=0;
i=0;
memcpy(buffer,head,strlen(head));
for(j=0;j<79;j++)
{
buffer[36+j]=data[j];
}
if(data[0]==0x77&&data[4]==0x4C&&data[8]==0x61)
{
if(data[78]==0x30)
{
open1(); //继电器操作
}
if(data[78]==0x31)
{
open2(); //继电器操作
}
send(ch,(const uint8 *)buffer,sizeof(buffer));
}
}
break;
case SOCK_CLOSE_WAIT:
close(ch);
break;
case SOCK_CLOSED:
socket(ch, Sn_MR_TCP,anyport++ , 0x00);
break;
default:
break;
}
}
问题描述:代码烧录后,每次串口中断后,以太网模块都可以将串口接收到的数据发送到服务器端,并且对继电器进行相应的操作。工作一段时间后,发生串口中断后,服务器没有收到数据并且继电器没有进行对应操作,按下RESET按钮进行复位后,又可以正常工作一段时间。
|
|