zigbeelibrary.jar的使用
zigbeelibrary.jar包是用来接收zigbee协调器发来的数据,或者通过协调器控制其网内的继电器
首先将jar包和so文件添加到工程,可参考
https://blog.csdn.net/qq_40733723/article/details/89032484
基本步骤
1、初始化ui
2、初始化zigbee
(1)打开串口
(2)如果串口打开成功则开启数据接收线程
3、初始化回调函数,由于子线程无法更新ui,需要发送消息给ui线程
4、创建Handler用来接收子线程发来的消息
xml代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="20dp"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="人体:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvPerson"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/textView1"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="150dp"android:layout_toRightOf="@id/tvPerson"android:text="可燃气体:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvFireGas"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/textView2"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="150dp"android:layout_toRightOf="@id/tvFireGas"android:text="空气质量:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvCo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/textView3"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginTop="20dp"android:text="火焰:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvFire"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView4"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginLeft="150dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvFire"android:text="光照:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvLight"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView5"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginLeft="150dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvLight"android:text="温度:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvTemp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView6"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginLeft="150dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvTemp"android:text="湿度:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvHum"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView7"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView8"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView5"android:layout_marginTop="20dp"android:text="继电器1"android:textColor="@android:color/black"android:textSize="25sp" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginTop="20dp"android:onClick="relay1Open"android:text="开"android:textColor="@android:color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button1"android:onClick="relay1Close"android:text="关"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView9"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView5"android:layout_marginLeft="50dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button2"android:text="继电器2"android:textColor="@android:color/black"android:textSize="25sp" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginLeft="50dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button2"android:onClick="relay2Open"android:text="开"android:textColor="@android:color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button3"android:onClick="relay2Close"android:text="关"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView10"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView5"android:layout_marginLeft="50dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button4"android:text="继电器3"android:textColor="@android:color/black"android:textSize="25sp" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginLeft="50dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button4"android:onClick="relay3Open"android:text="开"android:textColor="@android:color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/button6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView8"android:layout_marginTop="20dp"android:layout_toRightOf="@id/button5"android:onClick="relay3Close"android:text="关"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView11"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginTop="20dp"android:text="value1:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvValue1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView11"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView12"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginLeft="100dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvValue1"android:text="value2:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvValue2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView12"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView14"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginLeft="100dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvValue2"android:text="value3:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvValue3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView14"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView15"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginLeft="100dp"android:layout_marginTop="20dp"android:layout_toRightOf="@id/tvValue3"android:text="value4:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/tvValue4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:layout_marginTop="20dp"android:layout_toRightOf="@id/textView15"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView16"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView11"android:layout_marginTop="20dp"android:text="双联继电器1"android:textColor="@android:color/black"android:textSize="25sp" /><Buttonandroid:id="@+id/button7"android:onClick="dRealy1Open"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView16"android:text="开"android:textColor="@android:color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/button8"android:onClick="dRealy1Close"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView16"android:layout_toRightOf="@id/button7"android:text="关"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView17"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView11"android:layout_toRightOf="@id/textView16"android:layout_marginTop="20dp"android:text="双联继电器2"android:layout_marginLeft="200dp"android:textColor="@android:color/black"android:textSize="25sp" /><Buttonandroid:id="@+id/button9"android:onClick="dRealy2Open"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/button8"android:layout_below="@id/textView17"android:text="开"android:layout_alignLeft="@id/textView17"android:textColor="@android:color/black"android:textSize="30sp" /><Buttonandroid:id="@+id/button10"android:onClick="dRealy2Close"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView17"android:layout_toRightOf="@id/button9"android:text="关"android:textColor="@android:color/black"android:textSize="30sp" /></RelativeLayout>
主函数代码
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;import com.newland.zigbeelibrary.ZigBeeService;
import com.newland.zigbeelibrary.ZigBeeServiceAPI;
import com.newland.zigbeelibrary.ZigbeeHelper;
import com.newland.zigbeelibrary.response.OnCoResponse;
import com.newland.zigbeelibrary.response.OnFireResponse;
import com.newland.zigbeelibrary.response.OnFiregasResponse;
import com.newland.zigbeelibrary.response.OnHumResponse;
import com.newland.zigbeelibrary.response.OnLightResponse;
import com.newland.zigbeelibrary.response.OnPersonResponse;
import com.newland.zigbeelibrary.response.OnTemperatureResponse;
import com.newland.zigbeelibrary.response.OnValue1Response;
import com.newland.zigbeelibrary.response.OnValue2Response;
import com.newland.zigbeelibrary.response.OnValue3Response;
import com.newland.zigbeelibrary.response.OnValue4Response;public class MainActivity extends AppCompatActivity {//继电器开关命令private final static char Relay1Open[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x01, 0x00, 0x00, 0x01, 0x03};private final static char Relay1Close[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x01, 0x00, 0x00, 0x02, 0x02};private final static char Relay2Open[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x02, 0x00, 0x00, 0x01, 0x02};private final static char Relay2Close[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x02, 0x00, 0x00, 0x02, 0x01};private final static char Relay3Open[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x03, 0x00, 0x00, 0x01, 0x01};private final static char Relay3Close[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x03, 0x00, 0x00, 0x02, 0x00};private final static char Relay4Open[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x04, 0x00, 0x00, 0x11, 0x01};private final static char Relay4Close[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x04, 0x00, 0x00, 0x22, 0x00};private final static char Relay5Open[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x05, 0x00, 0x00, 0x11, 0x01};private final static char Relay5Close[] = new char[]{0xFF, 0xF5, 0x05,0x02, 0x05, 0x00, 0x00, 0x22, 0x00};private TextView tvPerson;private TextView tvFireGas;private TextView tvCo;private TextView tvFire;private TextView tvLight;private TextView tvTemp;private TextView tvHum;private TextView tvValue1;private TextView tvValue2;private TextView tvValue3;private TextView tvValue4;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initZigbee();initGetDataCallBack();}//找到ui控件private void initView() {tvPerson = findViewById(R.id.tvPerson);tvFireGas = findViewById(R.id.tvFireGas);tvCo = findViewById(R.id.tvCo);tvFire = findViewById(R.id.tvFire);tvLight = findViewById(R.id.tvLight);tvTemp = findViewById(R.id.tvTemp);tvHum = findViewById(R.id.tvHum);tvValue1 = findViewById(R.id.tvValue1);tvValue2 = findViewById(R.id.tvValue2);tvValue3 = findViewById(R.id.tvValue3);tvValue4 = findViewById(R.id.tvValue4);}//发送继电器1开指令public void relay1Open(View v) {//参数1,ZigbeeHelper.com为调用打开串口函数的返回值//参数2,Relay1Open为静态指令ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay1Open);}//发送继电器1关指令public void relay1Close(View v) {ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay1Close);}public void relay2Open(View v) {ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay2Open);}public void relay2Close(View v) {ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay2Close);}public void relay3OPen(View v) {ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay3Open);}public void relay3Close(View v) {ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com, Relay3Close);}public void dRealy1Open(View v){ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com,Relay4Open);}public void dRealy1Close(View v){ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com,Relay4Close);}public void dRealy2Open(View v){ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com,Relay5Open);}public void dRealy2Close(View v){ZigBeeServiceAPI.sendCMD(ZigbeeHelper.com,Relay5Close);}//接收到zigbee发来的数据后更新uiHandler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 1://人体传感器tvPerson.setText(msg.obj.toString());break;case 2://可燃气体传感器tvFireGas.setText(msg.obj.toString());break;case 3://空气质量传感器tvCo.setText(msg.obj.toString());break;case 4://火焰传感器tvFire.setText(msg.obj.toString());break;case 5://光照传感器tvLight.setText(msg.obj.toString());break;case 6://温度传感器tvTemp.setText(msg.obj.toString());break;case 7://湿度传感器tvHum.setText(msg.obj.toString());break;case 8://四通道1tvValue1.setText(msg.obj.toString());break;case 9://四通道2tvValue2.setText(msg.obj.toString());break;case 10://四通道3tvValue3.setText(msg.obj.toString());break;case 11://四通道4tvValue4.setText(msg.obj.toString());break;}}};//初始化zigbeeprivate void initZigbee() {/*** openPort打开接口* com,第n个接口* mode,模式,0表示使用串口,1表示使用usb* baudRate,波特率*/ZigBeeServiceAPI.openPort(1, 0, 5);//串口打开成功后,将会有一个大于0的数赋值给ZigbeeHelper类的属性com,否则为-1if (ZigbeeHelper.com < 0) {Toast.makeText(this, "串口打开失败", Toast.LENGTH_SHORT).show();return;}//打开数据接收线程ZigBeeService service = new ZigBeeService();service.start();}//初始化回调函数private void initGetDataCallBack() {ZigBeeServiceAPI.getPerson("person", new OnPersonResponse() {@Overridepublic void onValue(int i) {}@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 1;msg.obj = s;//发送消息给ui线程handler.sendMessage(msg);}});ZigBeeServiceAPI.getFiregas("firegas", new OnFiregasResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 2;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getCo("co", new OnCoResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 3;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getFire("fire", new OnFireResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 4;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getLight("light", new OnLightResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 5;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getTemperature("temp", new OnTemperatureResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 6;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getHum("hum", new OnHumResponse() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 7;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});//zigbee四通道数据回调函数初始化ZigBeeServiceAPI.getValue1("value1", new OnValue1Response() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 8;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getValue2("value2", new OnValue2Response() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 9;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getValue3("value3", new OnValue3Response() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 10;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});ZigBeeServiceAPI.getValue4("value4", new OnValue4Response() {@Overridepublic void onValue(String s) {Message msg = Message.obtain();msg.what = 11;msg.obj = s;handler.sendMessage(msg);}@Overridepublic void onValue(double v) {}});}@Overrideprotected void onDestroy() {ZigBeeServiceAPI.closeUart();super.onDestroy();}}
zigbeelibrary.jar的使用相关推荐
- 手动将web项目的class文件打成jar包,手动打jar包,java -cvf,IDE打包底层指令
手动将web项目的class文件打成jar包. 我们的项目在使用IDE进行编译后,在项目的target目录下将会生成class文件.我们可以将class文件打成jar包. 使用的到命令为: 在targ ...
- 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包
假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...
- jar包升级部署到服务器详细流程,将服务部署在linux中
假设你已经准备好以下东西,即可进行服务部署 一台服务器(云服务器或虚拟机皆可) 已安装好的jdk 1.8 + 的环境(可自行百度) 打好的jar包(maven打jar包) 1. 在服务器中新建好你的项 ...
- jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理
准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...
- 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别???? 首先,根本原因:这是因为你的pom.xml中的项 ...
- 手动将jar包导入pom依赖,让jar包适配本地maven项目
前言: Oracle对maven很久没有更新依赖,虽然19年更新了一版,但pom引入一直有错误. 我用的是oralce 12的依赖,虽然有jar包,但是依赖和pom没有适配,项目打包的时候还要去中央仓 ...
- linux启动,重启,停止 jar,.sh脚本
linux启动,重启,停止 jar,.sh脚本 #配置jar名称 APP_NAME=receiver.jar#使用说明,用来提示输入参数 usage() { echo "Usage: sh ...
- Intellij IDEA 添加jar包
二.通过Modules的Dependencies添加:(推荐) 1.打开 File -> Project Structure (Ctrl + Shift + Alt + S) 2.单击 Mo ...
- Android studio 导入jar 文件
1 网上下载的jar 文件 导入到lib 里面 如下 如果鼠标左键不能打开说明还没有依赖 2 鼠标右键点击查看下面 Add As Library 3 点击确定 这样就导入第三方的jar 文件了 导入 ...
- Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
今天从git导入demo 报错 Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version ...
最新文章
- html引入css webpack_webpack4(一):基本配置、html和css的处理
- 2019.03.18 连接my sql
- 如何获取58上真实号码_如何获取Apollo上项目下的所有namespace?
- mvc4 html.dropdownlist,ASP.NET MVC4中使用Html.DropDownListFor的方法示例
- shell(一)——概述、变量、运算符
- python单选题库答案_大学慕课2020用Python玩转数据题库及答案
- 【电脑帮助】解决Wind10系统spacedesk程序开机自启动的问题
- python开发自动化测试工具_Moler首页、文档和下载 - Python 编写真的自动化测试工具包 - OSCHINA - 中文开源技术交流社区...
- Android packageManager.setComponentEnabledSetting()和setApplicationEnabledSetting()方法介绍
- linux安装iscsi设备,linux系统下安装配置iSCSI教程
- 解决No instances available for XXX
- python如何打开excel表格_python怎么读取excel表格
- 八百八十岁也没活明白
- git color 让git有颜色
- linux 街机列表,linux下街机模拟器联机
- 肖秀荣真的是“yyds”吗?会被反押题吗?今年还会押中原题吗
- word2013插入excel对象报错_excel插入对象文件夹 Excel2013中插入对象文件的方法
- 短视频寒冬,抖音、美拍、快手等将何去何从?
- 弃百万年薪加入创业期阿里拿500元,他证明选择和努力同样重要
- 如何输出100以内的偶数、奇数、质数