还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《物联网系统设计》试题库
一、单选题
1、关于ESP32硬件所使用的Arduino开发环境安装,说法错误的是?A.官网下载地址https:〃www.arduino.cc/en/softwareB.需要在文件-〉首选项中,输入esp32开发板的管理器网址C.只能在开发板管理器中在线下载esp32内核包安装,不能离线下载内核包安装D.需要将相关的驱动库文件放在安装目录的libraries文件夹中,如Arduinojson和pubsubclient,才能使用Json解析、MQTT通信功能
2、以下关于Arduino语言,说法正确的是?CA.使用Python编写程序B.没有引进面向对象的思想C.通常所说的Arduino语言,是指Arduino核心库文件提供的各种API的集合D.通过封装好的API,可以增强开发者对繁复寄存器配置的深入理解
3、关于Arduino的程序结构,以下说法正确的是?BA.Arduino程序中需要编写main函数B.Arduino使用setup和loop两个函数C.setup函数用来完成Arduino的初始化配置,会执行多次D.loop函数可以驱动各种模块、采集数据等,只执行一次
4、任何复杂的算法都可以由三种结构组成,以下不属于三种结构的是?DA.顺序B.循环C.选择D.反向
5、Arduino程序中,setup函数运行的次数AA.1B.2C.3D.无数次
6、Arduino程序中,以下哪一项创建数组的实例是错误的?Cthis表示什么?A.当前布局B.当前时间C.当前活动D.以上都不是45>关于线性布局中layout_weight属性描述错误的是?CA.为视图分配权重B.通过属性值确定占多大比重的空间C.属性值可以为小于零的数D.如果要使用这个属性,那么通常会将android:width设为Odp
46、Android会为每个图像指定一个ID,形式为()BA.R.app.img nameB.R.drawable,img nameC.R.img_nameD.R.android,img name
47、EditText哪个属性可以限制输入类型?BA.android:textColorHintB.android:inputTypeC.android:maxLengthD.android:singleLine
48、关于控件宽高值的单位,以下说法错误的是?A.px代表像素B.pt代表磅数C.dp是一种基于屏幕密度的抽象单位D.sp代表不可伸缩像素
49、关于文本框控件,以下说法错误的是?DA.控件名称为TextViewB.用于显示文本信息C.android:text用于设置文本内容D.android:textSize用于设置文字大小,推荐单位为dp
50、关于Button控件,以下说法错误的是?CA.用于响应用户的一系列点击事件B.点击方式共有三种C.不需要设置android:id属性D.需要在对应的Activity中实现逻辑
51、关于Android系统的样式和主题,以下描述错误的是?BA.样式是针对某个View,例如TextView控件B.实际开发中,不能自己创建样式文件C.主题是针对整个Activity界面或整个应用程序D.当主题和样式中的属性发生冲突时,样式的优先级要高于主题D.当主题和样式中的属性发生冲突时,样式的优先级要低于主题
52、在哪里可以设置应用主题?AA.AndroidManifest.xmlB.build,gradleC.settings,gradleD.MainActivity.java
53、关于Android中的ViewBinding框架,以下说法错误的是?CA.ViewBinding框架会为每个xml布局生成一个绑定类B.绑定类的实例包含对在相应布局中具有ID的所有视图的直接引用C.ViewBinding绑定类会将XML文件的名称转换为小驼峰名称,并在末尾添加“Binding”一词D.通过ViewBinding绑定类.控件ID,找到需要的控件
54、关与OkHttp框架的同步请求和异步请求,以下说法错误的是?BA.前三步一样,包括创建OkHttpClient对象,构建Request对象,创建Call对象B.同步请求和异步请求区别是第四步执行Call对象的方法也一样C.同步请求的第四步调用Call对象的execute方法,,直接请求D.异步请求的第四步调用Call对象的enqueue方法,将请求加入到队列中
55、关与OkHttp框架的同步请求和异步请求,以下说法错误的是?DA.第一步都是创建OkHttpClient对象B.第二步都是构建Request对象C.第三步都是创建Call对象D.同步请求和异步请求的第四步都是调用Call对象的execute方法
56、关与OkHttp框架的GET请求和POST请求,说法错误的是?DA.GET请求参数直接拼接在url后面,第一个参数用?连接,后面的每一个参数都用连接B.POST请求可将RequestBody对象作为post方法的参数C.相对而言,GET安全性低D.相对而言,POST安全性低
57、关与OkHttp框架的GET请求和POST请求,说法错误的是?CA.GET请求参数直接拼接在url后面,第一个参数用?连接,后面的每一个参数都用连接B.POST请求可将RequestBody对象作为post方法的参数C.相对而言,GET安全性高D.相对而言,POST安全性高
58、下面哪个方法不属于活动生命周期中的方法?DA.onCreate B.onStart C.onResume D.startActivity59Android是如何组织Activity的DA.以树型方式组织ActivityB.以链式方式组织ActivityC.以堆的方式组织ActivityD.以栈的方式组织Activity60关于Android中的Activity,以下描述错误的是?DA.Activity组件为用户提供可视化界面及操作B.一个应用程序通常包含多个Activity,每个Activity负责管理一个用户界面C.一个Activity可以添加多个控件,每个控件负责实现不同功能D.只有第一个Activity需要在AndroidManifest.xml(清单文件)中注册
61、关于Activity的生命周期,以下描述错误的是?DA.生命周期指一个Activity从创建到销毁的全过程B.Activity的生命周期状态共有5种启动、运行、暂停、停止、销毁C.在暂停状态下,Activity对用户来讲仍然可见D.Activity在销毁状态,不会被清理出内存
62、关于Activity之间的跳转,以下说法错误的是?DA.Activity之间的跳转需要用到IntentB.Intent可以指定当前组件要执行的动作C.Intent可以实现在不同组件之间的数据传递D.隐式意图需要明确指定要开启哪个目标组件
63、关于Android中的ViewBinding框架,以下说法正确的是?BA.ViewBinding框架只会为一个xml布局生成绑定类B.绑定类的实例包含对在相应布局中具有ID的所有视图的直接引用C.ViewBinding绑定类会将XML文件的名称转换为小驼峰名称,并在末尾添加“Binding”一词D.通过ViewBinding绑定类->控件ID,找到需要的控件
64、关于线程的说法不正确的是DA.在android中,我们可以在主线程中,创建一个新的线程B.创建的Handler对象,它隶属于创建它的线程C.新线程可以和Handler共同使用D.在创建的新线程中,它可以操作UI组件
65、关于Android的线程,以下说法错误的是?BA.应用程序启动时,Android会开启一个主线程,即UI线程B.UI线程适合执行耗时操作,比如访问网络读取数据C.访问网络读取数据的操作可以放在子线程中进行D.子线程执行耗时操作后,可以更新界面UL但属于不规范操作
66、关于Android的Handler机制,以下说法错误的是?AA.Android提供了一种同步回调机制Handler,来负责与子线程通信B.Handler机制包括4个关键对象Message、Handler、MessageQueue>LooperC.Message是在线程之间传递的消息D.一般使用Handler对象的sendMessage方法发送消息,并传递到handlerMessage方法中67>关于Handler的Message对象,以下说法错误的是?DA.Message是在线程之间传递的消息B.Message的what字段携带整型数据C.Message的obj字段携带一个Object对象D.如果要将Message的obj字段不能被转换为字符串68>关于Handler的方法,以下描述错误的是?A.一般使用Handler对象的sendMessage方法发送消息DB.消息会发送到handlerMessage方法中进行处理C.handlerMessage会判断what字段的值进行处理D.只能通过switch case语句对what字段的值进行判断处理
69、关于Android中的MQTT配置,说法正确的是?BA.两个不同APP中的的MQTT客户端id可以重复B.APP和网关中的MQTT客户端id不能重复C.APP和网关中的MQTT客户端id可以重复D.一个客户端不允许订阅并接受自己发布的消息
70、分析以下Android工程的函数,说法正确的是?Bpublic voiddisconnect{try{ifclient!=null{ifclient.isConnectedclient,unsubscribemqtt_sub_topic;client,disconnect;client,close;client=null;catch Exceptione{e.printStackTrace;}}A.如果页面跳转,不应该调用此函数B.函数功能是取消订阅,断开连接,关闭MQTT客户端C.如果页面跳转,不调用此函数,重新进入页面会不再开启一个重名客户端D.如果页面跳转,不调用此函数,重新进入页面会再开启一个不重名客户端
71、关于MQTT消息的接收,以下说法正确的是?CA.如果要接受消息,不以订阅消息为前提B.消息是其它客户端直接发过来的C.消息是代理服务器转发过来的D.客户端不可以订阅自己发布的消息
72、字符串{,,Temp,/16},如果要通过substring方法截取出Temp〃字段的值,共有2个参数,其中起始索引值和结束索引值分别是多少?CA.9,9B.9,10C.9,11D.10,
1173、Web技术的架构是以下哪一类AA.B/S架构B.A/S架构C.D/S架构D.C/S架构
74、关于HTTP协议的介绍,错误的是?BA、全称是Hyper TextTransfer ProtocolB.HTTP请求常用的服务器端口是12830C.客户端向服务器端发送的请求,称为HTTP请求D.规定了浏览器和服务器之间的互相通信的规则
75、关于HTTP请求方式,以下描述错误的是?DA.常用的两种方式是GET和POSTB.GET方式提交的参数跟在请求URL后面C.POST方式提交的参数跟在请求实体中D.GET方式要比POST方式安全,因为用户在在浏览器中看不到向服务器提交的请求参数
76、以下关于JSON数据描述错误的是?BA.JSON即JavaScript ObjectNotation(对象表示法)B.是一种重量级的数据交换格式C.是基于纯文本的数据格式D.包括JSON对象和JSON数组2中数据结构
77、以下那种数据满足JSON对象结构?AA.{“city〃:〃beijing,temp〃:21}B.[〃city〃:〃beijing,temp〃:21]C.{〃city〃:〃beijing〃;〃temp〃:21}D.[〃city〃:〃beijing〃;〃temp〃:21]
78、以下那种数据满足JSON数组结构?DA.{{〃name〃〃北京〃,〃id〃〃101010100〃};{〃name〃〃朝阳〃,〃id〃:z/101010300z,}B.[{〃name〃〃北京〃,〃id〃〃101010100〃};『name〃〃朝阳〃,〃id〃/z101010300,z}]C.{{“name〃〃北京〃,〃id〃“101010100〃},{“name〃〃朝阳〃,〃id〃z/101010300z/}D.[「name〃〃北京〃,〃id〃〃101010100〃},「name〃〃朝阳〃,〃id〃z/101010300z/}]
79、以下那种数据是JSON数组和JSON对象的正确组合A.{{〃name〃:〃北京〃;〃id〃“101010100〃},{name:〃朝阳〃;〃id〃:“101010300〃}}B.[{“name〃〃北京〃;〃id〃“101010100〃},{“name〃〃朝阳〃;〃id〃“101010300〃}]C.({“name〃〃北京〃,〃id〃:“101010100〃};{“name〃〃朝阳〃,〃id〃:“101010300〃}}D.[{“name〃〃北京〃,〃id〃“101010100〃},{“name〃〃朝阳〃,〃id〃“101010300〃}]
80、关于JS0N对象描述错误的是?DA.以〃{〃开始,以〃}〃结束B.键值对之间用〃分割C.键和值之间用〃:〃分割D.值不能是JS0N对象
81、关于JS0N数组描述错误的是?CA.以〃[〃开始,以〃]〃结束B.成员之间用〃,〃分割C.成员不能是JSON对象D.JS0N数组可以作为JS0N对象某个键的值
82、关于JS0N数据的解析,可以使用optStringO方法,如获取JSONObject里面某个字段(键)的值、获取JSONArray里面某个元素(与索引对应)的值,以下说法错误的是?CA、获取JSONObject某个键的值,0Ptstring()方法的参数是键B.获取JSONArray某个元素的值,optStringO方法的参数是索引C.0Ptstring方法的参数如果是键,参数的类型应该整型D.0Ptstring方法的参数如果是是索引,参数的类型应该整型83^关于JSON数据的解析,可以使用optStringO方法,如获取JSONObject里面某个字段(键)的值、获取JSONArray里面某个元素(与索引对应)的值,以下说法错误的是?DA、获取JSONObject某个键的值,optStringO方法的参数是键B.获取JSONArray某个元素的值,optStringO方法的参数是索引C.0Ptstring方法的参数如果是键,参数的类型应该字符串D.0Ptstring方法的参数如果是是索引,参数的类型应该浮点型
84、安卓使用的数据库叫什么名字?CA.MySQLB.SQLServerC.SQLiteD.MongoDB
85、关于在Windows环境下NodeRed的部署,以下说法错误的是?DA.需要先安装Node,js,再安装Node-RedB.可输入npm install-g-unsafe-perm node-red安装NodeRedC.在cmd输入node-red,即可启动NodeRedD.本机登录,浏览器输入
127.
0.器l:80/ui,即可登录NodeRed
86、关于NodeRed的debug节点,以下说法错误的是?DA.如果输出为msg.payload,会打印输入节点传入的pay loadB.会在debug窗口打印调试信息C.如果payload是JSON对象,可通过msg.payload.字段名,获取字段的值D.可勾选右侧的单选框,使节点有效
87、NodeRed的Dashboard里面,Web页面分为3级,以下不属于的是?DA.tab(菜单)B.group(组)C.spacer(部件)D.info(索引)
88、如果msg.payload是JSON对象,关于如何解析字段的值,以下说法正确的是?AA.通过msg.payload.字段名B.通过msg.payload-〉字段名C.通过msg-payload[〃字段名”]D.通过msg-payload-〉字段名
89、如果需要在Web页面展示上报的MQTT温度消息关于解析过程,以下说法正确的是?BA.直接解析展示B.应该先解析判断字段值是否为空,非空的话再次解析展示C.解析方法只能通过msg.payload.字段名D.解析方法只能通过msg.pay load[〃字段名〃]
90、查看所有数据库的命令是()BA.SHOW DATABASE;B.SHOW DATABASES;C.DESCRIBE TABLES;D.DESCRIBE TABLE;
91、查看商品类别表t_goods_category的表结构信息的命令是()BA.SHOW t_goods_category;B.DESCRIBE t_goods_category;C.SELECT*FROM t_goods_category;D.ALTER*FROM t_goods_category;
92、按价格降序排列检索出商品列表中的所有信息,下面SQL语句正确的是()oCA.SELECT*FROM商品列表ORDERBY价格;B.SELECT*FROM商品列表GROUPBY价格;C.SELECT*FROM商品列表ORDER BY价格DESC;D.SELECT*FROM商品列表ORDERBY价格;
93、进行MySQL的配置,最重要的是修改()文件DA.lib.iniB.bin.iniC.my-template.iniD.my.ini
94、可以通过()命令来启动MySQL服务A.NET STOPMySQL80A.arrayl
[5];B.array2[]={1,2,3,4,5};C.array3
[6]=[1,3,5,7,9,11];D.char array4
[7]=ESP32”;
7、在Arduino编程中,设置数字引脚的工作方式,需要使用哪个函数?CA.setMode B.DigitalMode C.pinMode D.digitalMode
8、关于ESP32板上的输入/输出引脚,描述错误的是AA.各个引脚的功能都相同,可以随便选B.不是所有模拟量的输出,都可用PWM引脚功能实现C.模拟输入引脚可以作为数字输入引脚,反之不行D.输入模式下,可以通过10来读取外部数字信号
9、关于PWM的描述,错误的是BA.PWM全称是PULSE WIDTHMODULATIONB.PWM是模拟量转换为数字输出的一种实现方式C.PWM中文是脉冲宽度调制D.PWM输出占空比可调的方波
10、使用ESP32实现点亮LED时,语句“digitalwrite25,high;是什么意思?AA.Arduino开发板上的25号引脚输出高电平B.Arduino开发板上的25号引脚输出电平C.Arduino开发板上的25号引脚输入高电平D.Arduino开发板上的25号引脚输入低电平H、引脚的初始状态设置应该写在什么地方?AA.setup函数中B.loopO函数中C.自定义的子函数user_function中B.NET STARTMySQL80C.NET STARTD.NET STOP
95、为了避免不支持中文字符串查询或者发生中文字符串乱码等问题,不应该考虑使用()字符集BA.gb2312B.latinlC.gbkD.utf8A.SELECT姓名FROM成绩表ORDER BY科学DESC LIMIT1,4;B.SELECT姓名FROM成绩表ORDER BY科学DESC LIMIT1,3;C.SELECT姓名FROM成绩表ORDER BY科学DESC LIMIT0,4;D.SELECT姓名FROM成绩表ORDER BY科学DESC LIMIT0,3;
96、在成绩表中,查询数学成绩第二名到第五名的学生姓名,正确的语句是()
97、在一个查询中嵌套一个或多个查询,被嵌套的查询称为()o AA.子查询B.主查询C.相关查询D.非相关查询
98、安装MySQL数据库后,系统自动创建的数据库不包括()CA.performance_schemaB.informationschemaC.chooseD.mysql
99、SQL语言中,删除一个数据库对象的命令是()AA.DROPB.DELETEC.CLEARD.REMOVE
100、关于MySQL中的字符串类型,说法错误的是?DA.CHAR和VARCHAR均用于存储较短的字符串B.CHAR类型的长度固定C.VARCHAR类型的长度可变D.在不明确字段需要多少个字符时,推荐使用CHAR类型
101、开始,可以支持JSON数据类型了,以下说法错误的是?BA.MySQL支持JSON数组和JSON对象2种格式B.JSON数组只能存放字符串类型的数据C.JSON数组以〃[〃开始,以〃]〃结束D.JSON数组的2个数据之间使用〃,〃隔开
102、关于使用SQL语句创建表,说法错误的是?CA.不同字段之间的定义使用〃,〃隔开B.最后一个字段后面没有〃」C.表名可以与数据库的关键字重名D.字段的数据类型需要指定
103、关于主键约束,以下说法错误的是?CA.主键约束即primary keyB.主键约束可以唯一标识一条记录C.设置为主键的字段取值可以重复D.设置为主键的字段取值不能为空
104、关于非空约束,以下说法正确的是?CA.空字符串〃〃就是NULLB.0就是NULLC.非空约束的关键字是“not nullD.不能为表中的多个字段添加非空约束
105、关于自增约束,以下说法正确的是?CA.自增约束可以使表中的某个字段的值自动减少B.一个表中可以有多个自增字段C.自增约束通常配合主键使用,并且只适用于整数类型D.一般情况下,自增约束字段的值从0开始,每增加一条记录值加
1106、关于对查询结果进行排序,SQL语法为select column_namel,column_name2,…fromtable_name orderby order_name asc|desc];以下说法错误的是()DA.order_name表示按照该字段进行排序B.asc代表升序C.desc代表降序D.如果没有指定排序,默认按照降序排序
107、关于MySQL支持的比较运算符,以下说法正确的是?BA.〃==〃表示等于B.〃=〃表示等于C.〃◊〃表示不等于D.〃!=〃表示不等于
108、使用视图的原因,以下说法正确的是?DA.可以让用户更关心表的结构、查询条件等B.用户的权限会更高,访问数据库更加自由C.提供了一定程度的数据逻辑独立性D.在修改基础表字段时,不需要修改视图
109、关于Node-RED使用QQ邮件服务器发送邮件配置,说法错误的是?DA.发送邮件节点配置包括收件箱地址,邮件服务器和端口号,发件箱地址和授权码B.需要在QQ邮箱中设置IMAP(接收)/SMTP(发送)服务C.使用SMTP的SSL端口为465D.NodeRed的发送邮件节点中的password,指的是发件箱的邮箱登陆密码
110、关于Node-RED使用QQ邮件服务器发送邮件配置,说法错误的是?CA.node-red的发送邮件节点,把msg.payload作为邮件内容,把msg.topic作为邮件主题B.需要在QQ邮箱中设置IMAP(接收)/SMTP(发送)服务C.使用SMTP的SSL端口为466D.NodeRed的发送邮件节点中的password,指的是发件箱的授权码
二、填空题
1、Arduino软件部分是一套程序开发环境,通过在中编写程序代码IDE
2、Arduino软件以Precessing,avr-gcc及其他开源软件为基础,其语法与相似,将常用的一些AVR函数进行封装,使用起来非常方便C/C++
3、Arduino的标准程序必须包含2个函数,其中函数是主要用于初始化,函数是一个循环函数setup,loop
4、数组中第一个数据的索引为
05、模拟输入接口可将模拟量转换为,便于单片机进行处理数字量
6、Arduino函数analogWrite pin,value,其中参数value是给一个模拟接口写入模拟值,范围为0-
2557、波特率越,说明串口通信的速率越高,需要注意的是,通信双方设置的波特率要大,相同
8、Serial,read函数的作用是,从串口缓冲区读取传入串口的数据,调用一次只能读取的数据,而且会将读取的数据从缓冲区删除一个字节
9、当光照越强时,光敏电阻器的阻值就越低
10、DHT11温湿度传感器的分辨率为湿度%RH,温度℃o1,
111、DHT11数字信号线在空闲状态下为电平高
12、ESP32的UART0的TX引脚为,RX引脚为,在Arduino程序中的对象名称为pinl,pin3,Serial
13、对按键的查询方式检测,需要考虑干扰情况,即延时;再考虑按键长按的情况,即等待消抖,释放
14.创建工程时,可以指定工程最的SDK版本小
15、相对独立的程序块之间必须加上空行
16、在线性布局中,当控件排列时,显示顺序依次为从左到右;当控件排列时,显示顺序为从上到下水平,垂直
17.用于显示图片组件是ImageView18•表示按钮的组件是Button
19.属性可以设置TextView中的文本显示的大小android:textSize
20、调用构造器对象的方法创建AlertDialog对象create
21、AlertDialog对象调用方法,让对话框在界面上显示show
22、Android使用来实现消息的传递handler
23、物联网的是物联网应用开发的一个挑战碎片化
24、Java集合的Iterator方法中,hasNext方法用来查看是否有下一个元素,有则返回,没有则返回true,false
25、MQTT三种不同层次QoS,其中QoS表示接收方确保能收到而且只收到一次
226、ESP32进行WiFi连接所用的频段为
2.4GHz
27、MQTT客户端要接收消息,必须要先消息订阅28NodeRed的Web页面分为3级,分别是菜单,组group,部件tab,spacer
29、唯一性约束用于保证表中某个字段的值不重复且值不能为,一个表能定义多个唯一性约束null
30、连接查询中,使用指定两个表的连接字段ON
31、MySQL提供的数据类型有,,,数值类型,复合类型,字符串类型,日期类型
32、SELECT对查询结果进行排序的方式有种
233、要查询一个表的所有字段数据,除了写出所有字段名之外,还可以使用匹配*
34、自增约束可以使表中的某个字段的值自动,自增约束通常配合主键使用,并且只适用于类型增加,整数
35、MySQL中,当把’‘当做字符输入时,要在它的前面加上〃\〃,该操作称为处理转义
36、Node-RED使用QQ邮件服务器发送邮件,使用SMTP的SSL端口为46537Node-RED使用QQ邮件服务器发送邮件,发送邮件节点中的password,指的是发件箱的授权码
三、程序设计题
1、编写代码,实现LED闪烁1引脚为26;2采用宏定义的方法,弓|脚别名LED_PINo答案ftdefine LED_PIN26void setup{pinModeLED_PIN,OUTPUT;}void loop{digitalWriteLED_PIN,HIGH;delay1000;digitalWriteLED_PIN,LOW;delay1000;}
2、串口处理函数SerialEvent,代码如下void serialEvent{while Serial,available{//get thenew byte:char inChar=charSerial.read;//add itto theinputString:inputString+=inChar;//if theincoming characteris a newline,set aflag sothe mainloop can//do somethingabout it:if inChar==\n{stringComplete=true;修改程序,实现大写变小写,以及小写变大写void serialEvent{while Serial,available{//get thenew byte:char inChar二charSerial.read;ifinChar=AinChar=Z{inChar=inChar+32;}else ifinChar=5a5inChar=z{inChar=inChar-32;}//add itto theinputString:inputString+=inChar;//if theincoming characteris anewline,set aflag sothe mainloop can//do somethingabout it:if inChar二二\n{stringComplete=true;}}}
3、串口接收json对象格式数据,本例对由一个键值对组成的json对象数据进行解析,期望串口收到{LightStatus”:1},点亮灯;收到析LightStatus”到},熄灭灯代码,代码片段如下〃引脚定义ttdefine LIGHT25〃产品标识符String Identifier=〃LightStatus〃;void loopO{//print thestring whenanewlinearrives:if stringComplete{Serial,printininputString;StaticJsonBuffer200jsonBuffer;JsonObject root=jsonBuffer.parseObjectinputString;if!root,success{Serial,printin/zparseObjectfailed;inputString=〃〃;stringComplete=false;return;const char*val=root[Identifier];ifval!=NULL{const uintl6_t LightStatus=root[Identifier];if LightStatus==1{digitalWriteLIGHT,HIGH;}else{digitalWriteLIGHT,LOW;}//clear thestring:inputString=〃〃;stringComplete=false;}serialEvent;}如果LED接在pin26,期望收到的串口数据〃{“Light〃1}〃实现关关灯,〃{“Light”实现开灯,如何修改程序?〃引脚定义ftdefine LIGHT26〃产品标识符String Identifier=Light”;const uintl6_t Light=root[Identifier];if Light==0{digitalWriteLIGHT,HIGH;}else{digitalWriteLIGHT,LOW;}}
4、串口0处理函数SerialEvent,代码如下void serialEvent{while Serial,available{//get thenew byte:char inChar=charSerial.read;//add itto theinputString:inputString+=inChar;//if theincoming characteris anewline,set aflag sothe mainloop can//do somethingabout it:if inChar==\n{stringComplete=true;}}}如果使用串口2,编写事件处理函数SerialEvent答案void seria12Event{while Serial
2.available{//get thenew byte:char inChar=charSerial
2.read;//add itto theinputString:inputString+=inChar;//if theincoming characteris anewline,set aflag sothe mainloop can//do somethingabout it:if inChar==\n{stringComplete=true;}}}
5、以下实现了对话框功能final EditTextet=new EditTextMainActivity.this;et.setText〃很好〃;AlertDialog alertDialog=new AlertDialog.BuilderMainActivity.this,seticonR.drawable,open〃设置图标.setTitle〃请提交建议〃〃设置标题.setViewet〃设置输入框,setPositiveButton〃确定〃,new Dialoginterface.OnClickListener{©Overridepublic voidonClickDialoginterface dialoginterface,int iString editText=et.getText.toString;//获取输入内容Toast.makeTextMainActivity.this,“editText:〃+editText,Toast.LENGTH SHORT.show;D.A、B、C均可
12、通过语句〃analogWrite5,50;〃产生的PWM信号的占空比为A.
19.6%B.
39.2%C.0%D.5%
13、使用ESP32实现点亮LED时,语句“delay500”是什么意思?BA.延时500秒B.延时500毫秒C延时500微秒D.延时500纳秒
14、关于ESP32的串口,以下说法错误的是?BA.ESP32共有3个串口B.其中UART0在Arduino程序中的对象名是SerialOC.UARTO经常用来打印调试信息使用D.UARTO的发送数据引脚为pinl
15、关于ESP32的串口,以下说法正确的是?DA.ESP32共有2个串口B.其中UARTO在Arduino程序中的对象名是SerialOC.UART1经常用来打印调试信息使用D.UARTO的接收数据引脚为pin316>关于语句^Serial,begin115200;下列说法正确的是AA.所使用的开发板在一秒钟内发送了115200比特的数据B.所使用的开发板在一秒钟内发送了115200字节的数据C.所使用的开发板在一包内发送了115200比特的数据D.所使用的开发板在一包内发送了115200字节的数据17>关于Arduino中的串口打印函数,说法正确的是?AA.Serial,print通过UARTO输出数据,打印的值是任意类型的B.Serial,print通过UARTO输出数据,后面会自动带一个换行符}・setNegativeButton〃取肖〃,null,show;修改代码,将对话框中内容区默认文本内容改为〃请输入建议〃,标题改为〃建议〃,PositiveButton的文本改为〃提交〃参考答案final EditTextet=new EditTextMainActivity.this;et.setText请输入建议“;AlertDialog alertDialog=new AlertDialog.Builder MainActivity.this,seticon R.drawable,open〃设置图标.setTitle〃建议〃〃设置标题.setViewet〃设置输入框,setPositiveButton〃提交〃,new Dialoginterface.OnClickListener{©Overridepublic voidonClickDialoginterface dialoginterface,int i{StringeditText=et.getText.toString;〃获取输入内容Toast.makeTextMainActivity.this,“editText:〃+editText,Toast.LENGTH_SHORT.show;}・setNegativeButton〃取肖〃,null.show;
6、以下是同步请求GET方法的函数//同步请求函数private voidtestGet_s{〃创建请求对象Request request=new Request.Builder・url^https://devapi.qweather.com/v7/weather/now1ocation=101010100key=d7ac748d2e2447cdb8d42el3451a646d.build;//开启子线程,因操作耗时不能在主线程中执行new ThreadnewRunnable{©Overridepublic voidrun{try{//创建响应对象,客户端的newCall就是发起请求的方法,execute是直接执行即同步请求,返回即是响应Response response=okHttpClient.newCallrequest.execute;//获取响应的数据部分String result二response.body.string;//在主线程更新UI,即在textViewl文本框中显示runOnUiThreadnew Runnable{©Overridepublic voidrun{binding.textViewl.setTextresult;};}catch lOExceptione{e.printStackTrace;}}.start;}将API修改为.qweather.com/v2/city/1ookup1ocation=%E5%8C%97%E4%BA%ACkey=d7ac748d2e2447cdb8d42el3451a646d编写程序,并将结果展示出来参考代码〃同步请求函数private voidtestGet_s{〃创建请求对象Request request=new Request.Builder・url/z.qweather.com/v7/weather/nowlocation=101010100key=d7ac748d2e2447cdb8d42el3451a646d/z,build;〃开启子线程,因操作耗时不能在主线程中执行new ThreadnewRunnable{©Overridepublic voidrun{try〃创建响应对象,客户端的newCall就是发起请求的方法,execute是直接执行即同步请求,返回即是响应Response response=okHttpClient.newCallrequest.execute;〃获取响应的数据部分String result=response,body.string;〃在主线程更新UI,即在textViewl文本框中显示runOnUiThreadnewRunnable{©Overridepublic voidrun{binding.textViewl.setTextresult;};}catch lOExceptione{e.printStackTrace;},start;
7、以下代码功能是判断收到的字符串里面有没有字符串〃LedStatus〃,即APP是否要设置LED灯;有的话,然后用字符串截取函数取出LedStatus的值,再控制灯的亮灭void callbackchar*topic,byte*payload,unsigned intlen{String msg=〃〃;String LedStatus二〃〃;Serial,printRecevice[〃;Serial,printtopic;Serial,print〃]〃;for inti=0;ilen;i++{msg+=char payload[i];//msg即收到的消息内容Serial,printinmsg;if msg.indexOf LedStatus{〃判断消息中是否有字符串LedStatus,即APP是否要设置LED灯〃通过字符串截取函数取出LedStatus的值,是字符串类型LedStatus=msg.substringmsg.indexOf〃LedStatus\〃:〃+11,msg.indexOf〃}〃;digitalWriteLED_PIN,LedStatus.tolnt;}}假如APP发送的命令为〃{“Led〃1}〃,或{“Led〃0},ESP32收到后,控制LED亮灭,修改代码参考答案void callbackchar*topic,byte*payload,unsigned intlen{String msg=〃〃;String LedStatus=Serial,printRecevice[〃;Serial,print topic;Serial,print〃]〃;for inti=0;ilen;i++{msg+=charpayload[i];//msg即收到的消息内容}Serial,printinmsg;if msg.indexOf,,Led,,{〃判断消息中是否有字符串〃Led〃,即APP是否要设置LED灯〃通过字符串截取函数取出Led的值,是字符串类型LedStatus=msg.substringmsg.indexOf〃Led\〃:〃+5,msg.indexOf〃}〃;digitalWriteLED PIN,LedStatus.tolnt;
8、根据API返回的数据,编写了获取北京城市ID的关键代码:回☆®--C ftgeoapi.qweather.com/v2/city/lookuplocation=Jb^...□X8de:200,location:[name:北京,Tat:
39.90499,Ton:
116.40529,adm2:北京,acted:北京相,“country:中由,tz:Asia/Shanghaiutc0ffset+08:00,isDst:0,type:city,rank:T0,fxLink http:〃hfx.link/2axl,{name:海淀,id:101010200,Tat”
39.95607,Ton”:T
16.31032,acto2:北京,acted”:北京市”「country中由,tz:Asia7shanghai,utcOffset:+08:00,isDsttype:city,rankfxLink:.link/2ayl},name:朝阳〃,id T01010300,Tat
39.92149,Ton”T
16.48641,adnfi:北京一adml:北京市,country中由,tz AsiShanghai,utcOffset:+08:00,isDst:0,typerank15,fxLink http:〃hfx.link/2azl},{name:唱平Jid”:T01010700,Tat
40.21809*,*1on*
116.23591,acto2:北京,adnd:北京市,country中国,tz:Asia/Shanghai,utc0ffset:+08:00,isDst:0,type:city,rank:23,fxLink:http:〃hfx.link/2b311,name:房山,id:101011200,Tat:
39.73554,Ton”:T
16.13916,adm2:北京,adml:北京市,country:中国,tz:Asia/Shanghai,utcOffset:+08:00,isDst:0,type:city,rankfxLink http:〃hfx.link/2b811,name:通州id•T01010600,Tat”
39.90249,Ton”:T
16.65860,acto2:北京,adnd:北京市,country中l国,tz:Asia/Shanghai,uteOffset:+08:00,isDst:0,type:city,rank:23,fxLink:http:〃hfx.Iink/2b2r9,‘Gum:丰台,id:T01010900”,86364,Ton”:T
16.28696,aS2:北京,adml:北京市,country:中囱,tz:Asia/Shanghai,utcOffset:+08:00,isDst:0,type:city,rank:25,fxLink:http:〃hfx.link/2b51”,name:大兴,id:T01011100,Tat
39.72891,Ton”:T电33804,adw2:北京,adml:北京市,country:中国,tz:Asia/Shanghai,utc0ffset:+08:00,isDst:0,type:city,rank:25,fxLink:http:〃hfx.link/2b711,name:延庆,id:101010800,Tat:
40.46532,Ton”:T
15.98501,acto2”:北京,adnd:北京市,country:中国,tz:Asia/ShanghaiutcOffset:+08:00,isDst:0,type:city,rankfxLinkhttp:〃hfx.link/2b41”,[nam:“平谷,id”:T01011500,Tat”
40.14478,Ton:
117.11234,acto2”:北京Jadml”:北京市,country:中国,tz:AsiJShanghaiutcOffset+08:00,isDst:0,type:city,rank:33,fxLink:http:〃hfx.link/2bb1}],refer{“sources:[QVeather],license[QVeather DevelopersLicense J}String location=jsonObjectl.optString;〃参数是键JSONArray jsonArray=new JSONArray;String locationO=jsonArray.optString;〃参数是索引JSONObject jsonObject_locationO=new JSONObject;locationlD=jsonObject_locationO.optString;〃参数是键请将补充完整的代码写在下面参考答案:〃参数是String location=jsonObjectl.optString/zlocation,z;JSONArray jsonArray=new JSONArraylocation;〃参数是索String locationO=jsonArray.optStringO;JSONObject jsonObject_locationO=new JSONObjectlocationO;locationlD=jsonObject_locationO.optStringz/idz/;〃参数是键
9、在邮件转发的异步请求中,如果没有收到response,不做处理;如果收到response,要求完善程序开启主线程,在ThirdActivity,Toast出后台响应的数据部分“后台回复〃+result,时长为LENGTH_LONG写出收到response后的处理程序//异步请求函数private voidPost_as{//创建表单FormBody formBody=new FormBody.Bui Ider.add.addfeedback”,textSuggest.build;〃将表单数据放入request中,通过post方法提交Request request=new Request.Builder.urlz/.
168.
0.Ill:1880/APP_feedback,/.post formBody.build;//将客户端加入到队列中,会自动在子线程中运行,返回有2种情况:失败或者有响应okHttpClient.newCallrequest.enqueuenew CallbackO{©Overridepublic voidonFailure@NonNul1Call call,@NonNull lOExceptione{e.printStackTrace;©Overridepublic voidonResponse©NonNul1Call call,©NonNull Responseresponse throwslOException{//-------------收到response后的处理程序----------------};}参考答案//获取响应的数据部分String result=response.body.string;〃在主线程中Toast出来runOnUiThreadnew Runnable{©Override publicvoidrun{Toast.34eTexZThirdActivity.this,“后台回复+result,Toast.LENGTH_SHORT.show;};
10、通过APP的Http客户端向后台发送注册请求,如果收到response,要求完善程序,开启主线程,如果后台回复的数据部分是“SuccessRegistration”,Toast〃注册成功!〃,时长为LENGTHJLONG;如果后台回复的数据部分是〃UsernameExists,Toast〃注册失败,用户名已存在!,时长为LENGTH_LONG;如果后台回复的是其它,Toast〃异常!〃,时长为LENGTH_LONG写出主线程中对后台回复的数据部分判断处理程序©Overridepublic voidonResponse@NonNul1Call call,@NonNull Responseresponsethrows lOException{//获取响应的数据部分String result二response.body.string;//根据response,在主线程中Toast出来runOnUiThreadnew Runnable{©Overridepublic voidrun{〃主线程中对后台回复的数据部分判断处理程序};参考答案:if result,equals^SuccessRegistration/7{Toast./〃“4eTextMainActivity.this,“恭喜,注册成功I Coast.LENGTH_SHORT.show;}else ifresult,equals^UsernameExists^{Toast.勿a4eTex方MainActivity.this,“用户名已存在,请重新注册!”,Toast.㈤石耽show;}else{Toast.勿MreTkr方MainActivity.this,“未知错误!二Toast.LENGTH^SHORT.show;c.Serial
2.print通过UART2输出数据,后面会自动带一个换行符D.Serial
2.print通过UART2输出数据,后面不会自动带一个换行符
18、关于Arduin中的串口函数,说法正确的是?BA.Serial,available用来判断UARTO串口缓冲区的状态B.如果要判断UART2串口缓冲区的状态,应该使用Serial
2.availableC.Serial.read读取UARTO的串口数据,一次可读取多个字符D.如果要从UART2读取的串口数据,应该使用函数Serial,read19>关于串口处理函数SerialEvent,代码如下void serialEvent{while Serial,available{//get thenew byte:char inChar二charSerial.read;//add itto theinputString:inputstring+=inChar;//if theincoming characteris anewline,set aflag sothe mainloop can//do somethingabout it:if inChar=\n{stringComplete=true;}}}c以下说法错误的是?A.SerialEvent函数需要在loop函数中调用B.函数会判断缓冲器是否有串口数据,如有会读取一个字符加入到字符串inputString里C.语句inputString+=inChar中的加号是做算术运算的D.程序中以换行符为结束符
20、JSON对象使用什么符号来表示?CA.B.[]C.{D.:
21、Arduino开发环境有Arduinojson库,可以用来解析JSON数据,示例如下char json[]={\〃hello\:\world\}”;StaticJsonBuffer200jsonBuffer;JsonObject object=jsonBuffer.parseObjectjson;Const char*=object[hello];以下说法错误的是?DA JsonBuffer作为Arduinojson库的入口,包含DynamicJsonBuffer和StaticJsonBuffer两个实现类B、可通过parseObject方法将字符串转换为json对象,故参数必须是字符串C.如果parseObject方法的参数是字符串,也不一定能够转换成功,可通过object,success方法判断是否成功D.程序中object[〃hello〃]的参数是〃hello”,是用来提取“hello〃字段的值,参数也可能不是字符串
22、如果ESP32接收针对2个灯的控制命令并解析执行,如{“RedStatus:1,BlueStatus:0},{RedStatus:1,BlueStatus:1},{“RedStatus:0,BlueStatus:0},{RedStatus:0,BlueStatus”:1},关于解析过程需要注意的地方,描述错误的是?AA.如果控制红灯的话,只需要解析一次〃RedStatus〃字段的值,然后控制就可以7B.如果控制蓝灯的话,需要解析两次〃BlueStatus〃字段的值,然后控制就可以了C.不管控制红灯还是蓝灯,都需要解析两次D.如果只解析一次就执行,就会发生收到红灯命令却控制蓝灯,或者收到蓝灯命令却控制红灯的错误
23、如果ESP32接收针对2个灯的控制命令并解析执行,如{“RedStatus”:1,〃BlueStatus〃:0},{RedStatus:1,BlueStatus:1},{“RedStatus:0,BlueStatus:0},{RedStatus:0,BlueStatus”:1},关于解析过程需要注意的地方,描述正确的是?DA.如果控制红灯的话,只需要解析一次〃RedStatus〃字段的值,然后控制就可以TB.如果控制蓝灯的话,需要解析一次〃BlueStatus〃字段的值,然后控制就可以了C.不管控制红灯还是蓝灯,都只需要解析一次D.如果只解析一次就执行,就会发生收到红灯命令却控制蓝灯,或者收到蓝灯命令却控制红灯的错误
24、在Arduin中对按键检测,以下说法错误的是?DA.有轮询和中断2种检测方式B.轮询方式检测按键需要考虑延时消抖C.轮询方式检测按键需要考虑等待释放D.只能通过软件,而不能够通过硬件设计实现延时消抖
25、在Arduin中对按键检测,以下说法正确的是?DA.只能通过中断方式检测B.轮询方式检测按键不需要考虑延时消抖C.轮询方式检测按键不需要考虑等待释放D.中断方式下,不需要考虑等待按键释放的问题,但需要考虑消抖的问题
26、下列关于按键的说法正确的是DA.具有四个引脚的独立按键两个短针脚之间默认是导通的B.按键在未按下时默认是高电平C.按键在按下时默认是低电平D.按键在未按下时默认电平需要根据硬件电路确定
27、下列哪个函数与定时器无关DA.delay B.delayMicroseconds C.millis D.digitalWrite
28、是在电子装置中应用最广泛的一种元件,主要作用有限流、降压、分压、分流、匹配、负载、阻尼及取样等AA.电阻B.电容C.电感D.二极管
29、以下不属于红外传感器常用功能的是?DA.避障B.测距C.遥控D.测温度
30、以下关于Android起源,描述错误的是?AA.Android是一款基于Windows平台的开源操作系统B.主要用于移动设备中C.由谷歌公司和开放手机联盟领导及开发D.Android本意指“机器人,Google公司将Android的标识设计为一个绿色机器人,代表Android系统符合环保概念
31、关于Android Studio开发环境的安装,以下描述正确的是?AA.Android Studio安装,所需JDK版本最低为
1.7B.Android SDK所在目录可以有空格C.Android SDK所在目录可以有中文D.Android Studio只能安装在Windows操作系统的计算机中
32、下列选项中,Android Studio工具中创建项目时的按钮的是AA.Start anew AndroidStudio projectB.Import anAndroid codesampleC.Profile ordebug APKD.Open anexisting AndroidStudio project
33、Android真机调试时,需要在手机中开启什么模式?CA.调试者模式B.USB模式C.开发者模式D.不需要任何操作
34、关于Android真机调试时,以下说法正确的是?AA.需要在Android SDK的SDK Tools安装Google USBDriverB.手机在开发者模式下,不允许USB下载和调试C.手机关闭开发者模式D.插上USB线后会询问“是否允许USB调试?”,选择不同意
35、关于使用EMQX软件部署MQTT服务器,以下说法错误的是?D A.操作系统可以是WindowsB.操作系统可以是CentOSC.需要开放1883和18083端口D.MQTT客户端登录部署的服务器,必须输入用户名和密码
36、下面关于模拟器的说法,正确的是()AA.模拟器属于虚拟设备B.在模拟器上不可以预览和测试Android应用程序C.只可以在模拟器上测试Android程序D.只可以在模拟器上预览Android应用程序
37、关于Java命名规范,以下说法正确的是?CA.包名全部采用大写字母B.类和接口应采用小驼峰命名C.变量采用小写驼峰命名D.常量全部小写
38、关于Java排版规范,以下说法正确的是?CA.程序块采用缩进风格,缩进的空格数是2个B.if语句和执行语句写在一行,执行语句不用加上花括号C.对齐时使用Tab键D.相对独立的程序块之间不应该加上空行39以下关于LogCat的使用,错误的是?DA.LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息B.日志内容Verbose、Debug、Info WarningError的级别是从低到高排列的C.Verbose用于显示全部信息D.Warning用于显示错误信息
40、以下关于LogCat的使用,错误的是?DA.LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息B.日志内容Verbose、Debug、Info WarningError的级别是从低到高排列的C.Verbose用于显示全部信息D.error用于显示警告信息
41、下面哪个是添加网络权限的代码?BA.uses-permissionandroid:name=z/android.permission.ACCEPTH ANDOVERz//B.uses-permissionandroid:name=//android.permission.INTERNET/〉C.uses-permissionandroid:name=〃android,permission.ACCESS_CHECKIN_PR0PERTIES/z/D.〈uses—permissionandroid:name=〃android,permission.ACCESS FINE_L0CATI0N/z/
42、用于设置子元素在该容器内对齐方式的Android属性是CA.android:layout_weightB.android:layout_widthC.android:gravityD.android:layout_gravity
43、应用资源是指应用中与源代码分离的资源,下面哪个不属于资源文件?AA.活动B.布局C.字符串D.图片
44、创建意图代码中Intent intent=new this,Target,class;第一个参数。