黑马程序员安卓教程:智能继电器代码实现(四)_第1页
黑马程序员安卓教程:智能继电器代码实现(四)_第2页
黑马程序员安卓教程:智能继电器代码实现(四)_第3页
黑马程序员安卓教程:智能继电器代码实现(四)_第4页
黑马程序员安卓教程:智能继电器代码实现(四)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能继电器代码实现(四)【文件 1-7】 ControlActivity.java1.package com.example.bluetoothtest;2.import java.io.IOException;3.import java.io.OutputStream;4.import java.util.UUID;5.import android.annotation.SuppressLint;6.import android.app.Activity;7.import android.bluetooth.BluetoothDevice;8.import android.bluetooth

2、.BluetoothSocket;9.import android.content.Intent;10.import android.os.Bundle;11.import android.os.Looper;12.import android.os.SystemClock;13.import android.view.View;14.import android.view.View.OnClickListener;15.import android.widget.Button;16.import android.widget.Toast;17.public class ControlActi

3、vityextends Activityimplements OnClickListener 18./*19.* 用于设置开关的状态,显示在 Button 上的文字就是20.*/21.private finalstatic String KAIGUAN1_STATE_OPEN =开关 1 已经打开;22.private finalstatic String KAIGUAN2_STATE_OPEN =开关 2 已经打开;23.private finalstatic String KAIGUAN3_STATE_OPEN =开关 3 已经打开;24.private finalstatic Strin

4、g KAIGUAN4_STATE_OPEN =开关 4 已经打开;25.private finalstatic String KAIGUAN5_STATE_OPEN =开关 5 已经打开;26.private finalstatic String KAIGUAN1_STATE_CLOSE =开关 1 已经关闭;27.private finalstatic String KAIGUAN2_STATE_CLOSE =开关 2 已经关闭;28.private finalstatic String KAIGUAN3_STATE_CLOSE =开关 3 已经关闭;29.private finalstat

5、ic String KAIGUAN4_STATE_CLOSE =开关 4 已经关闭;30.private finalstatic String KAIGUAN5_STATE_CLOSE =开关 5 已经关闭;23 31.private finalstatic String KAIGUANALL_STATE_OPEN= 所有开关 已经打开;32.private finalstatic String KAIGUANALL_STATE_CLOSE= 所有开关 已经关闭;33./*34.* 产生一个唯一序列值,用于跟智能继电器的蓝牙连接的时候给自己的蓝牙设备做一个标记作用35.*/36.publics

6、taticfinal UUID MY_UUID =UUID.randomUUID();37./*38.* 打开对应的开关的指令集39.* 这些指令大家在卖家的产品说明中有,直接抄过来的40.* 通过这些指令大家发现通信的时候每一个指令都是一个字节数组41.*42.*/43.private static final byte COMMAND_OPEN_1 = new byte (byte)0x01, (byte) 0x99,44.(byte)0x10, (byte) 0x10, (byte) 0x99 ;45.private static final byte COMMAND_OPEN_2 =

7、new byte (byte)0x01, (byte) 0x99,46.(byte)0x20, (byte) 0x20, (byte) 0x99 ;47.private static final byte COMMAND_OPEN_3 = new byte (byte)0x01, (byte) 0x99,48.(byte)0x30, (byte) 0x30, (byte) 0x99 ;49.private static final byte COMMAND_OPEN_4 = new byte (byte)0x01, (byte) 0x99,50.(byte)0x40, (byte) 0x40,

8、 (byte) 0x99 ;51.private static final byte COMMAND_OPEN_5 = new byte (byte)0x01, (byte) 0x99,52.(byte)0x50, (byte) 0x50, (byte) 0x99 ;53./*54.* 关闭对应的开关指令55.*/56.private static final byte COMMAND_CLOSE_1 =newbyte (byte) 0x01, (byte)57.0x99, (byte) 0x11,(byte) 0x11, (byte) 0x99 ;58.private static fina

9、l byte COMMAND_CLOSE_2 =newbyte (byte) 0x01, (byte)59.0x99, (byte) 0x21,(byte) 0x21, (byte) 0x99 ;60.private static final byte COMMAND_CLOSE_3 =newbyte (byte) 0x01, (byte)61.0x99, (byte) 0x31,(byte) 0x31, (byte) 0x99 ;62.private static final byte COMMAND_CLOSE_4 =newbyte (byte) 0x01, (byte)63.0x99,

10、(byte) 0x41,(byte) 0x41, (byte) 0x99 ;64.private static final byte COMMAND_CLOSE_5 =newbyte (byte) 0x01, (byte)65.0x99, (byte) 0x51,(byte) 0x51, (byte) 0x99 ;66./*67.* 全部开关控制指令68.*/69.private static final byte COMMAND_OPEN_ALL= newbyte (byte) 0x01, (byte)70.0x99, (byte) 0x64,(byte) 0x64, (byte) 0x99

11、 ;71.private static final byte COMMAND_CLOSE_ALL= new byte (byte)0x01,(byte)72.0x99, (byte) 0x65,(byte) 0x65, (byte) 0x99 ;73./*74.* 开关 5 点动 1s 所谓的点动 1s 就是通电 1s 后断点24 75.*/76.private static final byte COMMAND_DIANDONG_5 = new byte (byte)0x01, (byte)77.0x99, (byte) 0x53,(byte) 0x53, (byte) 0x99 ;78./

12、*79.* 互锁 自锁这两个概念不好理解 互锁的效果是把开关 5 打开了,把开关 4 关闭了。自锁的效果跟开关80.* 很类似,不过稍微有差异,对于我们来讲可以忽略81.*/82.private static final byte COMMAND_HUSUO_5 =newbyte (byte) 0x01, (byte)83.0x99, (byte) 0x54,(byte) 0x54, (byte) 0x99 ;84.private static final byte COMMAND_ZISUO_5 =newbyte (byte) 0x01, (byte)85.0x99, (byte) 0x55

13、,(byte) 0x55, (byte) 0x99 ;86.private Button btn_kaiguan1;87.private Button btn_kaiguan2;88.private Button btn_kaiguan3;89.private Button btn_kaiguan4;90.private Button btn_kaiguan5;91.private Button btn_kaiguanAll;92.private Button btn_kaiguan5_diandong;93.private Button btn_kaiguan5_husuo;94.priva

14、te Button btn_kaiguan5_zisuo;95./蓝牙设备96.private BluetoothDevicemDevice;97./通过蓝牙设备获取到的流98.private BluetoothSocketsocket;99./ 是否连接成功用于记录连接状态100.private boolean isConnected =false;101.Otected void onCreate(BundlesavedInstanceState)103.super.onCreate(savedInstanceState);104.setContentView(

15、R.layout.activity_control);105.initView();106.initData();107.initConnection();108.109./*110.* 初始化视图111.*/112.private void initView() 113.btn_kaiguan1 = (Button) findViewById(R.id.btn_kaiguan1);114.btn_kaiguan2 = (Button) findViewById(R.id.btn_kaiguan2);115.btn_kaiguan3 = (Button) findViewById(R.id.b

16、tn_kaiguan3);116.btn_kaiguan4 = (Button) findViewById(R.id.btn_kaiguan4);117.btn_kaiguan5 = (Button) findViewById(R.id.btn_kaiguan5);118.btn_kaiguanAll =(Button)findViewById(R.id.btn_kaiguanAll);119.btn_kaiguan5_diandong =(Button) findViewById(R.id.btn_kaiguan5_diandong);25 120.btn_kaiguan5_husuo =

17、(Button)findViewById(R.id.btn_kaiguan5_husuo);121.btn_kaiguan5_zisuo = (Button)findViewById(R.id.btn_kaiguan5_zisuo);122./ 设置点击事件123.btn_kaiguan1.setOnClickListener(this);124.btn_kaiguan2.setOnClickListener(this);125.btn_kaiguan3.setOnClickListener(this);126.btn_kaiguan4.setOnClickListener(this);127

18、.btn_kaiguan5.setOnClickListener(this);128.btn_kaiguanAll.setOnClickListener(this);129.btn_kaiguan5_diandong.setOnClickListener(this);130.btn_kaiguan5_husuo.setOnClickListener(this);131.btn_kaiguan5_zisuo.setOnClickListener(this);132./ 设置默认状态133.btn_kaiguan1.setText(KAIGUAN1_STATE_CLOSE);134.btn_kai

19、guan2.setText(KAIGUAN2_STATE_CLOSE);135.btn_kaiguan3.setText(KAIGUAN3_STATE_CLOSE);136.btn_kaiguan4.setText(KAIGUAN4_STATE_CLOSE);137.btn_kaiguan5.setText(KAIGUAN5_STATE_CLOSE);138.btn_kaiguanAll.setText(KAIGUANALL_STATE_CLOSE);139.140./*141.* 初始化数据142.*/143.private void initData() 144.Intentintent=

20、 getIntent();145.BluetoothDevice device =intent.getParcelableExtra(device);146.if (null=device) 147.Toast.makeText(this,没有获取到数据,0).show();148.finish();149.150.this.mDevice = device;151.152./*153.* 初始化蓝牙连接154.* 因为蓝牙连接是线程阻塞且耗时的操作,因此需要放到子线程中,当连接成功后修改连接状态为 true155.*/156.private void initConnection()157.

21、Toast.makeText(this, 蓝牙开始连接,0).show();158.newThread(new Runnable()159.SuppressLint(NewApi)160.Override161.publicvoidrun()162.if(socket=null)163.try26 164./*165.*通过蓝牙设备获取蓝牙Socket流166.*/167.socket=168. mDevice.createRfcommSocketToServiceRecord(MY_UUID);169.catch(IOExceptione)170.Looper.prepare();171.T

22、oast.makeText(ControlActivity.this,连接失败。+e,172.0).show();173.Looper.loop();174.e.printStackTrace();175.return;176.177.178.if(!socket.isConnected()179.try180.socket.connect();181.catch(IOExceptione)182.e.printStackTrace();183.Looper.prepare();184.Toast.makeText(ControlActivity.this,连接失败。+e,185.0).sho

23、w();186.Looper.loop();187.return;188.189.190.if(outputStream=null)191.try192./*193.*通过socket获取输出流194.*/195.outputStream=socket.getOutputStream();196.Looper.prepare();197.Toast.makeText(ControlActivity.this,连接成功。,0).show();198.isConnected=true;199.Looper.loop();200.isConnected=true;201.catch(IOExcept

24、ione)202.e.printStackTrace();06.).start();207.208./如果频繁点击则拒绝,因为对继电器的物理损坏比较大,一秒只能点击一次27 209.long time =SystemClock.uptimeMillis();210.Override211.publicvoidonClick(View v) 212./如果还没连接成功则拒绝往下操作213.if (!isConnected) 214.Toast.makeText(this,蓝牙正在连接中。,0).show();215.return;216.217.if (SystemCl

25、ock.uptimeMillis()- time 1000)218.Toast.makeText(this,您的操作太频繁了,请稍后再试,0).show();219.time =SystemClock.uptimeMillis();220.return;221.222.Buttonbutton= (Button)v;223.Stringstate = button.getText().toString();224.intid=v.getId();225.switch(id)226.case R.id.btn_kaiguan1:227.if(KAIGUAN1_STATE_CLOSE.equals

26、(state)228./发送对应的指令229.sendCommand(COMMAND_OPEN_1);230.btn_kaiguan1.setText(KAIGUAN1_STATE_OPEN);231.else232.sendCommand(COMMAND_CLOSE_1);233.btn_kaiguan1.setText(KAIGUAN1_STATE_CLOSE);234.235.break;236.case R.id.btn_kaiguan2:237.if(KAIGUAN2_STATE_CLOSE.equals(state)238.sendCommand(COMMAND_OPEN_2);2

27、39.btn_kaiguan2.setText(KAIGUAN2_STATE_OPEN);240.else241.sendCommand(COMMAND_CLOSE_2);242.btn_kaiguan2.setText(KAIGUAN2_STATE_CLOSE);243.244.break;245.case R.id.btn_kaiguan3:246.if(KAIGUAN3_STATE_CLOSE.equals(state)247.sendCommand(COMMAND_OPEN_3);248.btn_kaiguan3.setText(KAIGUAN3_STATE_OPEN);249.els

28、e250.sendCommand(COMMAND_CLOSE_3);251.btn_kaiguan3.setText(KAIGUAN3_STATE_CLOSE);252.28 253.break;254.case R.id.btn_kaiguan4:255.if(KAIGUAN4_STATE_CLOSE.equals(state)256.sendCommand(COMMAND_OPEN_4);257.btn_kaiguan4.setText(KAIGUAN4_STATE_OPEN);258.else259.sendCommand(COMMAND_CLOSE_4);260.btn_kaiguan

29、4.setText(KAIGUAN4_STATE_CLOSE);261.262.break;263.case R.id.btn_kaiguan5:264.if(KAIGUAN5_STATE_CLOSE.equals(state)265.sendCommand(COMMAND_OPEN_5);266.btn_kaiguan5.setText(KAIGUAN5_STATE_OPEN);267.else268.sendCommand(COMMAND_CLOSE_5);269.btn_kaiguan5.setText(KAIGUAN5_STATE_CLOSE);270.271.break;272.ca

30、se R.id.btn_kaiguanAll:273.if(KAIGUANALL_STATE_CLOSE.equals(state)274.sendCommand(COMMAND_OPEN_ALL);275.btn_kaiguan1.setText(KAIGUAN1_STATE_OPEN);276.btn_kaiguan2.setText(KAIGUAN2_STATE_OPEN);277.btn_kaiguan3.setText(KAIGUAN3_STATE_OPEN);278.btn_kaiguan4.setText(KAIGUAN4_STATE_OPEN);279.btn_kaiguan5

31、.setText(KAIGUAN5_STATE_OPEN);280.btn_kaiguanAll.setText(KAIGUANALL_STATE_OPEN);281.else282.sendCommand(COMMAND_CLOSE_ALL);283.btn_kaiguan1.setText(KAIGUAN1_STATE_CLOSE);284.btn_kaiguan2.setText(KAIGUAN2_STATE_CLOSE);285.btn_kaiguan3.setText(KAIGUAN3_STATE_CLOSE);286.btn_kaiguan4.setText(KAIGUAN4_STATE_CLOSE);287.btn_kaiguan5.setText(KAIGUAN5_STATE_CLOSE);288.btn_kaiguanAll.setText(KAIGUANALL_STATE_CLOSE);289.290.break;291.case R.id.btn_kaiguan5_diandong:292.sendCommand(COMMAND_DIA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论