查看: 1609|回复: 1

【RT1052】+ 06 ucLinux之TCP控制LED

[复制链接]
  • TA的每日心情
    开心
    2022-8-19 21:51
  • 签到天数: 252 天

    [LV.8]以坛为家I

    12

    主题

    598

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1983
    最后登录
    2022-8-19
    发表于 2018-11-21 18:23:11 | 显示全部楼层 |阅读模式
    【飞凌RT1052】+ 06 ucLinux之TCP控制LED
    1.  目的
    新建一个TCP服务器,服务器端实现对板载LED的控制。采用电脑客户端连接上服务器,发送0或者1来控制LED亮与灭。
    2. 测试准备工作
    服务端源码如下:
    1. #include <stdlib.h>
    2. #include <stdio.h>
    3. #include <errno.h>
    4. #include <string.h>
    5. #include <netinet/in.h>
    6. #include <sys/wait.h>
    7. #include <sys/types.h>
    8. #include <unistd.h>
    9. #include <arpa/inet.h>
    10. #include <fcntl.h>


    11. #define PORT                 5000
    12. #define BACKLOG         10
    13. #define LENGTH                 512


    14. int main()
    15. {
    16.         int iR;
    17.         int sockfd;                                       
    18.         int nsockfd;                                       
    19.         int num;
    20.         int sin_size;                                                
    21.         int value;

    22.         int pfd;
    23.         
    24.         
    25.         struct sockaddr_in addr_local;
    26.         struct sockaddr_in addr_remote;

    27.         /*获取文件描述符*/
    28.         if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    29.         {
    30.                 printf("ERROR:Failed to obtain socket Descriptor.\n");
    31.                 return 0;
    32.         }
    33.         else
    34.         {
    35.                 printf("OK:Obtain socket descriptor successfully.\n");
    36.         }


    37.         /*本地地址初始化*/
    38.         addr_local.sin_family=AF_INET;                                
    39.         addr_local.sin_port=htons(PORT);                        
    40.         addr_local.sin_addr.s_addr=htonl(INADDR_ANY);               
    41.         memset(addr_local.sin_zero,0,8);                        

    42.         /*绑定端口*/
    43.         if(bind(sockfd,(struct sockaddr*)&addr_local,sizeof(struct sockaddr))==-1)
    44.         {
    45.                 printf("ERROR:Failed to bind Port %d.\n",PORT);
    46.                 return 0;
    47.         }
    48.         else
    49.         {
    50.                 printf("OK:Bind the Port %d successfully.\n",PORT);
    51.         }


    52.         /*监听端口*/
    53.         if(listen(sockfd,BACKLOG)==-1)
    54.         {
    55.                 printf("ERROR:Failed to listen Port %d.\n",PORT);
    56.                 return 0;
    57.         }
    58.         else
    59.         {
    60.                 printf("OK:Listening the Port %d successfully.\n",PORT);
    61.         }

    62.         

    63.         /*一直等待连接*/
    64.         sin_size=sizeof(struct sockaddr_in);        
    65.         nsockfd=accept(sockfd,(struct sockaddr*)&addr_remote,&sin_size);
    66.         
    67.                
    68.         if(nsockfd==-1)
    69.         {
    70.                 printf("ERROR:Obtain new socket Descriptor error.\n");
    71.                 return 0;        
    72.         }

    73.         else
    74.         {
    75.                 printf("OK:Server has got connected from %s.\n",inet_ntoa(addr_remote.sin_addr));
    76.         }


    77.         pfd=open("/sys/devices/platform/leds/leds/led1/brightness",O_RDWR);                                //打开LED驱动
    78.         if(pfd<0)
    79.         {
    80.                 printf("Open led failed.\n");
    81.                 return -1;
    82.         }


    83.        write(pfd,"1",1);

    84.         while(1)
    85.         {
    86.                 read(nsockfd,&value,4);                                                                        //int 型
    87.                 if(value==1)
    88.                 {
    89.                         write(pfd,"1",1);
    90.                 }
    91.                 else
    92.                 {
    93.                         if(value==0)
    94.                         {        
    95.                           write(pfd,"0",1);
    96.                         }        
    97.                         else
    98.                         {
    99.                           printf("client quiting...\n");
    100.                           break;
    101.                         }
    102.                 }
    103.         }
    104.         close(pfd);
    105.         close(nsockfd);
    106.         close(sockfd);
    107. }
    复制代码
    PC端设置
    01准备工作PC网络设置.png
    启动服务
    02启动OK1052网卡.png
    3. 运行./led_server./led_client192.168.1.163测试
    03实验现象.png

    源码如下:
    TCP-LED.zip (2.03 KB, 下载次数: 5)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:27
  • 签到天数: 1336 天

    [LV.10]以坛为家III

    88

    主题

    4293

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9054
    最后登录
    2024-5-2
    发表于 2018-11-22 09:40:12 | 显示全部楼层
    这个看上去好是高级啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-2 05:46 , Processed in 0.116717 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表