基于dragonboard410c 智能门锁 开发
来源:互联网 发布:魅族升级系统清除数据 编辑:程序博客网 时间:2024/04/28 16:14
一、智能门锁的情景
a.通过智能手机平台进行远程控制。输入你设置好的密码,门会为你自动打开。
b.你以后再也不必担心你忘了带钥匙或者忘了带手机而烦恼,你的家人也可以通过操作来为你远程开锁
c.对于安全,wifi智能门锁具有更完善的保护机制,任何人开锁、上锁、反锁,你和家人都可以及时掌握。
二、系统组成
由dragonboard410c、一部安卓手机和带有步进机装置的门锁组成。
三、客户端通讯代码
package com.test;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class MainActivity extends Activity implements View.OnClickListener { private TextView TextTime; private Button buttonTime; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextTime =(TextView)this.findViewById(R.id.textViewTime); buttonTime = (Button)this.findViewById(R.id.button2); buttonTime.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button2: //注意每次需new一个实例,新建的任务只能执行一次,否则会出现异常 MyTask mTask = new MyTask(); mTask.execute("119.29.85.118"); break; default: break; } } private class MyTask extends AsyncTask<String,Integer,String>{ //onPreExecute方法用于在执行后台任务前做一些UI操作 @Override protected void onPreExecute() { TextTime.setText("fwe"); } //doInBackground方法内部执行后台任务,不可在此方法内修改UI protected String doInBackground(String... parms) { Socket socket =null; try { socket = new Socket(parms[0], 8888); System.out.println("socket has connected"); //2.得到socket读写流 OutputStream os=socket.getOutputStream(); OutputStreamWriter pw=new OutputStreamWriter (os); BufferedWriter bw = new BufferedWriter(pw); bw.write("TIME"); bw.flush(); // 从服务端程序接收数据 InputStream ips = socket.getInputStream(); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr); String s = ""; String result=""; while((s = br.readLine()) != null) { result += s; System.out.println(s); } socket.close(); return result; } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "fweffwef"; } //onProgressUpdate方法用于更新进度信息 protected void onProgressUpdate(Integer... progress) { // progressBar.setProgress(progresses[0]); } //onPostExecute方法用于在执行完后台任务后更新UI,显示结果 protected void onPostExecute(String result) { TextTime.setText(result); } //onCancelled方法用于在取消执行中的任务时更改UI @Override protected void onCancelled() { } }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.test.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ButtonPost" android:id="@+id/buttonpost" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="64dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button2" android:layout_below="@+id/buttonpost" android:layout_centerHorizontal="true" android:layout_marginTop="55dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button3" android:layout_centerVertical="true" android:layout_alignLeft="@+id/button2" android:layout_alignStart="@+id/button2"/> <TextView android:layout_width="fill_parent" android:layout_height="70dp" android:text="Medium Text" android:id="@+id/textViewTime" android:layout_below="@+id/button3" android:layout_marginTop="68dp"/></RelativeLayout>
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <time.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <signal.h>#define BUFFLEN 1024#define SERVER_PORT 8888#define BACKLOG 5#define PIDNUMB 3static void handle_connect(int s_s){ int s_c; /*客户端套接字文件描述符*/ struct sockaddr_in from; /*客户端地址*/ socklen_t len = sizeof(from); /*主处理过程*/ while(1) { /*接收客户端连接*/ s_c = accept(s_s, (struct sockaddr*)&from, &len); time_t now; /*时间*/ char buff[BUFFLEN]; /*收发数据缓冲区*/ int n = 0; memset(buff, 0, BUFFLEN); /*清零*/ n = recv(s_c, buff, BUFFLEN,0); /*接收发送方数据*/ if(n > 0 && !strncmp(buff, "TIME", 4)) /*判断是否合法接收数据*/ { memset(buff, 0, BUFFLEN); /*清零*/ now = time(NULL); /*当前时间*/ sprintf(buff, "%24s\r\n",ctime(&now)); /*将时间复制入缓冲区*/ send(s_c, buff, strlen(buff),0); /*发送数据*/ } /*关闭客户端*/ close(s_c); }}void sig_int(int num){ exit(1); }int main(int argc, char *argv[]){ int s_s; /*服务器套接字文件描述符*/ struct sockaddr_in local; /*本地地址*/ signal(SIGINT,sig_int); /*建立TCP套接字*/ s_s = socket(AF_INET, SOCK_STREAM, 0); /*初始化地址和端口*/ memset(&local, 0, sizeof(local)); /*清零*/ local.sin_family = AF_INET; /*AF_INET协议族*/ local.sin_addr.s_addr = htonl(INADDR_ANY); /*任意本地地址*/ local.sin_port = htons(SERVER_PORT); /*服务器端口*/ /*将套接字文件描述符绑定到本地地址和端口*/ bind(s_s, (struct sockaddr*)&local, sizeof(local)); listen(s_s, BACKLOG); /*侦听*/ /*处理客户端连接*/ pid_t pid[PIDNUMB]; int i =0; for(i=0;i<PIDNUMB;i++) { pid[i] = fork(); if(pid[i] == 0) /*子进程*/ { handle_connect(s_s); } } while(1); close(s_s); return 0;}
0 0
- 基于dragonboard410c 智能门锁 开发
- 基于dragonboard410c智能网关
- 基于DragonBoard410C的智能管家
- 基于dragonboard410c 智能宠物保姆----预研
- 基于dragonboard410c智能空气检测仪表-----硬件搭建
- 基于Dragonboard410c的智能音箱(一)
- 基于Dragonboard410c的智能音箱(二)
- 基于Dragonboard410c的智能音箱(三)
- 基于Dragonboard410c的智能音箱(四)
- 基于Dragonboard410c的智能音箱(五)
- 基于DragonBoard410c的智能照明系统
- 酒店智能门锁/门禁智能系统开发实例
- EFM32智能门锁应用案例
- 酒店智能门锁的秘密
- 基于dragonboard410c 家庭智能环保卫士之PM2.5模块代码分析
- 基于dragonboard410c 家庭智能环保卫士之PM2.5模块简介
- 当智能门锁已不再是锁
- DragonBoard410C开发板HDMI简介
- [Torch] 1. Lua
- 使用@Configuration注解来代替Spring的bean配置
- iOS安全:防止dyld注入
- OpenCV 2.4.10+VS2008 SP1 实现一个视频播放器(可倍速播放)
- 数组-二分查找
- 基于dragonboard410c 智能门锁 开发
- 未来最为重要的三种能力
- 使用synchronized获取互斥锁的几点说明
- PyHusky接口功能及实例介绍
- 数组存储对象,并进行增删查
- mysql server 安装
- 18 原始套接字
- Android网络请求框架Volley
- 静态页面 写ajax获取接口 加载数据案例