版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)》試題庫一、單選題1、關(guān)于ESP32硬件所使用的Arduino開發(fā)環(huán)境安裝,說法錯(cuò)誤的是?A.官網(wǎng)下載地址https://www.arduino.cc/en/softwareB.需要在文件->首選項(xiàng)中,輸入esp32開發(fā)板的管理器網(wǎng)址C.只能在開發(fā)板管理器中在線下載esp32內(nèi)核包安裝,不能離線下載內(nèi)核包安裝D.需要將相關(guān)的驅(qū)動(dòng)庫文件放在安裝目錄的libraries文件夾中,如ArduinoJson和pubsubclient,才能使用Json解析、MQTT通信功能2、以下關(guān)于Arduino語言,說法正確的是?CA.使用Python編寫程序B.沒有引進(jìn)面向?qū)ο蟮乃枷隒.通常所說的Arduino語言,是指Arduino核心庫文件提供的各種API的集合D.通過封裝好的API,可以增強(qiáng)開發(fā)者對(duì)繁復(fù)寄存器配置的深入理解3、關(guān)于Arduino的程序結(jié)構(gòu),以下說法正確的是?BA.Arduino程序中需要編寫main()函數(shù)B.Arduino使用setup()和loop()兩個(gè)函數(shù)C.setup()函數(shù)用來完成Arduino的初始化配置,會(huì)執(zhí)行多次D.loop()函數(shù)可以驅(qū)動(dòng)各種模塊、采集數(shù)據(jù)等,只執(zhí)行一次4、任何復(fù)雜的算法都可以由三種結(jié)構(gòu)組成,以下不屬于三種結(jié)構(gòu)的是?DA.順序B.循環(huán)C.選擇D.反向5、Arduino程序中,setup函數(shù)運(yùn)行的次數(shù)()?AA.1B.2C.3D.無數(shù)次6、Arduino程序中,以下哪一項(xiàng)創(chuàng)建數(shù)組的實(shí)例是錯(cuò)誤的?CA.a(chǎn)rray1[5];B.a(chǎn)rray2[]={1,2,3,4,5};C.a(chǎn)rray3[6]=[1,3,5,7,9,11];D.chararray4[7]=“ESP32”;7、在Arduino編程中,設(shè)置數(shù)字引腳的工作方式,需要使用哪個(gè)函數(shù)?CA.setMode()B.DigitalMode()C.pinMode()D.digitalMode()8、關(guān)于ESP32板上的輸入/輸出引腳,描述錯(cuò)誤的是:AA.各個(gè)引腳的功能都相同,可以隨便選。B.不是所有模擬量的輸出,都可用PWM引腳功能實(shí)現(xiàn)。C.模擬輸入引腳可以作為數(shù)字輸入引腳,反之不行。D.輸入模式下,可以通過IO來讀取外部數(shù)字信號(hào)。9、關(guān)于PWM的描述,錯(cuò)誤的是:BA.PWM全稱是PULSEWIDTHMODULATION。B.PWM是模擬量轉(zhuǎn)換為數(shù)字輸出的一種實(shí)現(xiàn)方式。C.PWM中文是脈沖寬度調(diào)制。D.PWM輸出占空比可調(diào)的方波。10、使用ESP32實(shí)現(xiàn)點(diǎn)亮LED時(shí),語句“digitalwrite(25,high);”是什么意思?AA.Arduino開發(fā)板上的25號(hào)引腳輸出高電平B.Arduino開發(fā)板上的25號(hào)引腳輸出電平C.Arduino開發(fā)板上的25號(hào)引腳輸入高電平D.Arduino開發(fā)板上的25號(hào)引腳輸入低電平11、引腳的初始狀態(tài)設(shè)置應(yīng)該寫在什么地方?AA.setup()函數(shù)中B.loop()函數(shù)中C.自定義的子函數(shù)user_function()中D.A、B、C均可?12、通過語句"analogWrite(5,50);"產(chǎn)生的PWM信號(hào)的占空比為()AA.19.6%B.39.2%C.0%D.5%?13、使用ESP32實(shí)現(xiàn)點(diǎn)亮LED時(shí),語句“delay(500)”是什么意思?BA.延時(shí)500秒B.延時(shí)500毫秒C.延時(shí)500微秒D.延時(shí)500納秒14、關(guān)于ESP32的串口,以下說法錯(cuò)誤的是?BA.ESP32共有3個(gè)串口B.其中UART0在Arduino程序中的對(duì)象名是Serial0C.UART0經(jīng)常用來打印調(diào)試信息使用D.UART0的發(fā)送數(shù)據(jù)引腳為pin115、關(guān)于ESP32的串口,以下說法正確的是?DA.ESP32共有2個(gè)串口B.其中UART0在Arduino程序中的對(duì)象名是Serial0C.UART1經(jīng)常用來打印調(diào)試信息使用D.UART0的接收數(shù)據(jù)引腳為pin316、關(guān)于語句“Serial.begin(115200);”,下列說法正確的是:AA.所使用的開發(fā)板在一秒鐘內(nèi)發(fā)送了115200比特的數(shù)據(jù)B.所使用的開發(fā)板在一秒鐘內(nèi)發(fā)送了115200字節(jié)的數(shù)據(jù)C.所使用的開發(fā)板在一包內(nèi)發(fā)送了115200比特的數(shù)據(jù)D.所使用的開發(fā)板在一包內(nèi)發(fā)送了115200字節(jié)的數(shù)據(jù)17、關(guān)于Arduino中的串口打印函數(shù),說法正確的是?AA.Serial.print()通過UART0輸出數(shù)據(jù),打印的值是任意類型的B.Serial.print()通過UART0輸出數(shù)據(jù),后面會(huì)自動(dòng)帶一個(gè)換行符C.Serial2.print()通過UART2輸出數(shù)據(jù),后面會(huì)自動(dòng)帶一個(gè)換行符D.Serial2.print()通過UART2輸出數(shù)據(jù),后面不會(huì)自動(dòng)帶一個(gè)換行符18、關(guān)于Arduino中的串口函數(shù),說法正確的是?BA.Serial0.available()用來判斷UART0串口緩沖區(qū)的狀態(tài)B.如果要判斷UART2串口緩沖區(qū)的狀態(tài),應(yīng)該使用Serial2.available()C.Serial.read()讀取UART0的串口數(shù)據(jù),一次可讀取多個(gè)字符D.如果要從UART2讀取的串口數(shù)據(jù),應(yīng)該使用函數(shù)Serial.read()19、關(guān)于串口處理函數(shù)SerialEvent(),代碼如下:voidserialEvent(){while(Serial.available()){//getthenewbyte:charinChar=(char)Serial.read();//addittotheinputString:inputString+=inChar;//iftheincomingcharacterisanewline,setaflagsothemainloopcan//dosomethingaboutit:if(inChar=='\n'){stringComplete=true;}}}以下說法錯(cuò)誤的是?CA.SerialEvent()函數(shù)需要在loop()函數(shù)中調(diào)用B.函數(shù)會(huì)判斷緩沖器是否有串口數(shù)據(jù),如有會(huì)讀取一個(gè)字符加入到字符串inputString里C.語句inputString+=inChar中的加號(hào)是做算術(shù)運(yùn)算的D.程序中以換行符為結(jié)束符20、?JSON對(duì)象使用什么符號(hào)來表示?CA.""B.[]C.{}D.:21、Arduino開發(fā)環(huán)境有ArduinoJson庫,可以用來解析JSON數(shù)據(jù),示例如下:charjson[]="{\"hello\":\"world\"}";StaticJsonBuffer<200>jsonBuffer;JsonObject&object=jsonBuffer.parseObject(json);Constchar*=object["hello"];以下說法錯(cuò)誤的是?DA、JsonBuffer作為ArduinoJson庫的入口,包含DynamicJsonBuffer和StaticJsonBuffer兩個(gè)實(shí)現(xiàn)類B、可通過parseObject()方法將字符串轉(zhuǎn)換為json對(duì)象,故參數(shù)必須是字符串C.如果parseObject()方法的參數(shù)是字符串,也不一定能夠轉(zhuǎn)換成功,可通過object.success()方法判斷是否成功D.程序中object["hello"]的參數(shù)是"hello",是用來提取"hello"字段的值,參數(shù)也可能不是字符串22、如果ESP32接收針對(duì)2個(gè)燈的控制命令并解析執(zhí)行,如:{"RedStatus":1,"BlueStatus":0},{"RedStatus":1,"BlueStatus":1},{"RedStatus":0,"BlueStatus":0},{"RedStatus":0,"BlueStatus":1},關(guān)于解析過程需要注意的地方,描述錯(cuò)誤的是?AA.如果控制紅燈的話,只需要解析一次"RedStatus"字段的值,然后控制就可以了B.如果控制藍(lán)燈的話,需要解析兩次"BlueStatus"字段的值,然后控制就可以了C.不管控制紅燈還是藍(lán)燈,都需要解析兩次D.如果只解析一次就執(zhí)行,就會(huì)發(fā)生收到紅燈命令卻控制藍(lán)燈,或者收到藍(lán)燈命令卻控制紅燈的錯(cuò)誤23、如果ESP32接收針對(duì)2個(gè)燈的控制命令并解析執(zhí)行,如:{"RedStatus":1,"BlueStatus":0},{"RedStatus":1,"BlueStatus":1},{"RedStatus":0,"BlueStatus":0},{"RedStatus":0,"BlueStatus":1},關(guān)于解析過程需要注意的地方,描述正確的是?DA.如果控制紅燈的話,只需要解析一次"RedStatus"字段的值,然后控制就可以了B.如果控制藍(lán)燈的話,需要解析一次"BlueStatus"字段的值,然后控制就可以了C.不管控制紅燈還是藍(lán)燈,都只需要解析一次D.如果只解析一次就執(zhí)行,就會(huì)發(fā)生收到紅燈命令卻控制藍(lán)燈,或者收到藍(lán)燈命令卻控制紅燈的錯(cuò)誤24、在Arduino中對(duì)按鍵檢測(cè),以下說法錯(cuò)誤的是?DA.有輪詢和中斷2種檢測(cè)方式B.輪詢方式檢測(cè)按鍵需要考慮延時(shí)消抖C.輪詢方式檢測(cè)按鍵需要考慮等待釋放D.只能通過軟件,而不能夠通過硬件設(shè)計(jì)實(shí)現(xiàn)延時(shí)消抖25、在Arduino中對(duì)按鍵檢測(cè),以下說法正確的是?DA.只能通過中斷方式檢測(cè)B.輪詢方式檢測(cè)按鍵不需要考慮延時(shí)消抖C.輪詢方式檢測(cè)按鍵不需要考慮等待釋放D.中斷方式下,不需要考慮等待按鍵釋放的問題,但需要考慮消抖的問題26、下列關(guān)于按鍵的說法正確的是:DA.具有四個(gè)引腳的獨(dú)立按鍵兩個(gè)短針腳之間默認(rèn)是導(dǎo)通的B.按鍵在未按下時(shí)默認(rèn)是高電平C.按鍵在按下時(shí)默認(rèn)是低電平D.按鍵在未按下時(shí)默認(rèn)電平需要根據(jù)硬件電路確定27、下列哪個(gè)函數(shù)與定時(shí)器無關(guān):DA.delay()B.delayMicroseconds()C.millis()D.digitalWrite()28、()是在電子裝置中應(yīng)用最廣泛的一種元件,主要作用有限流、降壓、分壓、分流、匹配、負(fù)載、阻尼及取樣等。AA.電阻B.電容C.電感D.二極管29、以下不屬于紅外傳感器常用功能的是?DA.避障B.測(cè)距C.遙控D.測(cè)溫度30、以下關(guān)于Android起源,描述錯(cuò)誤的是?AA.Android是一款基于Windows平臺(tái)的開源操作系統(tǒng)B.主要用于移動(dòng)設(shè)備中C.由谷歌公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)D.Android本意指“機(jī)器人”,Google公司將Android的標(biāo)識(shí)設(shè)計(jì)為一個(gè)綠色機(jī)器人,代表Android系統(tǒng)符合環(huán)保概念31、關(guān)于AndroidStudio開發(fā)環(huán)境的安裝,以下描述正確的是?AA.AndroidStudio安裝,所需JDK版本最低為1.7B.AndroidSDK所在目錄可以有空格C.AndroidSDK所在目錄可以有中文D.AndroidStudio只能安裝在Windows操作系統(tǒng)的計(jì)算機(jī)中32、?下列選項(xiàng)中,AndroidStudio工具中創(chuàng)建項(xiàng)目時(shí)的按鈕的是()。AA.StartanewAndroidStudioprojectB.ImportanAndroidcodesampleC.ProfileordebugAPKD.OpenanexistingAndroidStudioproject33、Android真機(jī)調(diào)試時(shí),需要在手機(jī)中開啟什么模式?()CA.調(diào)試者模式B.USB模式C.開發(fā)者模式D.不需要任何操作34、關(guān)于Android真機(jī)調(diào)試時(shí),以下說法正確的是?AA.需要在AndroidSDK的SDKTools安裝GoogleUSBDriverB.手機(jī)在開發(fā)者模式下,不允許USB下載和調(diào)試C.手機(jī)關(guān)閉開發(fā)者模式D.插上USB線后會(huì)詢問“是否允許USB調(diào)試?”,選擇不同意35、關(guān)于使用EMQX軟件部署MQTT服務(wù)器,以下說法錯(cuò)誤的是?DA.操作系統(tǒng)可以是WindowsB.操作系統(tǒng)可以是CentOSC.需要開放1883和18083端口D.MQTT客戶端登錄部署的服務(wù)器,必須輸入用戶名和密碼36、下面關(guān)于模擬器的說法,正確的是()。AA.模擬器屬于虛擬設(shè)備B.在模擬器上不可以預(yù)覽和測(cè)試Android應(yīng)用程序C.只可以在模擬器上測(cè)試Android程序D.只可以在模擬器上預(yù)覽Android應(yīng)用程序37、關(guān)于Java命名規(guī)范,以下說法正確的是?CA.包名全部采用大寫字母B.類和接口應(yīng)采用小駝峰命名C.變量采用小寫駝峰命名D.常量全部小寫38、關(guān)于Java排版規(guī)范,以下說法正確的是?CA.程序塊采用縮進(jìn)風(fēng)格,縮進(jìn)的空格數(shù)是2個(gè)B.if語句和執(zhí)行語句寫在一行,執(zhí)行語句不用加上花括號(hào)C.對(duì)齊時(shí)使用Tab鍵D.相對(duì)獨(dú)立的程序塊之間不應(yīng)該加上空行39、以下關(guān)于LogCat的使用,錯(cuò)誤的是?DA.LogCat是Android中的命令行工具,用于獲取程序從啟動(dòng)到關(guān)閉的日志信息B.日志內(nèi)容Verbose、Debug、Info、Warning、Error的級(jí)別是從低到高排列的C.Verbose用于顯示全部信息D.Warning用于顯示錯(cuò)誤信息40、以下關(guān)于LogCat的使用,錯(cuò)誤的是?DA.LogCat是Android中的命令行工具,用于獲取程序從啟動(dòng)到關(guān)閉的日志信息B.日志內(nèi)容Verbose、Debug、Info、Warning、Error的級(jí)別是從低到高排列的C.Verbose用于顯示全部信息D.error用于顯示警告信息41、?下面哪個(gè)是添加網(wǎng)絡(luò)權(quán)限的代碼?BA.<uses-permissionandroid:name="android.permission.ACCEPT_HANDOVER"/>B.<uses-permissionandroid:name="android.permission.INTERNET"/>C.<uses-permissionandroid:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>D.<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>42、用于設(shè)置子元素在該容器內(nèi)對(duì)齊方式的Android屬性是()。CA.android:layout_weightB.android:layout_widthC.android:gravityD.android:layout_gravity43、?應(yīng)用資源是指應(yīng)用中與源代碼分離的資源,下面哪個(gè)不屬于資源文件?AA.活動(dòng)B.布局C.字符串D.圖片44、創(chuàng)建意圖代碼中:Intentintent=new(this,Target.class);第一個(gè)參數(shù)this表示什么?A.當(dāng)前布局B.當(dāng)前時(shí)間C.當(dāng)前活動(dòng)D.以上都不是45、?關(guān)于線性布局中l(wèi)ayout_weight屬性描述錯(cuò)誤的是?CA.為視圖分配權(quán)重B.通過屬性值確定占多大比重的空間C.屬性值可以為小于零的數(shù)D.如果要使用這個(gè)屬性,那么通常會(huì)將android:width設(shè)為0dp46、?Android會(huì)為每個(gè)圖像指定一個(gè)ID,形式為()。BA.R.app.img_nameB.R.drawable.img_nameC.R.img_nameD.R.android.img_name47、?EditText哪個(gè)屬性可以限制輸入類型?BA.android:textColorHintB.android:inputTypeC.android:maxLengthD.android:singleLine48、關(guān)于控件寬高值的單位,以下說法錯(cuò)誤的是?A.px代表像素B.pt代表磅數(shù)C.dp是一種基于屏幕密度的抽象單位D.sp代表不可伸縮像素49、關(guān)于文本框控件,以下說法錯(cuò)誤的是?DA.控件名稱為TextViewB.用于顯示文本信息C.a(chǎn)ndroid:text用于設(shè)置文本內(nèi)容D.a(chǎn)ndroid:textSize用于設(shè)置文字大小,推薦單位為dp50、關(guān)于Button控件,以下說法錯(cuò)誤的是?CA.用于響應(yīng)用戶的一系列點(diǎn)擊事件B.點(diǎn)擊方式共有三種C.不需要設(shè)置android:id屬性D.需要在對(duì)應(yīng)的Activity中實(shí)現(xiàn)邏輯51、關(guān)于Android系統(tǒng)的樣式和主題,以下描述錯(cuò)誤的是?BA.樣式是針對(duì)某個(gè)View,例如TextView控件B.實(shí)際開發(fā)中,不能自己創(chuàng)建樣式文件C.主題是針對(duì)整個(gè)Activity界面或整個(gè)應(yīng)用程序D.當(dāng)主題和樣式中的屬性發(fā)生沖突時(shí),樣式的優(yōu)先級(jí)要高于主題D.當(dāng)主題和樣式中的屬性發(fā)生沖突時(shí),樣式的優(yōu)先級(jí)要低于主題52、在哪里可以設(shè)置應(yīng)用主題?AA.AndroidManifest.xmlB.build.gradleC.settings.gradleD.MainActivity.java53、關(guān)于Android中的ViewBinding框架,以下說法錯(cuò)誤的是?CA.ViewBinding框架會(huì)為每個(gè)xml布局生成一個(gè)綁定類B.綁定類的實(shí)例包含對(duì)在相應(yīng)布局中具有ID的所有視圖的直接引用C.ViewBinding綁定類會(huì)將XML文件的名稱轉(zhuǎn)換為小駝峰名稱,并在末尾添加“Binding”一詞D.通過ViewBinding綁定類.控件ID,找到需要的控件54、關(guān)與OkHttp框架的同步請(qǐng)求和異步請(qǐng)求,以下說法錯(cuò)誤的是?BA.前三步一樣,包括創(chuàng)建OkHttpClient對(duì)象,構(gòu)建Request對(duì)象,創(chuàng)建Call對(duì)象B.同步請(qǐng)求和異步請(qǐng)求區(qū)別是第四步執(zhí)行Call對(duì)象的方法也一樣C.同步請(qǐng)求的第四步調(diào)用Call對(duì)象的execute()方法,,直接請(qǐng)求D.異步請(qǐng)求的第四步調(diào)用Call對(duì)象的enqueue()方法,將請(qǐng)求加入到隊(duì)列中55、關(guān)與OkHttp框架的同步請(qǐng)求和異步請(qǐng)求,以下說法錯(cuò)誤的是?DA.第一步都是創(chuàng)建OkHttpClient對(duì)象B.第二步都是構(gòu)建Request對(duì)象C.第三步都是創(chuàng)建Call對(duì)象D.同步請(qǐng)求和異步請(qǐng)求的第四步都是調(diào)用Call對(duì)象的execute()方法56、關(guān)與OkHttp框架的GET請(qǐng)求和POST請(qǐng)求,說法錯(cuò)誤的是?DA.GET請(qǐng)求參數(shù)直接拼接在url后面,第一個(gè)參數(shù)用?連接,后面的每一個(gè)參數(shù)都用&連接B.POST請(qǐng)求可將RequestBody對(duì)象作為post()方法的參數(shù)C.相對(duì)而言,GET安全性低D.相對(duì)而言,POST安全性低57、關(guān)與OkHttp框架的GET請(qǐng)求和POST請(qǐng)求,說法錯(cuò)誤的是?CA.GET請(qǐng)求參數(shù)直接拼接在url后面,第一個(gè)參數(shù)用?連接,后面的每一個(gè)參數(shù)都用&連接B.POST請(qǐng)求可將RequestBody對(duì)象作為post()方法的參數(shù)C.相對(duì)而言,GET安全性高D.相對(duì)而言,POST安全性高58、?下面哪個(gè)方法不屬于活動(dòng)生命周期中的方法?DA.onCreate()B.onStart()C.onResume()D.startActivity()59、??Android是如何組織Activity的()DA.以樹型方式組織ActivityB.以鏈?zhǔn)椒绞浇M織ActivityC.以堆的方式組織ActivityD.以棧的方式組織Activity60、關(guān)于Android中的Activity,以下描述錯(cuò)誤的是?DA.Activity組件為用戶提供可視化界面及操作B.一個(gè)應(yīng)用程序通常包含多個(gè)Activity,每個(gè)Activity負(fù)責(zé)管理一個(gè)用戶界面C.一個(gè)Activity可以添加多個(gè)控件,每個(gè)控件負(fù)責(zé)實(shí)現(xiàn)不同功能D.只有第一個(gè)Activity需要在AndroidManifest.xml(清單文件)中注冊(cè)61、關(guān)于Activity的生命周期,以下描述錯(cuò)誤的是?DA.生命周期指一個(gè)Activity從創(chuàng)建到銷毀的全過程B.Activity的生命周期狀態(tài)共有5種:?jiǎn)?dòng)、運(yùn)行、暫停、停止、銷毀C.在暫停狀態(tài)下,Activity對(duì)用戶來講仍然可見D.Activity在銷毀狀態(tài),不會(huì)被清理出內(nèi)存62、關(guān)于Activity之間的跳轉(zhuǎn),以下說法錯(cuò)誤的是?DA.Activity之間的跳轉(zhuǎn)需要用到IntentB.Intent可以指定當(dāng)前組件要執(zhí)行的動(dòng)作C.Intent可以實(shí)現(xiàn)在不同組件之間的數(shù)據(jù)傳遞D.隱式意圖需要明確指定要開啟哪個(gè)目標(biāo)組件63、關(guān)于Android中的ViewBinding框架,以下說法正確的是?BA.ViewBinding框架只會(huì)為一個(gè)xml布局生成綁定類B.綁定類的實(shí)例包含對(duì)在相應(yīng)布局中具有ID的所有視圖的直接引用C.ViewBinding綁定類會(huì)將XML文件的名稱轉(zhuǎn)換為小駝峰名稱,并在末尾添加“Binding”一詞D.通過ViewBinding綁定類->控件ID,找到需要的控件64、?關(guān)于線程的說法不正確的是DA.在android中,我們可以在主線程中,創(chuàng)建一個(gè)新的線程B.創(chuàng)建的Handler對(duì)象,它隸屬于創(chuàng)建它的線程C.新線程可以和Handler共同使用D.在創(chuàng)建的新線程中,它可以操作UI組件65、關(guān)于Android的線程,以下說法錯(cuò)誤的是?BA.應(yīng)用程序啟動(dòng)時(shí),Android會(huì)開啟一個(gè)主線程,即UI線程B.UI線程適合執(zhí)行耗時(shí)操作,比如訪問網(wǎng)絡(luò)讀取數(shù)據(jù)C.訪問網(wǎng)絡(luò)讀取數(shù)據(jù)的操作可以放在子線程中進(jìn)行D.子線程執(zhí)行耗時(shí)操作后,可以更新界面UI,但屬于不規(guī)范操作66、關(guān)于Android的Handler機(jī)制,以下說法錯(cuò)誤的是?AA.Android提供了一種同步回調(diào)機(jī)制Handler,來負(fù)責(zé)與子線程通信B.Handler機(jī)制包括4個(gè)關(guān)鍵對(duì)象:Message、Handler、MessageQueue、LooperC.Message是在線程之間傳遞的消息D.一般使用Handler對(duì)象的sendMessage()方法發(fā)送消息,并傳遞到handlerMessage()方法中67、關(guān)于Handler的Message對(duì)象,以下說法錯(cuò)誤的是?DA.Message是在線程之間傳遞的消息B.Message的what字段攜帶整型數(shù)據(jù)C.Message的obj字段攜帶一個(gè)Object對(duì)象D.如果要將Message的obj字段不能被轉(zhuǎn)換為字符串68、關(guān)于Handler的方法,以下描述錯(cuò)誤的是?A.一般使用Handler對(duì)象的sendMessage()方法發(fā)送消息DB.消息會(huì)發(fā)送到handlerMessage()方法中進(jìn)行處理C.handlerMessage()會(huì)判斷what字段的值進(jìn)行處理D.只能通過switchcase語句對(duì)what字段的值進(jìn)行判斷處理69、關(guān)于Android中的MQTT配置,說法正確的是?BA.兩個(gè)不同APP中的的MQTT客戶端id可以重復(fù)B.APP和網(wǎng)關(guān)中的MQTT客戶端id不能重復(fù)C.APP和網(wǎng)關(guān)中的MQTT客戶端id可以重復(fù)D.一個(gè)客戶端不允許訂閱并接受自己發(fā)布的消息70、分析以下Android工程的函數(shù),說法正確的是?Bpublicvoiddisconnect(){try{if(client!=null){if(client.isConnected())client.unsubscribe(mqtt_sub_topic);client.disconnect();client.close();client=null;}}catch(Exceptione){e.printStackTrace();}}A.如果頁面跳轉(zhuǎn),不應(yīng)該調(diào)用此函數(shù)B.函數(shù)功能是:取消訂閱,斷開連接,關(guān)閉MQTT客戶端C.如果頁面跳轉(zhuǎn),不調(diào)用此函數(shù),重新進(jìn)入頁面會(huì)不再開啟一個(gè)重名客戶端D.如果頁面跳轉(zhuǎn),不調(diào)用此函數(shù),重新進(jìn)入頁面會(huì)再開啟一個(gè)不重名客戶端71、關(guān)于MQTT消息的接收,以下說法正確的是?CA.如果要接受消息,不以訂閱消息為前提B.消息是其它客戶端直接發(fā)過來的C.消息是代理服務(wù)器轉(zhuǎn)發(fā)過來的D.客戶端不可以訂閱自己發(fā)布的消息72、字符串:{"Temp":16},如果要通過substring方法截取出"Temp"字段的值,共有2個(gè)參數(shù),其中起始索引值和結(jié)束索引值分別是多少?CA.9,9B.9,10C.9,11D.10,1173、Web技術(shù)的架構(gòu)是以下哪一類AA.B/S架構(gòu)B.A/S架構(gòu)C.D/S架構(gòu)D.C/S架構(gòu)74、關(guān)于HTTP協(xié)議的介紹,錯(cuò)誤的是?BA、全稱是HyperTextTransferProtocolB.HTTP請(qǐng)求常用的服務(wù)器端口是12830C.客戶端向服務(wù)器端發(fā)送的請(qǐng)求,稱為HTTP請(qǐng)求D.規(guī)定了瀏覽器和服務(wù)器之間的互相通信的規(guī)則75、關(guān)于HTTP請(qǐng)求方式,以下描述錯(cuò)誤的是?DA.常用的兩種方式是GET和POSTB.GET方式提交的參數(shù)跟在請(qǐng)求URL后面C.POST方式提交的參數(shù)跟在請(qǐng)求實(shí)體中D.GET方式要比POST方式安全,因?yàn)橛脩粼谠跒g覽器中看不到向服務(wù)器提交的請(qǐng)求參數(shù)76、以下關(guān)于JSON數(shù)據(jù)描述錯(cuò)誤的是?BA.JSON即JavaScriptObjectNotation(對(duì)象表示法)B.是一種重量級(jí)的數(shù)據(jù)交換格式C.是基于純文本的數(shù)據(jù)格式D.包括JSON對(duì)象和JSON數(shù)組2中數(shù)據(jù)結(jié)構(gòu)77、以下那種數(shù)據(jù)滿足JSON對(duì)象結(jié)構(gòu)?AA.{"city":"beijing","temp":21}B.["city":"beijing","temp":21]C.{"city":"beijing";"temp":21}D.["city":"beijing";"temp":21]78、以下那種數(shù)據(jù)滿足JSON數(shù)組結(jié)構(gòu)?DA.{{"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"}]79、以下那種數(shù)據(jù)是JSON數(shù)組和JSON對(duì)象的正確組合?DA.{{"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、關(guān)于JSON對(duì)象描述錯(cuò)誤的是?DA.以"{"開始,以"}"結(jié)束B.鍵值對(duì)之間用","分割C.鍵和值之間用":"分割D.值不能是JSON對(duì)象81、關(guān)于JSON數(shù)組描述錯(cuò)誤的是?CA.以"["開始,以"]"結(jié)束B.成員之間用","分割C.成員不能是JSON對(duì)象D.JSON數(shù)組可以作為JSON對(duì)象某個(gè)鍵的值82、關(guān)于JSON數(shù)據(jù)的解析,可以使用optString()方法,如獲取JSONObject里面某個(gè)字段(鍵)的值、獲取JSONArray里面某個(gè)元素(與索引對(duì)應(yīng))的值,以下說法錯(cuò)誤的是?CA、獲取JSONObject某個(gè)鍵的值,optString()方法的參數(shù)是鍵B.獲取JSONArray某個(gè)元素的值,optString()方法的參數(shù)是索引C.optString()方法的參數(shù)如果是鍵,參數(shù)的類型應(yīng)該整型D.optString()方法的參數(shù)如果是是索引,參數(shù)的類型應(yīng)該整型83、關(guān)于JSON數(shù)據(jù)的解析,可以使用optString()方法,如獲取JSONObject里面某個(gè)字段(鍵)的值、獲取JSONArray里面某個(gè)元素(與索引對(duì)應(yīng))的值,以下說法錯(cuò)誤的是?DA、獲取JSONObject某個(gè)鍵的值,optString()方法的參數(shù)是鍵B.獲取JSONArray某個(gè)元素的值,optString()方法的參數(shù)是索引C.optString()方法的參數(shù)如果是鍵,參數(shù)的類型應(yīng)該字符串D.optString()方法的參數(shù)如果是是索引,參數(shù)的類型應(yīng)該浮點(diǎn)型?84、安卓使用的數(shù)據(jù)庫叫什么名字?CA.MySQLB.SQLServerC.SQLiteD.MongoDB85、關(guān)于在Windows環(huán)境下NodeRed的部署,以下說法錯(cuò)誤的是?DA.需要先安裝Node.js,再安裝Node-RedB.可輸入npminstall-g--unsafe-permnode-red安裝NodeRedC.在cmd輸入:node-red,即可啟動(dòng)NodeRedD.本機(jī)登錄,瀏覽器輸入:80/ui,即可登錄NodeRed86、關(guān)于NodeRed的debug節(jié)點(diǎn),以下說法錯(cuò)誤的是?DA.如果輸出為msg.payload,會(huì)打印輸入節(jié)點(diǎn)傳入的payloadB.會(huì)在debug窗口打印調(diào)試信息C.如果payload是JSON對(duì)象,可通過msg.payload.字段名,獲取字段的值D.可勾選右側(cè)的單選框,使節(jié)點(diǎn)有效87、NodeRed的Dashboard里面,Web頁面分為3級(jí),以下不屬于的是?DA.tab(菜單)B.group(組)C.spacer(部件)D.info(索引)88、如果msg.payload是JSON對(duì)象,關(guān)于如何解析字段的值,以下說法正確的是?AA.通過msg.payload.字段名B.通過msg.payload->字段名C.通過msg->payload["字段名"]D.通過msg->payload->字段名89、如果需要在Web頁面展示上報(bào)的MQTT溫度消息。關(guān)于解析過程,以下說法正確的是?BA.直接解析展示B.應(yīng)該先解析判斷字段值是否為空,非空的話再次解析展示C.解析方法只能通過msg.payload.字段名D.解析方法只能通過msg.payload["字段名"]90、查看所有數(shù)據(jù)庫的命令是()BA.SHOWDATABASE;B.SHOWDATABASES;C.DESCRIBETABLES;D.DESCRIBETABLE;91、查看商品類別表t_goods_category的表結(jié)構(gòu)信息的命令是()BA.SHOWt_goods_category;B.DESCRIBEt_goods_category;C.SELECT*FROMt_goods_category;D.ALTER*FROMt_goods_category;92、按價(jià)格降序排列檢索出商品列表中的所有信息,下面SQL語句正確的是()。CA.SELECT*FROM商品列表ORDERBY價(jià)格;B.SELECT*FROM商品列表GROUPBY價(jià)格;C.SELECT*FROM商品列表ORDERBY價(jià)格DESC;D.SELECT*FROM商品列表ORDERBY價(jià)格;93、進(jìn)行MySQL的配置,最重要的是修改()文件DA.lib.iniB.bin.iniC.my-template.iniD.my.ini94、可以通過()命令來啟動(dòng)MySQL服務(wù)A.NETSTOPMySQL80B.NETSTARTMySQL80C.NETSTARTD.NETSTOP95、為了避免不支持中文字符串查詢或者發(fā)生中文字符串亂碼等問題,不應(yīng)該考慮使用()字符集。BA.gb2312B.latin1C.gbkD.utf896、在成績(jī)表中,查詢數(shù)學(xué)成績(jī)第二名到第五名的學(xué)生姓名,正確的語句是()。AA.SELECT姓名FROM成績(jī)表ORDERBY科學(xué)DESCLIMIT1,4;B.SELECT姓名FROM成績(jī)表ORDERBY科學(xué)DESCLIMIT1,3;C.SELECT姓名FROM成績(jī)表ORDERBY科學(xué)DESCLIMIT0,4;D.SELECT姓名FROM成績(jī)表ORDERBY科學(xué)DESCLIMIT0,3;97、在一個(gè)查詢中嵌套一個(gè)或多個(gè)查詢,被嵌套的查詢稱為()。AA.子查詢B.主查詢C.相關(guān)查詢D.非相關(guān)查詢98、?安裝MySQL數(shù)據(jù)庫后,系統(tǒng)自動(dòng)創(chuàng)建的數(shù)據(jù)庫不包括()。CA.performance_schemaB.information_schemaC.chooseD.mysql99、?SQL語言中,刪除一個(gè)數(shù)據(jù)庫對(duì)象的命令是()。AA.DROPB.DELETEC.CLEARD.REMOVE100、關(guān)于MySQL中的字符串類型,說法錯(cuò)誤的是?DA.CHAR和VARCHAR均用于存儲(chǔ)較短的字符串B.CHAR類型的長(zhǎng)度固定C.VARCHAR類型的長(zhǎng)度可變D.在不明確字段需要多少個(gè)字符時(shí),推薦使用CHAR類型101、MySQL5.7.8開始,可以支持JSON數(shù)據(jù)類型了,以下說法錯(cuò)誤的是?BA.MySQL支持JSON數(shù)組和JSON對(duì)象2種格式B.JSON數(shù)組只能存放字符串類型的數(shù)據(jù)C.JSON數(shù)組以"["開始,以"]"結(jié)束D.JSON數(shù)組的2個(gè)數(shù)據(jù)之間使用","隔開102、關(guān)于使用SQL語句創(chuàng)建表,說法錯(cuò)誤的是?CA.不同字段之間的定義使用","隔開B.最后一個(gè)字段后面沒有","C.表名可以與數(shù)據(jù)庫的關(guān)鍵字重名D.字段的數(shù)據(jù)類型需要指定103、關(guān)于主鍵約束,以下說法錯(cuò)誤的是?CA.主鍵約束即primarykeyB.主鍵約束可以唯一標(biāo)識(shí)一條記錄C.設(shè)置為主鍵的字段取值可以重復(fù)D.設(shè)置為主鍵的字段取值不能為空104、關(guān)于非空約束,以下說法正確的是?CA.空字符串""就是NULLB.0就是NULLC.非空約束的關(guān)鍵字是"notnull"D.不能為表中的多個(gè)字段添加非空約束105、關(guān)于自增約束,以下說法正確的是?CA.自增約束可以使表中的某個(gè)字段的值自動(dòng)減少B.一個(gè)表中可以有多個(gè)自增字段C.自增約束通常配合主鍵使用,并且只適用于整數(shù)類型D.一般情況下,自增約束字段的值從0開始,每增加一條記錄值加1106、關(guān)于對(duì)查詢結(jié)果進(jìn)行排序,SQL語法為:selectcolumn_name1,column_name2,…fromtable_nameorderbyorder_name[asc|desc];以下說法錯(cuò)誤的是()?DA.order_name表示按照該字段進(jìn)行排序B.a(chǎn)sc代表升序C.desc代表降序D.如果沒有指定排序,默認(rèn)按照降序排序107、關(guān)于MySQL支持的比較運(yùn)算符,以下說法正確的是?BA."=="表示等于B."="表示等于C."<>"表示不等于D."!="表示不等于108、使用視圖的原因,以下說法正確的是?DA.可以讓用戶更關(guān)心表的結(jié)構(gòu)、查詢條件等B.用戶的權(quán)限會(huì)更高,訪問數(shù)據(jù)庫更加自由C.提供了一定程度的數(shù)據(jù)邏輯獨(dú)立性D.在修改基礎(chǔ)表字段時(shí),不需要修改視圖109、關(guān)于Node-RED使用QQ郵件服務(wù)器發(fā)送郵件配置,說法錯(cuò)誤的是?DA.發(fā)送郵件節(jié)點(diǎn)配置:包括收件箱地址,郵件服務(wù)器和端口號(hào),發(fā)件箱地址和授權(quán)碼B.需要在QQ郵箱中設(shè)置IMAP(接收)/SMTP(發(fā)送)服務(wù)C.使用SMTP的SSL端口為465D.NodeRed的發(fā)送郵件節(jié)點(diǎn)中的password,指的是發(fā)件箱的郵箱登陸密碼110、關(guān)于Node-RED使用QQ郵件服務(wù)器發(fā)送郵件配置,說法錯(cuò)誤的是?CA.node-red的發(fā)送郵件節(jié)點(diǎn),把msg.payload作為郵件內(nèi)容,把msg.topic作為郵件主題B.需要在QQ郵箱中設(shè)置IMAP(接收)/SMTP(發(fā)送)服務(wù)C.使用SMTP的SSL端口為466D.NodeRed的發(fā)送郵件節(jié)點(diǎn)中的password,指的是發(fā)件箱的授權(quán)碼二、填空題1、Arduino軟件部分是一套程序開發(fā)環(huán)境,通過在()中編寫程序代碼。IDE2、Arduino軟件以Precessing,avr-gcc及其他開源軟件為基礎(chǔ),其語法與()相似,將常用的一些AVR函數(shù)進(jìn)行封裝,使用起來非常方便。C/C++3、Arduino的標(biāo)準(zhǔn)程序必須包含2個(gè)函數(shù),其中()函數(shù)是主要用于初始化,()函數(shù)是一個(gè)循環(huán)函數(shù)。setup,loop4、數(shù)組中第一個(gè)數(shù)據(jù)的索引為()。05、模擬輸入接口可將模擬量轉(zhuǎn)換為(),便于單片機(jī)進(jìn)行處理。數(shù)字量6、Arduino函數(shù)analogWrite(pin,value),其中參數(shù)value是給一個(gè)模擬接口寫入模擬值,范圍為()。0-2557、波特率越(),說明串口通信的速率越高,需要注意的是,通信雙方設(shè)置的波特率要()。大,相同8、Serial.read函數(shù)的作用是,從串口緩沖區(qū)讀取傳入串口的數(shù)據(jù),調(diào)用一次只能讀?。ǎ┑臄?shù)據(jù),而且會(huì)將讀取的數(shù)據(jù)從緩沖區(qū)刪除。一個(gè)字節(jié)9、當(dāng)光照越強(qiáng)時(shí),光敏電阻器的阻值就越()。低10、DHT11溫濕度傳感器的分辨率為:濕度()%RH,溫度()℃。1,111、DHT11數(shù)字信號(hào)線在空閑狀態(tài)下為()電平。高12、ESP32的UART0的TX引腳為(),RX引腳為(),在Arduino程序中的對(duì)象名稱為()。pin1,pin3,Serial13、對(duì)按鍵的查詢方式檢測(cè),需要考慮干擾情況,即延時(shí)();再考慮按鍵長(zhǎng)按的情況,即等待()。消抖,釋放14.?創(chuàng)建工程時(shí),可以指定工程最()的SDK版本。小15、相對(duì)獨(dú)立的程序塊之間必須加上()??招?6、在線性布局中,當(dāng)控件()排列時(shí),顯示順序依次為從左到右;當(dāng)控件()排列時(shí),顯示順序?yàn)閺纳系较?。水平,垂?7.用于顯示圖片組件是()。ImageView18.表示按鈕的組件是()。Button19.()屬性可以設(shè)置TextView中的文本顯示的大小。android:textSize20、調(diào)用構(gòu)造器對(duì)象的()方法創(chuàng)建AlertDialog對(duì)象。create21、AlertDialog對(duì)象調(diào)用()方法,讓對(duì)話框在界面上顯示。show22、?Android使用()來實(shí)現(xiàn)消息的傳遞。handler23、物聯(lián)網(wǎng)的()是物聯(lián)網(wǎng)應(yīng)用開發(fā)的一個(gè)挑戰(zhàn)。碎片化24、Java集合的Iterator方法中,hasNext()方法用來查看是否有下一個(gè)元素,有則返回(),沒有則返回()。true,false25、MQTT三種不同層次QoS,其中QoS()表示接收方確保能收到而且只收到一次。226、ESP32進(jìn)行WiFi連接所用的頻段為()。2.4GHz27、MQTT客戶端要接收消息,必須要先()消息。訂閱28、NodeRed的Web頁面分為3級(jí),分別是:菜單(),組group,部件()。tab,spacer29、唯一性約束用于保證表中某個(gè)字段的值不重復(fù)且值不能為(),一個(gè)表能定義多個(gè)唯一性約束。null30、連接查詢中,使用()指定兩個(gè)表的連接字段。ON31、MySQL提供的數(shù)據(jù)類型有(),(),(),()。數(shù)值類型,復(fù)合類型,字符串類型,日期類型32、?SELECT對(duì)查詢結(jié)果進(jìn)行排序的方式有()種。233、?要查詢一個(gè)表的所有字段數(shù)據(jù),除了寫出所有字段名之外,還可以使用()匹配。*34、自增約束可以使表中的某個(gè)字段的值自動(dòng)(),自增約束通常配合主鍵使用,并且只適用于()類型。增加,整數(shù)35、MySQL中,當(dāng)把''當(dāng)做字符輸入時(shí),要在它的前面加上"\",該操作稱為()處理。轉(zhuǎn)義36、Node-RED使用QQ郵件服務(wù)器發(fā)送郵件,使用SMTP的SSL端口為()。46537、Node-RED使用QQ郵件服務(wù)器發(fā)送郵件,發(fā)送郵件節(jié)點(diǎn)中的password,指的是發(fā)件箱的()。授權(quán)碼三、程序設(shè)計(jì)題1、編寫代碼,實(shí)現(xiàn)LED閃爍:1)引腳為26;2)采用宏定義的方法,引腳別名:LED_PIN。答案:#defineLED_PIN26voidsetup(){pinMode(LED_PIN,OUTPUT);}voidloop(){digitalWrite(LED_PIN,HIGH);delay(1000);digitalWrite(LED_PIN,LOW);delay(1000);}2、串口處理函數(shù)SerialEvent(),代碼如下:voidserialEvent(){while(Serial.available()){//getthenewbyte:charinChar=(char)Serial.read();//addittotheinputString:inputString+=inChar;//iftheincomingcharacterisanewline,setaflagsothemainloopcan//dosomethingaboutit:if(inChar=='\n'){stringComplete=true;}}}修改程序,實(shí)現(xiàn)大寫變小寫,以及小寫變大寫。voidserialEvent(){while(Serial.available()){//getthenewbyte:charinChar=(char)Serial.read();if(inChar>='A'&&inChar<='Z'){inChar=inChar+32;}elseif(inChar>='a'&&inChar<='z'){inChar=inChar-32;}//addittotheinputString:inputString+=inChar;//iftheincomingcharacterisanewline,setaflagsothemainloopcan//dosomethingaboutit:if(inChar=='\n'){stringComplete=true;}}}3、串口接收json對(duì)象格式數(shù)據(jù),本例對(duì)由一個(gè)鍵值對(duì)組成的json對(duì)象數(shù)據(jù)進(jìn)行解析,期望串口收到{"LightStatus":1},點(diǎn)亮燈;收到{"LightStatus":0},熄滅燈代碼,代碼片段如下://引腳定義#defineLIGHT25//產(chǎn)品標(biāo)識(shí)符StringIdentifier="LightStatus";voidloop(){//printthestringwhenanewlinearrives:if(stringComplete){Serial.println(inputString);StaticJsonBuffer<200>jsonBuffer;JsonObject&root=jsonBuffer.parseObject(inputString);if(!root.success()){Serial.println("parseObject()failed");inputString="";stringComplete=false;return;}constchar*val=root[Identifier];if(val!=NULL){constuint16_tLightStatus=root[Identifier];if(LightStatus==1){digitalWrite(LIGHT,HIGH);}else{digitalWrite(LIGHT,LOW);}}//clearthestring:inputString="";stringComplete=false;}serialEvent();}如果LED接在pin26,期望收到的串口數(shù)據(jù):"{"Light":1}"實(shí)現(xiàn)關(guān)關(guān)燈,"{"Light":0}"實(shí)現(xiàn)開燈,如何修改程序?//引腳定義#defineLIGHT26//產(chǎn)品標(biāo)識(shí)符StringIdentifier="Light";constuint16_tLight=root[Identifier];if(Light==0){digitalWrite(LIGHT,HIGH);}else{digitalWrite(LIGHT,LOW);}}4、串口0處理函數(shù)SerialEvent(),代碼如下:voidserialEvent(){while(Serial.available()){//getthenewbyte:charinChar=(char)Serial.read();//addittotheinputString:inputString+=inChar;//iftheincomingcharacterisanewline,setaflagsothemainloopcan//dosomethingaboutit:if(inChar=='\n'){stringComplete=true;}}}如果使用串口2,編寫事件處理函數(shù)SerialEvent()。答案:voidserial2Event(){while(Serial2.available()){//getthenewbyte:charinChar=(char)Serial2.read();//addittotheinputString:inputString+=inChar;//iftheincomingcharacterisanewline,setaflagsothemainloopcan//dosomethingaboutit:if(inChar=='\n'){stringComplete=true;}}}5、以下實(shí)現(xiàn)了對(duì)話框功能:finalEditTextet=newEditText(MainActivity.this);et.setText("很好");AlertDialogalertDialog=newAlertDialog.Builder(MainActivity.this).setIcon(R.drawable.open)//設(shè)置圖標(biāo).setTitle("請(qǐng)?zhí)峤唤ㄗh")//設(shè)置標(biāo)題.setView(et)//設(shè)置輸入框.setPositiveButton("確定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){StringeditText=et.getText().toString();//獲取輸入內(nèi)容Toast.makeText(MainActivity.this,"editText:"+editText,Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消",null).show();修改代碼,將對(duì)話框中內(nèi)容區(qū)默認(rèn)文本內(nèi)容改為"請(qǐng)輸入建議",標(biāo)題改為"建議",PositiveButton的文本改為"提交"。參考答案:finalEditTextet=newEditText(MainActivity.this);et.setText("請(qǐng)輸入建議");AlertDialogalertDialog=newAlertDialog.Builder(MainActivity.this).setIcon(R.drawable.open)//設(shè)置圖標(biāo).setTitle("建議")//設(shè)置標(biāo)題.setView(et)//設(shè)置輸入框.setPositiveButton("提交",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){StringeditText=et.getText().toString();//獲取輸入內(nèi)容Toast.makeText(MainActivity.this,"editText:"+editText,Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消",null).show();6、以下是同步請(qǐng)求GET方法的函數(shù)://同步請(qǐng)求函數(shù)
privatevoidtestGet_s(){
//創(chuàng)建請(qǐng)求對(duì)象
Requestrequest=newRequest.Builder()
.url("/v7/weather/now?location=101010100&key=d7ac748d2e2447cdb8d42e13451a646d")
.build();
//開啟子線程,因操作耗時(shí)不能在主線程中執(zhí)行
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
//創(chuàng)建響應(yīng)對(duì)象,客戶端的newCall就是發(fā)起請(qǐng)求的方法,execute是直接執(zhí)行即同步請(qǐng)求,返回即是響應(yīng)
Responseresponse=okHttpClient.newCall(request).execute();
//獲取響應(yīng)的數(shù)據(jù)部分
Stringresult=response.body().string();
//在主線程更新UI,即在textView1文本框中顯示
runOnUiThread(newRunnable(){
@Override
publicvoidrun(){
binding.textView1.setText(result);
}
});
}catch(IOExceptione){
e.printStackTrace();
}
}
}).start();
}將API修改為:/v2/city/lookup?location=%E5%8C%97%E4%BA%AC&key=d7ac748d2e2447cdb8d42e13451a646d編寫程序,并將結(jié)果展示出來。參考代碼://同步請(qǐng)求函數(shù)privatevoidtestGet_s(){//創(chuàng)建請(qǐng)求對(duì)象Requestrequest=newRequest.Builder().url("/v7/weather/now?location=101010100&key=d7ac748d2e2447cdb8d42e13451a646d").build();//開啟子線程,因操作耗時(shí)不能在主線程中執(zhí)行newThread(newRunnable(){@Overridepublicvoidrun(){try{//創(chuàng)建響應(yīng)對(duì)象,客戶端的newCall就是發(fā)起請(qǐng)求的方法,execute是直接執(zhí)行即同步請(qǐng)求,返回即是響應(yīng)Responseresponse=okHttpClient.newCall(request).execute();//獲取響應(yīng)的數(shù)據(jù)部分Stringresult=response.body().string();//在主線程更新UI,即在textView1文本框中顯示runOnUiThread(newRunnable(){@Overridepublicvoidrun(){binding.textView1.setText(result);}});}catch(IOExceptione){e.printStackTrace();}}}).start();}7、以下代碼功能是:判斷收到的字符串里面有沒有字符串"LedStatus",即APP是否要設(shè)置LED燈;有的話,然后用字符串截取函數(shù)取出LedStatus的值,再控制燈的亮滅。voidcallback(char*topic,byte*payload,unsignedintlen){Stringmsg="";StringLedStatus="";Serial.print("Recevice[");Serial.print(topic);Serial.print("]");for(inti=0;i<len;i++){msg+=(char)payload[i];//msg即收到的消息內(nèi)容}Serial.println(msg);if(msg.indexOf("LedStatus")){//判斷消息中是否有字符串"LedStatus",即APP是否要設(shè)置LED燈//通過字符串截取函數(shù)取出LedStatus的值,是字符串類型LedStatus=msg.substring(msg.indexOf("LedStatus\":")+11,msg.indexOf("}"));digitalWrite(LED_PIN,LedStatus.toInt());}}假如APP發(fā)送的命令為:"{"Led":1}",或{"Led":0},ESP32收到后,控制LED亮滅,修改代碼。參考答案:voidcallback(char*topic,byte*payload,unsignedintlen){Stringmsg="";StringLedStatus="";Serial.print("Recevice[");Serial.print(topic);Serial.print("]");for(inti=0;i<len;i++){msg+=(char)payload[i];//msg即收到的消息內(nèi)容}Serial.println(msg);if(msg.indexOf("Led")){//判斷消息中是否有字符串"Led",即APP是否要設(shè)置LED燈//通過字符串截取函數(shù)取出Led的值,是字符串類型LedStatus=msg.substring(msg.indexOf("Led\":")+5,msg.indexOf("}"));digitalWrite(LED_PIN,LedStatus.toInt());}}8、根據(jù)API返回的數(shù)據(jù),編寫了獲取北京城市ID的關(guān)鍵代碼:Stringlocation=jsonObject1.optString(_____);//參數(shù)是鍵JSONArrayjsonArray=newJSONArray(_____);Stringlocation0=jsonArray.optString(_____);//參數(shù)是索引JSONObjectjsonObject_location0=newJSONObject(_____);locationID=jsonObject_location0.optString(_____);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 胸膜炎測(cè)試題目及答案
- 養(yǎng)老院老人生活設(shè)施維修人員表彰制度
- 近期爆破案例分析題目及答案
- 養(yǎng)老院老人病情告知制度
- 食品安全行業(yè)變革潛力探討
- 軟件專利侵權(quán)制度
- 骨科疼痛管理策略與實(shí)踐
- 教育督學(xué)培訓(xùn)講稿
- 2025年惠州仲愷體育教師筆試及答案
- 2025年國(guó)企招聘教師筆試真題及答案
- 高層建筑滅火器配置專項(xiàng)施工方案
- 2023-2024學(xué)年廣東深圳紅嶺中學(xué)高二(上)學(xué)段一數(shù)學(xué)試題含答案
- 2025年數(shù)字貨幣跨境結(jié)算法律場(chǎng)景報(bào)告
- 2026元旦主題班會(huì):馬年猜猜樂馬年成語教學(xué)課件
- 2025中國(guó)農(nóng)業(yè)科學(xué)院植物保護(hù)研究所第二批招聘創(chuàng)新中心科研崗筆試筆試參考試題附答案解析
- 反洗錢審計(jì)師反洗錢審計(jì)技巧與方法
- 檢驗(yàn)科安全生產(chǎn)培訓(xùn)課件
- 安全生產(chǎn)自查自糾報(bào)告及整改措施
- 爆破施工安全管理方案
- 2026全國(guó)青少年模擬飛行考核理論知識(shí)題庫40題含答案(綜合卷)
- 2025線粒體醫(yī)學(xué)行業(yè)發(fā)展現(xiàn)狀與未來趨勢(shì)白皮書
評(píng)論
0/150
提交評(píng)論