精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

小車控制由簡入繁之MQTT控制

開發(fā) 前端
本文主要分享MQTT Broker的搭建、在Openharmony3.0上如何使用harmony_mqtt、并實現(xiàn)MQTT控制小車的Demo。

[[429173]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

1. 簡介

  • #開發(fā)板漂流計劃#小車控制由簡入繁之按鍵控制
  • #開發(fā)板漂流計劃#小車控制由簡入繁之UDP控制

本文在前面兩篇帖子的基礎上,在Openharmony3.0上實現(xiàn)小車上電后自動連接到指定WIFI,并與指定的MQTT Broker建立鏈接、訂閱小車控制“carControl”主題。電腦Windows系統(tǒng)下使用paho軟件連接到相同的MQTT Broker,通過發(fā)送主題為“carControl”的消息來控制小車狀態(tài)。

閱讀本文前,推薦閱讀連志安老師的以下文章:

  • MQTT 協(xié)議開發(fā)入門 - MQTT 簡述、設計規(guī)范、主要特性、協(xié)議原理、協(xié)議數(shù)據(jù)包結(jié)構(gòu)
  • 如何在鴻蒙系統(tǒng)中移植 Paho-MQTT 實現(xiàn)MQTT協(xié)議- 基于openharmony1.0移植Paho-MQTT教程
  • 在鴻蒙系統(tǒng)上使用MQTT編程-對應連老師Gitee倉庫 harmony_mqtt的使用介紹,本文基于這個版本實現(xiàn)MQTT控制小車

本文主要分享MQTT Broker的搭建、在Openharmony3.0上如何使用harmony_mqtt、并實現(xiàn)MQTT控制小車的Demo。

2. 在Ubuntu20.04虛擬機安裝mosquitto搭建Broker

安裝前請確保你的Ubuntu能正常上網(wǎng)并且局網(wǎng)內(nèi)可以訪問到。

2.1 Ubuntu下mosquitto 安裝

安裝指令如下:

  1. sudo apt-get install mosquitto 
  2. sudo apt-get install mosquitto-clients 
  3. sudo apt-get install mosquitto-dev 

2.2 安裝完成后可以用以下指令查看狀態(tài)

  1. service mosquitto status 

 正常狀態(tài)顯示如下

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

這樣子測試用的Broker就搭建好了,Broker的IP地址就是你Ubuntu局域網(wǎng)中的IP,端口默認1883,如果搭建有問題歡迎留言交流。

3.在Openharmony3.0上如何使用harmony_mqtt

3.1 讓harmony_mqtt成功編譯

3.1.1 將harmony_mqtt 下載到Openharmony3.0源碼third_party目錄下并重命名為pahomqtt

可以用git clone 下載后重命名也可以下載壓縮包后解壓。如下圖Z:\ohos300_iot\是我Openharmony3.0源碼的根目錄

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

3.1.2 將pahomqtt添加到hispark_pegasus編譯

修改device\hisilicon\hispark_pegasus\sdk_liteos\BUILD.gn在lite_component(“sdk”)中添加"//third_party/pahomqtt:pahomqtt_static"

(注意:此處修改的BUILD.gn 和Openharmony1.0 版本有區(qū)別,1.0 路徑是vendor\hisi\hi3861\hi3861\BUILD.gn)

  1. lite_component("sdk") { 
  2.   features = [] 
  3.  
  4.   deps = [ 
  5.     "//build/lite/config/component/cJSON:cjson_static"
  6.     "//device/hisilicon/hispark_pegasus/hi3861_adapter/kal"
  7.     "//third_party/pahomqtt:pahomqtt_static"
  8.   ] 

修改完成后重新執(zhí)行編譯后從編譯日志中可以用mqtt看下log,修改成功會有以下信息。

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

但是編譯到最后會有錯誤提示如下,接下來就是修這個編譯錯誤了。

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

3.1.3 修改編譯錯誤

錯誤日志截取如下

  1. [OHOS ERROR] riscv32-unknown-elf-ld: ohos/libs/libpahomqtt_static.a(libpahomqtt_static.MQTTLiteOS.o): in function `MutexInit': 
  2. [OHOS ERROR] MQTTLiteOS.c:(.text.MutexInit+0x0): multiple definition of `MutexInit'; ohos/libs/libdiscovery.a(libdiscovery.os_adapter.o):os_adapter.c:(.text.MutexInit+0x0): first defined here 
  3. [OHOS ERROR] riscv32-unknown-elf-ld: ohos/libs/libpahomqtt_static.a(libpahomqtt_static.MQTTLiteOS.o): in function `MutexLock': 
  4. [OHOS ERROR] MQTTLiteOS.c:(.text.MutexLock+0x0): multiple definition of `MutexLock'; ohos/libs/libdiscovery.a(libdiscovery.os_adapter.o):os_adapter.c:(.text.MutexLock+0x0): first defined here 
  5. [OHOS ERROR] riscv32-unknown-elf-ld: ohos/libs/libpahomqtt_static.a(libpahomqtt_static.MQTTLiteOS.o): in function `MutexUnlock': 
  6. [OHOS ERROR] MQTTLiteOS.c:(.text.MutexUnlock+0x0): multiple definition of `MutexUnlock'; ohos/libs/libdiscovery.a(libdiscovery.os_adapter.o):os_adapter.c:(.text.MutexUnlock+0x0): first defined here 
  7. [OHOS ERROR] scons: *** [output/bin/Hi3861_wifiiot_app.out] Error 1 
  8. [OHOS ERROR] BUILD FAILED!!!! 
  9. [OHOS ERROR] Failed building output/bin/Hi3861_wifiiot_app.out: Error 1 
  10. [OHOS ERROR] you can check build log in /home/soon/ohos300_iot/out/hispark_pegasus/wifiiot_hispark_pegasus/build.log 
  11. [OHOS ERROR] command: "/home/soon/ohostool_101/ninja/ninja -w dupbuild=warn -C /home/soon/ohos300_iot/out/hispark_pegasus/wifiiot_hispark_pegasus" failed 
  12. [OHOS ERROR] return code: 1 
  13. [OHOS ERROR] execution path: /home/soon/ohos300_iot 
  14. soon@soon-u20:~/ohos300_iot $  

 我的修改方式是將

third_party\pahomqtt\MQTTClient-C\src\MQTTClient.c

third_party\pahomqtt\MQTTClient-C\src\liteOS\MQTTLiteOS.c

third_party\pahomqtt\MQTTClient-C\src\liteOS\MQTTLiteOS.h

這三個檔案中的所有的

  1. MutexInit(Mutex*); 
  2. MutexLock(Mutex*); 
  3. MutexUnlock(Mutex*); 

 對應替換為

  1. MqttMutexInit(Mutex*); 
  2. MqttMutexLock(Mutex*); 
  3. MqttMutexUnlock(Mutex*); 

 這樣子就能正常編譯通過了

3.1.4 其他修改和修改后的代碼

third_party\pahomqtt\BUILD.gn中以下三個有沒有并不會影響編譯/使用,所以我把他拿掉了。

  1. "MQTTClient-C\src\liteOS"
  2.       "//vendor/hisi/hi3861/hi3861/third_party/lwip_sack/include"
  3.       "//kernel/liteos_m/components/cmsis/2.0"

修改后的代碼可以直接從附件下載或者從碼云 https://gitee.com/soonliao/pahomqtt 下載。

3.2 MQTT控制小車代碼的實現(xiàn)

3.2.1 applications\sample\wifi-iot\app\car_mqtt\BUILD.gn 的修改

在應用的BUILD.gn添加以下三行內(nèi)容才能調(diào)用到pahomqtt的相關函數(shù)

  1. static_library("car_mqtt") { 
  2.     sources = [ 
  3.         ...... 
  4.     ] 
  5.  
  6.     include_dirs = [ 
  7.         ......     
  8.         "//third_party/pahomqtt:pahomqtt_static"
  9.         "//third_party/pahomqtt/MQTTPacket/src"
  10.         "//third_party/pahomqtt/MQTTClient-C/src"
  11.     ] 

 3.2.2 MQTT 初始化主題訂閱

主要在以下函數(shù)實現(xiàn),詳細的說明可以參考在鴻蒙系統(tǒng)上使用MQTT編程

  1. #include "MQTTClient.h" 
  2.  
  3.  
  4. #define MQTT_BROKER                "192.168.123.230"//改成你的MQTT Broker 地址 
  5. #define MQTT_PORT                  1883 
  6.  
  7. MQTTMessage ackmsg; 
  8. int needAck = 0; 
  9.  
  10. struct opts_struct 
  11.     char* clientid; 
  12.     int nodelimiter; 
  13.     char* delimiter; 
  14.     enum QoS qos; 
  15.     char* username; 
  16.     charpassword
  17.     char* host; 
  18.     int port; 
  19.     int showtopics; 
  20. }  
  21. opts = 
  22.     (char*)"stdout-subscriber", 0, (char*)"\n", QOS2, NULLNULL, (char*)MQTT_BROKER, MQTT_PORT, 1 
  23. }; 
  24.  
  25. unsigned char buf[100]; 
  26. unsigned char readbuf[100]; 
  27.  
  28. int car_mqtt(void) 
  29.     int rc = 0; 
  30.      
  31.     MQTTMessage pubmsg; 
  32.     //小車控制主題carControl 
  33.     char* topic = "carControl"
  34.  
  35.     if (strchr(topic, '#') || strchr(topic, '+')) 
  36.         opts.showtopics = 1; 
  37.     if (opts.showtopics) 
  38.         printf("topic is %s\n", topic); 
  39.  
  40.     Network n; 
  41.     MQTTClient c; 
  42.     //網(wǎng)絡初始化 
  43.     NetworkInit(&n); 
  44.     NetworkConnect(&n, opts.host, opts.port); 
  45.     //設置MQTT緩存和啟動MQTT線程 
  46.     MQTTClientInit(&c, &n, 1000, buf, 100, readbuf, 100); 
  47.     MQTTStartTask(&c); 
  48.     //設置MQTT相關參數(shù) 
  49.     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;        
  50.     data.willFlag = 0; 
  51.     data.MQTTVersion = 3; 
  52.     data.clientID.cstring = opts.clientid; 
  53.     data.username.cstring = opts.username; 
  54.     data.password.cstring = opts.password
  55.  
  56.     data.keepAliveInterval = 10; 
  57.     data.cleansession = 1; 
  58.     printf("Connecting to %s %d\n", opts.host, opts.port); 
  59.     //連接到MQTT服務器 
  60.     rc = MQTTConnect(&c, &data); 
  61.     printf("Connected %d\n", rc); 
  62.     //訂閱主題和接收消息 
  63.     printf("Subscribing to %s\n", topic); 
  64.     rc = MQTTSubscribe(&c, topic, opts.qos, messageArrived); 
  65.     printf("Subscribed %d\n", rc); 
  66.     //狀態(tài)變化后發(fā)布主題carStatus,消息內(nèi)容ackmsg.payload 
  67.     memset(&ackmsg, '\0', sizeof(ackmsg)); 
  68.     ackmsg.payload = (void*)"ACK"
  69.     ackmsg.payloadlen = strlen((char*)ackmsg.payload); 
  70.     ackmsg.qos = QOS0; 
  71.     ackmsg.retained = 0; 
  72.     ackmsg.dup = 0;  
  73.  
  74.     while (1) 
  75.     { 
  76.         if(needAck == 1)//收到消息后,發(fā)送主題carStatus并攜帶狀態(tài)消息 
  77.         { 
  78.             needAck = 0; 
  79.             printf("Publish carStatus ackmsg %d %s \n", (int)ackmsg.payloadlen, (char*)ackmsg.payload);  
  80.             MQTTPublish(&c, "carStatus", &ackmsg); 
  81.         } 
  82.         sleep(1);    
  83.     } 
  84.      
  85.     printf("Stopping\n"); 
  86.  
  87.     MQTTDisconnect(&c); 
  88.     NetworkDisconnect(&n); 
  89.  
  90.     return 0; 

3.2.1 小車控制代碼

通過MQTTSubscribe(&c, topic, opts.qos, messageArrived);注冊messageArrived回調(diào)實現(xiàn),代碼如下

  1. void messageArrived(MessageData* md) 
  2.  
  3.     MQTTMessage* message = md->message; 
  4.  
  5.     memset(&ackmsg, '\0', sizeof(ackmsg)); 
  6.     ackmsg.qos = QOS0; 
  7.     ackmsg.retained = 0; 
  8.     ackmsg.dup = 0; 
  9.  
  10.     if (opts.showtopics) 
  11.         printf("%.*s\t", md->topicName->lenstring.len, md->topicName->lenstring.data); 
  12.     if (opts.nodelimiter) 
  13.         printf("%.*s\n", (int)message->payloadlen, (char*)message->payload); 
  14.     else 
  15.         printf("%.*s%s\n", (int)message->payloadlen, (char*)message->payload, opts.delimiter); 
  16.  
  17.     if(strncmp("forward", message->payload, 7)== 0) { 
  18.         needAck = 1; 
  19.         car_go_forward(); 
  20.         ackmsg.payload = (void*)"forward"
  21.     } 
  22.     if(strncmp("back", message->payload, 4) == 0) { 
  23.         needAck = 1; 
  24.         car_go_back(); 
  25.         ackmsg.payload = (void*)"back"
  26.     } 
  27.     if(strncmp("left", message->payload, 4) == 0) { 
  28.         needAck = 1; 
  29.         car_turn_left(); 
  30.         ackmsg.payload = (void*)"left"
  31.     } 
  32.     if(strncmp("right", message->payload, 5) == 0) { 
  33.         needAck = 1; 
  34.         car_turn_right(); 
  35.         ackmsg.payload = (void*)"right"
  36.     } 
  37.     if(strncmp("stop", message->payload, 4) == 0) { 
  38.         needAck = 1; 
  39.         car_stop(); 
  40.         ackmsg.payload = (void*)"stop"
  41.     } 
  42.     if(needAck == 1) { 
  43.         ackmsg.payloadlen = strlen((char*)ackmsg.payload); 
  44.     } 

4.編譯及測試

4.1 小車控制代碼的編譯

完整的代碼請見附件或者Gitee https://gitee.com/soonliao/car_mqtt,使用方式如下

4.1.1 將car_mqtt解壓或者git clone 到applications\sample\wifi-iot\app\路徑下

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

4.1.2 修改applications\sample\wifi-iot\app\BUILD.gn

  1. import("//build/lite/config/component/lite_component.gni"
  2.  
  3. lite_component("app") { 
  4.     features = [ 
  5.         "car_mqtt"
  6.     ] 

4.1.3 修改WIFI SSID、密碼及MQTT Broker IP

修改applications\sample\wifi-iot\app\car_mqtt\src\car_main.c

  1. #define WIFI_SSID                  "SSIDABCD"//WIFI賬號 
  2. #define WIFI_PW                    "MIMA1234"//WIFI密碼 
  3. #define MQTT_BROKER                "192.168.123.230"//改成你的MQTT Broker 地址 
  4. #define MQTT_PORT                  1883//改成你的MQTT Broker 端口,默認1883 

4.1.4 開啟PWM 功能,開啟方式如下

電機驅(qū)動會用到PWM 模塊所以要開啟

device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk

  1. CONFIG_PWM_SUPPORT is not set 

改為

  1. CONFIG_PWM_SUPPORT=y 

加上第3部分中的pahomqtt相關修改,整個Demo就可以編譯通了。

4.2 小車控制代碼的測試

4.2.1 從串口log查看

成功連接WIFI,且連上MQTT Broker訂閱主題的log如下

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

4.2.2 電腦Windows系統(tǒng)下paho軟件發(fā)送測試指令

測試軟件在附件,或者參考連老師的說明下載,控制指令支持前進“forward”、后退“back”、右轉(zhuǎn)“right”、左轉(zhuǎn)“left”、停止“stop”,在小車成功執(zhí)行指令后會返回一條carStatus的主題并攜帶狀態(tài)消息。

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

接收到指令后串口會有以下打印

#開發(fā)板漂流計劃#小車控制由簡入繁之MQTT控制-鴻蒙HarmonyOS技術(shù)社區(qū)

文章相關附件可以點擊下面的原文鏈接前往下載

https://harmonyos.51cto.com/resource/1319

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2021-10-08 14:48:03

鴻蒙HarmonyOS應用

2021-10-08 14:41:11

鴻蒙HarmonyOS應用

2020-11-30 10:18:02

鴻蒙小車

2022-04-19 11:09:13

Wi-Fi IoT智能小車鴻蒙

2021-09-09 10:06:09

鴻蒙HarmonyOS應用

2011-07-29 13:14:39

趨勢科技中小企業(yè)安全軟件包

2013-12-19 09:32:01

SDN南向網(wǎng)絡控制

2011-02-28 14:34:01

蘋果iOS

2019-06-13 11:50:41

Python面向?qū)ο?/a>編程語言

2012-11-15 10:42:10

云集成大數(shù)據(jù)云應用集成

2019-11-25 15:32:30

虛擬化IO故障

2011-06-20 10:19:27

2011-07-13 10:29:44

域控制器

2017-04-25 10:46:57

Spring BootRESRful API權(quán)限

2021-07-09 13:54:31

零信任網(wǎng)絡安全網(wǎng)絡攻擊

2017-12-21 17:10:26

Teradata

2011-07-13 14:06:15

域控制器服務器

2011-07-06 15:25:33

Windows控制臺

2011-07-12 09:29:10

主域控制器備份域控制器

2020-11-03 11:39:22

wifi小車
點贊
收藏

51CTO技術(shù)棧公眾號

久久五月婷婷丁香社区| 精品一区av| 亚洲国产一区二区视频| 99精品欧美一区二区三区| 久久久精品国产sm调教网站| 57pao国产一区二区| 亚洲天堂中文字幕| 99三级在线| 欧美一级特黄视频| 国产探花在线精品| 欧美日韩中文字幕一区二区| 影音先锋男人的网站| 国产77777| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美999| 性刺激的欧美三级视频| 伊人影院在线视频| av网站免费线看精品| 日韩av手机在线观看| 99久久久无码国产精品不卡| 91精品尤物| 欧美日韩中文字幕日韩欧美| 亚洲精品一区二区三区av| www.蜜臀av.com| 久久精品导航| 欧美美女18p| 一本加勒比波多野结衣| 欧美成人一二区| 国内激情视频在线观看| 国模少妇一区二区三区| 久久久久国色av免费观看性色| 少妇真人直播免费视频| 国产一区二区三区黄网站| 图片区小说区区亚洲影院| 亚洲乱码一区二区三区三上悠亚| 亚洲第一页在线观看| 青娱乐精品视频| 久久久亚洲国产| 极品蜜桃臀肥臀-x88av| 久本草在线中文字幕亚洲| 欧美视频自拍偷拍| 国产av天堂无码一区二区三区| 亚洲成人三级| 久久亚区不卡日本| 国产精品jizz视频| 国产精品亚洲欧美在线播放| 欧美中文字幕| 国内精品国产三级国产在线专| 少妇高潮惨叫久久久久| 在线成人动漫av| 精品久久久久久久久久久久久久久久久| jizz欧美激情18| 国产美女高潮在线观看| 亚洲免费伊人电影| 亚洲图片在线观看| 黄色视屏网站在线免费观看| 成人av午夜影院| 97自拍视频| 91亚洲欧美激情| 日本成人在线一区| 日韩免费观看高清| 国产又黄又猛又粗又爽| 影音先锋中文字幕一区| 欧美精品日韩三级| 色哟哟一一国产精品| 亚州综合一区| 亚洲国产精品悠悠久久琪琪| 国产精品日日摸夜夜爽| 日本免费成人| 欧美日韩精品一区二区在线播放| 国产精品美女在线| 欧美日韩精品在线一区二区 | 欧美亚洲高清一区二区三区不卡| 欧美二区在线视频| 欧美男男tv网站在线播放| 亚洲高清在线精品| 成年人网站国产| 啊啊啊久久久| 欧美午夜片在线免费观看| 中文字幕日本最新乱码视频| 国产精品av一区二区三区| 欧美视频精品一区| 日韩免费高清在线| 国产精品蜜月aⅴ在线| 91九色最新地址| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 写真福利精品福利在线观看| 色婷婷久久99综合精品jk白丝| 日本999视频| 日韩免费在线电影| 欧美日本一区二区在线观看| 夜夜夜夜夜夜操| 精品视频成人| 亚洲成色www8888| 最近中文字幕免费视频| 清纯唯美亚洲综合一区| 一本一本久久a久久精品牛牛影视| 亚洲av无码一区二区三区人 | 日本www在线| 亚洲欧美在线观看| 超碰97免费观看| 91白丝在线| 欧美在线观看视频一区二区三区| 午夜激情av在线| 亚洲视频精选| 亚洲一区二区久久| 91插插插插插插| 18成人免费观看视频| 青青久久aⅴ北条麻妃| 亚洲天堂自拍偷拍| 99久久精品免费看| 欧美成人三级视频网站| 3d动漫一区二区三区| 麻豆av在线免费观看| 一区二区三区成人| 成人在线免费播放视频| 国产精品色婷婷在线观看| 亚洲精品在线免费观看视频| 黄色三级生活片| 欧美日韩亚洲一区二区三区在线| 国产91av在线| 国产精品探花视频| 国产精品中文字幕日韩精品| 欧美成人免费在线| 国产一二三区在线观看| 黑人欧美xxxx| 色婷婷.com| 任你弄精品视频免费观看| 日韩在线视频一区| 五月婷婷中文字幕| 国产高清成人在线| 亚洲国产精品一区二区第一页 | 国产精品1024| 日韩在线国产| 91九色国产在线播放| 欧美精品1区2区3区| 久久精品国产亚洲av麻豆| 国产中文精品久高清在线不| 欧美丰满片xxx777| 中国老头性行为xxxx| 91影院在线观看| 一区二区三区在线视频111| 蜜桃麻豆av在线| 日韩欧美综合在线| 91香蕉视频污在线观看| 久久资源在线| 国产欧美一区二区视频| www视频在线看| 欧美午夜片在线看| 亚洲成人网在线播放| 亚洲人体av| 国产成人中文字幕| 少妇高潮久久久| 亚洲嫩草精品久久| 色婷婷激情视频| 成人6969www免费视频| 精品久久久久久电影| 亚洲淫片在线视频| www.国产免费| 亚洲视频一区在线| 色婷婷.com| 99久久99久久精品国产片桃花| 国产精品99久久久久久www| 乱精品一区字幕二区| 一区二区三区欧美久久| 手机av在线网站| 99久久综合| 国产精品一区二区电影| h视频在线免费| 欧美综合亚洲图片综合区| 中文字幕丰满孑伦无码专区| 国产精品久久久久久久免费软件| 久久99久久99精品蜜柚传媒| 天堂中文av在线资源库| 日韩精品在线观看网站| 国产午夜麻豆影院在线观看| 国产日韩v精品一区二区| 亚洲中文字幕久久精品无码喷水| 蜜桃成人av| 国产国语刺激对白av不卡| 国内在线免费高清视频| 欧美视频裸体精品| 91激情视频在线观看| 日韩激情av在线| 手机成人在线| 色综合视频一区二区三区日韩 | 伊人成人免费视频| 欧美freesex交免费视频| 97久草视频| 欧美理论片在线播放| 亚洲福利精品在线| 国产精品熟女视频| 国产亚洲欧美日韩在线观看一区二区| 欧美一级视频一区二区| 日本免费中文字幕在线| 亚洲第一中文字幕在线观看| 中文天堂在线资源| 亚洲国产成人高清精品| 亚洲一区 欧美| 成人一级视频在线观看| 色婷婷狠狠18| 亚洲少妇一区| 国产树林野战在线播放| 一区二区三区韩国免费中文网站| 成人做爰www免费看视频网站| 日韩理论视频| 色婷婷精品大视频在线蜜桃视频| 久久精品人成| 欲香欲色天天天综合和网| 久久成人精品视频| 黄色av网站在线免费观看| 欧美一区二区精品久久911| 欧美日韩一二三四区| 亚洲狠狠丁香婷婷综合久久久| 中文字幕成人动漫| 99视频超级精品| 黄色a级三级三级三级| 天堂va蜜桃一区二区三区| 欧美高清中文字幕| 国产精品久久久久久| 欧美精品欧美精品| 韩国精品福利一区二区三区| 成人国产在线视频| 日本在线视频一区二区| 欧美中文在线观看国产| 俺来俺也去www色在线观看| 久久成人精品一区二区三区| 91.xxx.高清在线| 亚洲午夜色婷婷在线| 午夜影院在线视频| 精品国产1区2区3区| 国产丝袜在线视频| 欧美日高清视频| 一区二区三区在线免费观看视频| 91黄视频在线观看| 800av免费在线观看| 欧美日韩国产麻豆| 欧美亚洲天堂网| 亚洲动漫第一页| 九九热精品免费视频| 亚洲免费观看视频| 免费成年人视频在线观看| 国产精品乱码久久久久久| a级在线免费观看| 国产欧美一区二区在线观看| 中文字幕免费视频| 国产日韩欧美综合在线| 最近中文字幕免费视频| 国产欧美精品一区二区色综合| 亚洲第一成人网站| 国产亲近乱来精品视频| 91资源在线播放| 国产精品久久一级| 女性裸体视频网站| 樱桃视频在线观看一区| 青青草手机视频在线观看| 亚洲福利一区二区三区| 国产又黄又粗又爽| 在线亚洲一区二区| a片在线免费观看| 欧美人伦禁忌dvd放荡欲情| 99精品免费观看| 亚洲电影一级片| 91久久久久久国产精品| 亚洲国产欧美国产第一区| 国产精品swag| 在线看成人短视频| 亚洲国产精品一区在线观看不卡| 欧美wwwww| 免费看日b视频| 一本色道久久综合亚洲精品高清| 午夜肉伦伦影院| 麻豆成人91精品二区三区| 先锋资源在线视频| av网站一区二区三区| 免费视频91蜜桃| 亚洲免费电影在线| 日韩欧美亚洲一区二区三区| 色综合 综合色| 91精品国产色综合久久不8| 日韩女同互慰一区二区| 日本成人一区| 日韩亚洲在线观看| 久草在线中文最新视频| 国产精品久久久久久久久久三级| 国产aⅴ精品一区二区四区| 国产在线播放一区二区| 欧美极品中文字幕| 色爽爽爽爽爽爽爽爽| 国产日韩欧美| 污网站在线免费| 97se亚洲国产综合自在线| 性爱在线免费视频| 欧美日韩免费看| 一级做a爱片性色毛片| 亚洲国产精久久久久久 | 国产欧美日韩另类视频免费观看| 国产喷水在线观看| 午夜精品一区二区三区免费视频 | 日韩国产在线观看一区| 麻豆免费在线观看视频| 欧美激情一区二区三区全黄| 久久99久久久| 欧美日韩激情一区| 亚洲av毛片成人精品| 久久影视电视剧免费网站| 忘忧草在线影院两性视频| 成人啪啪免费看| 精品产国自在拍| 国产日本在线播放| 韩国成人在线视频| 成人黄色a级片| 精品日本高清在线播放| www香蕉视频| 日日摸夜夜添一区| 亚洲精品在线影院| 国产午夜精品一区| 国产又黄又爽又无遮挡| 亚洲欧美日韩小说| 最近日韩免费视频| 国产视频久久久久久久| 国产蜜臀一区二区打屁股调教| 成人黄色在线免费| 欧美日韩一区二区综合| 欧美日韩二三区| 成人a免费在线看| 91日韩中文字幕| 欧美人妇做爰xxxⅹ性高电影| 黄色片免费在线| 日本韩国欧美精品大片卡二| 成午夜精品一区二区三区软件| 日韩精品福利片午夜免费观看| 另类小说综合欧美亚洲| 国产午夜福利一区| 在线观看日韩高清av| 精品欧美不卡一区二区在线观看| 97视频com| 人人精品亚洲| 漂亮人妻被中出中文字幕| 91日韩精品一区| 日韩在线观看第一页| 亚洲成人黄色网址| 阿v视频在线观看| 精品日产一区2区三区黄免费| 亚洲日本激情| 97人妻精品一区二区三区免费| 亚洲五月六月丁香激情| 午夜精品久久久久久久99老熟妇| 欧美精品生活片| 97品白浆高清久久久久久| 久艹在线免费观看| 99久久免费视频.com| 91精品国产综合久久久蜜臀九色| 日韩电影中文字幕| 亚洲电影观看| 欧美在线3区| 奇米精品一区二区三区四区 | 国产va免费精品高清在线| 中文有码一区| 亚洲黄色av网址| 国产精品不卡一区二区三区| 在线观看视频二区| 久久精品夜夜夜夜夜久久| 国产一区二区三区亚洲综合| www.18av.com| 99国产精品一区| 在线观看日本网站| 中文字幕欧美国内| 日韩一区二区三免费高清在线观看| 中国一级黄色录像| 丰满岳乱妇一区二区三区| 青青国产在线观看| 国产性猛交xxxx免费看久久| 国产精品久久久久久久久久久久久久久 | 黄色av网站免费观看| 一区二区三区国产视频| 最新亚洲国产| 国产妇女馒头高清泬20p多| 久久久久久久综合日本| 亚洲天堂免费av| 国模gogo一区二区大胆私拍| 国产欧美日韩精品一区二区免费| 日韩av一卡二卡三卡| 无吗不卡中文字幕| 成人免费视频| 99在线视频免费观看| 久久国产日韩| 欧美三级在线免费观看| 日韩精品欧美激情| 不卡一区视频| 欧美国产亚洲一区| 中文字幕一区二区三区蜜月| 刘玥91精选国产在线观看| 国产精品久久久久久久久借妻| 欧美在线看片| 波多野结衣 在线| 欧美一级高清大全免费观看| 在线视频cao| 久久久久久久久影视| 国产亚洲精品免费|