嵌入式系统是云服务器,一步步教你使用云端服务器yeelink远程监控

ADC_Init();                                                        //        ADC初始化

LPC_GPIO2->FIODIR  = 0x000000ff;    //        LED配置

LPC_GPIO0->FIODIR  = 0x00200000;

LPC_GPIO0->FIOPIN |= 0x00200000;

while(1)

{

tcpclient("42.96.164.52",80 ,1);                //AD转换值上传

tcpclient("42.96.164.52",80 ,2);                //获取LED状态并改变开发板LED状态

rt_thread_delay(RT_TICK_PER_SECOND * 4);        //延时4s

}

//TCP客户端实验

int tcpclient(const char* url, int port,int num)

{

char *recv_data;

struct hostent *host;

int sock, bytes_received;

struct sockaddr_in server_addr;

int        Buf = 0;

/* 通过函数入口参数url获得host地址(如果是域名,会做域名解析) */

host = gethostbyname(url);

/* 分配用于存放接收数据的缓冲 */

recv_data = rt_malloc(BUFSZ);

if (recv_data == RT_NULL)

{

rt_kprintf("No memory\n");

return;

}

/* 创建一个socket,类型是SOCKET_STREAM,TCP类型 */

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

/* 创建socket失败 */

rt_kprintf("Socket error\n");

/* 释放接收缓冲 */

rt_free(recv_data);

return 1;

}

if(num == 1)                /

{

Buf   = ADC_Get();

Buf = (Buf * 3300)/4096;

INT_CHAR(Buf);

send_data1[234] = dis[0];                //更改上传数据内容即AD值

send_data1[234+1] = '.';

send_data1[234+2] = dis[0+1];

send_data1[234+3] = dis[0+2];

}

/* 初始化预连接的服务端地址 */

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(port);

server_addr.sin_addr = *((struct in_addr *)host->h_addr);

rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));

/* 连接到服务端 */

while (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)

{

/* 连接失败 */

rt_kprintf("Connect fail!\n");

lwip_close(sock);

/*释放接收缓冲 */

rt_free(recv_data);

return 1;

}

rt_kprintf("Connect OK!\n");

if(num == 1)

{

/* 发送数据到sock连接 */

if(send(sock,send_data1,strlen(send_data1), 0) < 0)

{

/* 发送失败,关闭这个连接 */

rt_kprintf("\nSend error ");

lwip_close(sock);

/* 释放接收缓冲 */

rt_free(recv_data);

}

else

{

rt_kprintf("\nSend OK ");

bytes_received = recv(sock, recv_data, BUFSZ - 1, 0);

lwip_close(sock);

/* 释放接收缓冲 */

rt_free(recv_data);

}

}

else if(num == 2)

{

/* 发送数据到sock连接 */

if(send(sock,send_data2,strlen(send_data2), 0) < 0)

{

/* 发送失败,关闭这个连接 */

rt_kprintf("\nSend error ");

lwip_close(sock);

/* 释放接收缓冲 */

rt_free(recv_data);

}

else

{

rt_kprintf("\nSend OK ");

/* 从sock连接中接收最大BUFSZ - 1字节数据 */

bytes_received = recv(sock, recv_data, BUFSZ - 1, 0);

Buf = Search_str(recv_data,"\"value\":");

if(recv_data[Buf] == '0')

LPC_GPIO2->FIOPIN &= ~0xff;                        //关闭LED

else

LPC_GPIO2->FIOPIN |= 0xff;                        //打开LED

rt_kprintf("\n%s ",recv_data+Buf);

lwip_close(sock);

/* 释放接收缓冲 */

rt_free(recv_data);

}

}

return 1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值