一、项目概述:简单智能远程监控
    功能:
服务器端:
1、服务器端利用随机数模拟向串口读取传感数据,需要模拟的传感数据要求有:温度、湿度、光
  照、室内噪音度等等。
2、服务器要求在数据保中保存有采集传感数据的日期和时间。
3、服务器利用网络接收客户端发送过来的设备控制信号,通过写驱动,实现对底层硬件的控制,
  这里使用打印显示的方式模拟。
4、在进程之间IPC通信时,要求使用文件锁或信号量实现资源保护。
客户端:
1、客户端能够通过网络通信实现接收服务器端传输过来的传感数据,并将传感数据打印到屏幕上
  显示。
2、客户端能够从键盘输入控制信号,并且通信将控制信号发送给服务器。
3、客户端要求实现控制信号有,开灯、关灯,开风扇、关风扇,开窗、关窗,开空调、关空调等。
4、如果有安卓客户端的话,要求能与安卓客户端通信。
实现:
服务器端:
      1、利用linux C实现服务器;
      2、服务器端使用多进程实现多客户网络服务;
      3、服务器多个进程之间需要使用IPC通信(进程间通信);
客户端:
          1、在linux C下实现网络客户端;
2、为了实现同时读阻塞的键盘和阻塞的网络,使用多路IOselectPOLL机制)实现阻塞的读键盘和
读网络。
服务器客户端的网络通信:
1、这里要求采用TCP协议进行通信,实现所要求的S/C模式,并且要求实现多客户服务。
进程通信方式
图示:
涉及知识:
1)文件io操作  2)时间函数  3)进程控制  4)信号  5)进程间通信(IPC
  6)线程控制。(7)高级IO的多路IO、文件锁 8)网络通信等等。类容基本囊括系统编程
和网络编程课程内所讲授的核心知识点。
学生完成本项目的目的:
1、利用项目实操强化c语言的使用,有效增加学生进企业前的实际编程代码量的积累。
2、实现系统编程、网络编程知识从理论到实践过度,经过切身实际项目的操作,加深对于这门课 
  知识系统化理解。
3、利用功能上几乎完全的企业项目,让学生了解实际企业项目的大致开发流程。
4、有效提升学生实际自主解决问题的能力,以及培养团队合作的能力。
    课程设计的最后成果,内容包括:
    1、答辩,项目成果演示。
      2、预习报告(题目、流程图、程序的设计思想等);
      3、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。
二、详细图解
三、程序逻辑框图
1)服务器程序
·随机数模拟传感数据
        /* 利用时间作为随机数种子 */
        tim = time(NULL);
        srand(tim);
        /* 取随机数后两位作为模拟数值 */
        illumination = (float)(rand()%100);//光照
        humidity    = (float)(rand()%100);//湿度
        temperature  = (float)(rand()%100);//温度
       
·数据包格式
a、传感数据包的字符串格式
光照;温度;湿度;采集时间\r\n
b、控制命令
#define FAN_ON                  "1"
#define FAN_OFF                "2"
#define LIGHT_ON                "3"
#define LIGHT_OFF              "4"
#define WINDOW_OPEN        "5"
#define WINDOW_CLOSE        "6"
#define CLIENT_OFFLINE          "7"
·读写驱动进程与客户服务进程之间的TPC通信
a、共享内存:实现传感数据的通信
b、消息队列:实现控制命令的通信
   
·服务器与客户的强扩通信
a、TCP协议
b、S/C模式
四、客户端
(1)安卓客户端:略
(2)linux客户端:自己实现,使用多路io(select或者poll)机制,实现阻塞读键盘和读网络

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。