【智能家居v1.0项目】C#实现scoket通信

问题背景:在实现智能家居项目中,要实现服务器接受到zigbee模块采集到的信息,并且将该数据通过socket通信传输给客户端。

以下是服务器客户端

//以下的using是自己添加的
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace NJGB智能家居系统V10
{
    public partial class Form1 : Form
    {
        Socket listener;
        bool socketstart_or_stop = false;
        Thread threadWatch = null;
        Dictionary<string, Socket> dict = new Dictionary<string, Socket>();
        Dictionary<string, Thread> dictThread = new Dictionary<string, Thread>();

        private byte keting_dianshiji_kongzhi_or_xuexi, keting_jidinghe_kongzhi_or_xuexi,woshikongtiao_kongzhi_or_xuexi;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            /*******************串口的初始操作*************/
            string[] ports = SerialPort.GetPortNames();//定义一个字符串等于获取到的com名字
            Array.Sort(ports);//给com口排序
            comboBox_com.Items.AddRange(ports);//将com口添加到串口选择框
            comboBox_com.SelectedIndex = comboBox_com.Items.Count > 0 ? 0 : -1;//让串口列表框第一行就显示com
             //初始化SerialPort对象  
            comm.NewLine = "/r/n";
            comm.RtsEnable = true;//根据实际情况吧。 
            comm.DataReceived += comm_DataReceived;

            /***************获取ip地址并显示在ip地址框内***********************/
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());//获取ip地址
            foreach (IPAddress ip in host.AddressList)
            {
                textBox_IP.Text = ip.ToString();//ip地址显示在ip地址框内
            }

            /*****************设置程序初始状态,只有选择好com口后并打开,程序其他部分才可用*******/
            groupBox_keting.Enabled = false;
            groupBox_woshi.Enabled = false;
            groupBox_chufang.Enabled = false;
            groupBox_weishengjian.Enabled = false;
            textBox_IP.Enabled = false;
            this.button_Start_Server.Enabled = false;//启动服务器按钮不可用
            this.button_Stop_Server.Enabled = false;//停止服务器按钮是灰色不可用

            this.keting_dianshiji_kongzhi.Checked = true;
            this.keting_dianshiji_xuexi.Checked = false;
            this.keting_jidinghe_kongzhi.Checked = true;
            this.keting_jidinghe_xuexi.Checked = false;

            if (keting_dianshiji_kongzhi.Checked == true)
                keting_dianshiji_kongzhi_or_xuexi = 0x6F;
            if (keting_jidinghe_kongzhi.Checked == true)
                keting_jidinghe_kongzhi_or_xuexi = 0x6F;

        }

        
        void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (comClosing) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环 
            int index=0;

            try
            {
                int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
                byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
                comm.Read(buf, 0, n);//读取缓冲数据
                builder.Clear();//清除字符串构造器的内容

                //因为要访问ui资源,所以需要使用invoke方式同步ui。
                this.Invoke((EventHandler)(delegate
                {
                    sockSend(buf);
                    try
                    {
                        foreach (byte b in buf)
                        {
                            if (0x1A == b)
                            { 
                                /**********温度*******************************/
                                if (buf[index + 1] == 0x60)//0x60是上传温度命令
                                {
                                    if (buf[index + 2] == 0x01)//1号终端就是客厅温度和灯模块
                                    {
                                        this.textBox_keting_wendu.Text = buf[index + 3].ToString() ;
                                    }

                                    if (buf[index + 2] == 0x02)//2号终端就是卧室温度和灯模块
                                    {
                                        this.textBox_woshi_wendu.Text = buf[index + 3].ToString();
                                    }

                                    if (buf[index + 2] == 0x04)//4号终端就是卫生间温度和灯模块
                                    {
                                        this.textBox_weishengjian_wendu.Text = buf[index + 3].ToString();
                                    }
                                }

                                /*******************烟雾状态*************************/
                                if (buf[index + 1] == 0x62)//0x62表示pc收到的数据是烟雾数据
                                { 
                                    this.textBox_chufang_yanwu.Text = buf[index + 3].ToString();
                                }

                                /*************灯状态****************************/
                                if (buf[index + 1] == 0x61)//上传灯状态命令
                                {
                                    if (buf[index + 2] == 0x01)//1号终端就是客厅温度和灯模块
                                    {
                                        if (buf[index + 3] == 0x01)
                                        {
                                            button_keting_deng.BackColor = Color.Yellow;
                                        }
                                        else
                                        {
                                            button_keting_deng.BackColor = Color.DarkGray;
                                        }
                                    }

                                    if (buf[index + 2] == 0x02)//2号终端就是卧室温度和灯模块
                                    {
                                        if (buf[index + 3] == 0x01)
                                        {
                                            button_woshi_deng.BackColor = Color.Yellow;
                                        }
                                        else
                                        {
                                            button_woshi_deng.BackColor = Color.DarkGray;
                                        }
                                    }

                                    if (buf[index + 2] == 0x05)//5号终端就是厨房烟雾和灯模块
                                    {
                                        if (buf[index + 3] == 0x01)
                                        {
                                            button_chufang_deng.BackColor = Color.Yellow;
                                        }
                                        else
                                        {
                                            button_chufang_deng.BackColor = Color.DarkGray;
                                        }
                                    }

                                    if (buf[index + 2] == 0x04)//4号终端就是卫生间温度和灯模块
                                    {
                                        if (buf[index + 3] == 0x01)
                                        {
                                            button_weishengjian_deng.BackColor = Color.Yellow;
                                        }
                                        else
                                        {
                                            button_weishengjian_deng.BackColor = Color.DarkGray;
                                        }
                                    }
                                }
                                /****************************************************/
                            }
                        }
                    }
                    catch (Exception)
                    {

                    }
                }));
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        /*启动服务器*/
        private void button_Start_Server_Click(object sender, EventArgs e)//点击启动服务器
        {
            if (socketstart_or_stop)
                return;
                /**************创建一个终端节点*****************/
                IPAddress ip = IPAddress.Parse(textBox_IP.Text);//创建终结点EndPoint
                IPEndPoint localep = new IPEndPoint(ip, 4567);//把ip和端口转化为IPEndpoint实例,用于socket侦听时绑定
                
                /*************创建一个监听并启动监听***************************/
                listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                listener.Bind(localep);//把负责监听的socket套接字绑定到主机的端口
                listener.Listen(10);//设置监听队列长度

                threadWatch = new Thread(WatchConnectioning);
                threadWatch.IsBackground = true;
                threadWatch.Start();
                
                /****************设置状态****************************/
                socketstart_or_stop = true;//设置启动服务器启动标志为真
                this.button_Start_Server.Enabled = false;//启动服务器按钮被按下后,变为灰色不可用。
                this.button_Stop_Server.Enabled = true;//关闭服务器按钮变为可用状态
                label_server_state.Text = "服务器已开启";
        }
        /*监听*/
        void WatchConnectioning()
        {
            while(true)   //4、循环等待客户端连接
            {
                Socket sokConnection = listener.Accept();//创建一个负责通信的套接字
                dict.Add(sokConnection.RemoteEndPoint.ToString(), sokConnection);

                Thread thrRec = new Thread(RecMsg);
                thrRec.IsBackground = true;
                thrRec.Start(sokConnection);
                dictThread.Add(sokConnection.RemoteEndPoint.ToString(), thrRec);

                MessageBox.Show("客户端连接成功");
            }
        }
        /*5、接受recieve*/
         void RecMsg(object socketClientpara)
        {
            Socket socketClient = socketClientpara as Socket;
            while(true)
            {
                byte[] arrMsgRec = new byte[8];
                try
                {
                    socketClient.Receive(arrMsgRec);
                    string writecomMsg = System.Text.Encoding.UTF8.GetString(arrMsgRec);
                    comm.WriteLine(writecomMsg);
                }
                catch (SocketException ex)
                {
                    MessageBox.Show("有客户端被关闭");
                    return;
                }
                catch (Exception ex)
                {
                    return;
                }
            }
        }
         /*6、发送*/
        void sockSend(byte[] arrMsg)
        {
            foreach (Socket s in dict.Values)
            {
                s.Send(arrMsg);
            }
        }

        private void button_Stop_Server_Click(object sender, EventArgs e)
        {
            if (!socketstart_or_stop)
                return;
            listener.Close();
            threadWatch.Abort();

            socketstart_or_stop = false;
            this.button_Start_Server.Enabled = true;//启动服务器按钮不可用
            this.button_Stop_Server.Enabled = false;//停止服务器按钮是灰色不可用
            label_server_state.Text = "服务器已关闭";
        }

        private void button_keting_deng_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[4];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x01; //控制灯的命令
            mingling[2] = 0x01; //控制1号节点,就是客厅的灯
            if (button_keting_deng.BackColor == Color.DarkGray)//如果灯标志取反为真
            {
                mingling[3] = 0x01;//点亮灯
                comm.Write(mingling, 0, 4);
                button_keting_deng.BackColor = Color.Yellow;
            }
            else
            {
                mingling[3] = 0x00;//熄灭灯
                comm.Write(mingling, 0, 4);
                button_keting_deng.BackColor = Color.DarkGray;
            }
        }

        private void button_woshi_deng_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[4];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x01; //控制灯的命令
            mingling[2] = 0x02; //控制2号节点,就是卧室的灯
            if (button_woshi_deng.BackColor == Color.DarkGray)//如果灯标志取反为真
            {
                mingling[3] = 0x01;//点亮灯
                comm.Write(mingling, 0, 4);
                button_woshi_deng.BackColor = Color.Yellow;
            }
            else
            {
                mingling[3] = 0x00;//熄灭灯
                comm.Write(mingling, 0, 4);
                button_woshi_deng.BackColor = Color.DarkGray;
            }
        }

        private void button_weishengjian_deng_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[4];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x01; //控制灯的命令
            mingling[2] = 0x04; //控制4号节点,就是卫生间的灯
            if (button_weishengjian_deng.BackColor == Color.DarkGray)//如果灯标志取反为真
            {
                mingling[3] = 0x01;//点亮灯
                comm.Write(mingling, 0, 4);
                button_weishengjian_deng.BackColor = Color.Yellow;
            }
            else
            {
                mingling[3] = 0x00;//熄灭灯
                comm.Write(mingling, 0, 4);
                button_weishengjian_deng.BackColor = Color.DarkGray;
            }
        }

        private void button_chufang_deng_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[4];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x01; //控制灯的命令
            mingling[2] = 0x05; //控制5号节点,就是厨房的灯
            if (button_chufang_deng.BackColor == Color.DarkGray)//如果灯标志取反为真
            {
                mingling[3] = 0x01;//点亮灯
                comm.Write(mingling, 0, 4);
                button_chufang_deng.BackColor = Color.Yellow;
            }
            else
            {
                mingling[3] = 0x00;//熄灭灯
                comm.Write(mingling, 0, 4);
                button_chufang_deng.BackColor = Color.DarkGray;
            }
        }

        private void button_daiji1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x00;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_xinxuan_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x01;//电视信号源选择键
            comm.Write(mingling, 0, 5);
        }

        private void button_caidan1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x02;//电视菜单键
            comm.Write(mingling, 0, 5);
        }

        private void button_yinliang_jia1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x03;//电视音量+键
            comm.Write(mingling, 0, 5);
        }

        private void button_yinliang_jian1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x04;//电视音量—键
            comm.Write(mingling, 0, 5);
        }

        private void button_up1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x05;//电视上键
            comm.Write(mingling, 0, 5);
        }

        private void button_down1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x06;//电视下键
            comm.Write(mingling, 0, 5);
        }

        private void button_zuo1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x07;//电视左键
            comm.Write(mingling, 0, 5);
        }

        private void button_you1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x08;//电视右键
            comm.Write(mingling, 0, 5);
        }

        private void button_queding1_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //控制电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视盒机顶盒
            mingling[3] = keting_dianshiji_kongzhi_or_xuexi;
            mingling[4] = 0x09;//电视确定键
            comm.Write(mingling, 0, 5);
        }

        private void keting_dianshiji_kongzhi_CheckedChanged(object sender, EventArgs e)
        {
            if (keting_dianshiji_kongzhi.Checked)
                keting_dianshiji_kongzhi_or_xuexi = 0x6F;
        }

        private void keting_dianshiji_xuexi_CheckedChanged(object sender, EventArgs e)
        {
            if (keting_dianshiji_xuexi.Checked)
                keting_dianshiji_kongzhi_or_xuexi = 0x7F;
        }

        private void keting_jidinghe_kongzhi_CheckedChanged(object sender, EventArgs e)
        {
            if (keting_jidinghe_kongzhi.Checked)
                keting_jidinghe_kongzhi_or_xuexi = 0x6F;
        }

        private void keting_jidinghe_xuexi_CheckedChanged(object sender, EventArgs e)
        {
            if (keting_jidinghe_xuexi.Checked)
                keting_jidinghe_kongzhi_or_xuexi = 0x7F;
        }

        private void groupBoxTV_Enter(object sender, EventArgs e)
        {

        }

        private void button_daiji2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x15;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_caidan_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x16;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_yinliang_jia2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x17;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_yinliang_jian2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x18;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_pindao_jia2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x19;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_pindao_jian2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1A;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_up2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1B;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_down2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1C;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_zuo2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1D;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_you2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1E;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void button_queding2_Click(object sender, EventArgs e)
        {
            byte[] mingling = new byte[5];
            mingling[0] = 0x2A; //pc向协调器发送数据
            mingling[1] = 0x03; //电视的命令
            mingling[2] = 0x03; //控制3号节点,就是客厅电视&机顶盒
            mingling[3] = keting_jidinghe_kongzhi_or_xuexi;
            mingling[4] = 0x1F;//电视待机
            comm.Write(mingling, 0, 5);
        }

        private void textBox_weishengjian_wendu_TextChanged(object sender, EventArgs e)
        {

        }

    }
}
时间: 2024-10-19 15:31:52

【智能家居v1.0项目】C#实现scoket通信的相关文章

DreamHouse项目(基于ARM与ZIGBEE技术的智能家居)之项目展示

这是本人做的一次有关智能家居的项目,仅是用来参加比赛的!或者是我用来练手的吧!大概花费了我近2个月的时间来完成他,平台是建立在博创S3C2410的嵌入式的箱子上的,我觉得我唯一没有足够自信说是自己写的代码的话就是驱动部分了,毕竟当时的状态也是刚刚把单片机的知识全部学会罢了,因为这是基础中的基础,对于C语言,在校的学生普遍是没有完全掌握的,对于开发真的知识储备确实不够!好吧废话我不多说了,先讲讲我自己做的项目吧!学生的练手项目,大家应该不会来喷我吧! 上图先! 通用模块 我本人真的是没有做出来,但

智能家居 Ver2.0

/****************************** 工程名  :手机呼叫SIM900A,门禁解锁 1 先用USB转TTL模块测试模块好用,发送AT,波特率到9600同步 2 51单片机晶振 11.0592MHz,12M不可以用   手机呼叫SIM900A的号码,LED亮500MS: *******************************/ #include "string.h" #include "STC12C2052AD.h" #define 

第17期中国智能家居主题沙龙将于5月23日在京举行

中国智能家居主题沙龙已经办16期,为中国智能家居的发展贡献了自己的力量,在这轮智能家居热潮中,沙龙将继续为政府.投资机投.智能家居产品提供商.智能家居方案提供商,智能家居集成商,智能家居渠道提供多方位的合作,促进行业的快速爆发. 活动宗旨: 搭建行业用户与企业沟通的桥梁,以交流.合作.服务为目的,探讨行业现状及走势,推广普及新理念.建立智能家居沟通平台以宣传企业品牌,推广新技术,展示新产品.根据智能家居行业各产业链上下游人士的需求,有针对性地提供服务,促进行业发展. 活动背景: 2013年初<国

智能家居团战 海尔“造”用微软“智”?

近日,海尔在U+的基础上发布了"U+智慧生活"APP,而微软小冰则成为继魅族之后海尔又一重量级合作伙伴,在于小米美的的对阵中海尔魅族又添一强援.其实,不难看出,智能家居市场在经过一轮各自为战的吹捧期后,正逐渐呈现抱团打造生态系统,以团战方式打开新局面. 此前有观点对智能家居不屑一顾,认为概念大于实用,现在这么看确实不假,但我们应该用更长远的眼观来看待,智能家居赢在未来,而不是现在--但就在十年前,Nokia也是如此看待智能手机的.固然,短时间内智能家居仍会是概念大于实际,但长远来看,5

平安科技智能投顾接口设计说明书_陆基金 v1.0.5

平安科技 智能投顾项目 RBPAA接口设计说明书(for 陆基金) 第1.0.4版 平安科技(深圳)有限公司创新品牌体验团队智能投顾组 二○一七年十月 版本控制信息 版本 日期 拟稿和修改 作者 说明1.0 2018-4-25 初稿 陈培镇 ?目录1 概述 12 接口约定 13 接口列表 14 接口组成 15 接口描述 25.1 基金领域 25.1.1 基金盘中实时估值接口(F100) 25.1.2 基金最新估值查询接口(F101) 35.1.3 基金基础信息查询接口(F102) 35.1.4

智能家居项目(2):项目工程框架的搭建

项目管理器: Linux中的项目管理器"make"有些类似于windows中的Visual C++里的"工程",它是一种控制编译或者重复编译软件的工具,另外,它还能自动管理软件编译的内容.方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上. |-- Makefile |-- Readme.txt(记录文件) |-- board(嵌入式应用程序) |   |-- include |   |   |-- common.h |   |   |-- de

某智能家居项目框架学习总结

这个月来第一篇博客,各种其他事情.. 之前负责过一个智能家居项目的二次开发,苏州一家公司做的,项目还是分了好几个系统,对业务流程的不同部分进行了划分,我是此项目的主要负责人,通过老师的指导,对这个项目也有了一些了解.此项目运用了一些框架,有些也是我第一次接触到的,下面将对项目用到的一些框架进行总结. 下面可能会出现几个有关智能家居的名词,介绍一下 1.机顶盒:每一个家庭都应该至少有一个机顶盒,控制电器开关都是由机顶盒向各电器的接收器发送命令 2.客户端:也就是用户的移动设备,手机.平板都可以,我

非常新能源铝电池项目的产业化展开的分析报告v1.0

非常新能源铝电池项目的产业化展开的分析报告v1.0   负责人:魏伟 合伙人:王春光 签约员工:史晓乐.史海清.陈正旺   进度看板 ü 魏伟 ü 王春光 ü 史晓乐 ü 史海清 ü 陈正旺   项目分析目标: 1.         项目目标:该公司能否提供非常具有前景的就业及风险评估,目前认为该公司非常有前景,大规模快速量产需要排除哪些障碍做哪些工作?关注技术线路竞争对手的动态优势. 2.         关键技术的详细分析:其中包括资料收集.整理和初步结论.讨论及评价等. 3.       

智能家居项目(1):软件开发流程

结合公司开发过的产品以及对自学知识的总结,整理出此系列文章  .侧重点还是在软件部分. 公司开发某个项目,肯定是为了盈利赚钱.开发的项目无非就是自己的产品或者承接甲方的开发任务. 大体的流程可以分为几个部分或阶段: 1.需求说明书 预期想要一个什么功能,达到什么样的效果.有的客户也说不明白具体的东西,描述不清.需要加强沟通交流,确定最终的模型.一般情况下是甲方就提供好了的.关键部分大致如下: 监控功能 监控室内温度,监控红外传感器,以阻塞或异步的方式对红外传感器进行检测,如果红外传感器探测到有不