久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Android串口工具源碼詳解:從JNI橋接到設備節(jié)點通信

Android串口工具源碼詳解:從JNI橋接到設備節(jié)點通信 簡介這份資源是一套基于Android平臺的串口通信工具完整源碼面向需要實現(xiàn)串口調(diào)試、設備通信的Android應用開發(fā)者。項目以 ComAssistant-master 為基礎覆蓋了權限動態(tài)申請、串口API調(diào)用、波特率與校驗位配置、數(shù)據(jù)讀寫、后臺線程管理以及異常處理等關鍵開發(fā)環(huán)節(jié)適合入門學習或作為實際項目的搭建參考。資源共43個文件壓縮包約469KB核心部分包括Java層源碼、so動態(tài)庫、jni原生C代碼以及XML界面配置目錄結構完整可從上層界面一路追蹤到底層串口通信實現(xiàn)。已有1790人在CSDN學習瀏覽該資源驗證了內(nèi)容的實用性與參考價值。通過這份源碼開發(fā)者能夠清晰理解Android串口通信的完整流程掌握多設備枚舉、連接狀態(tài)管理、事件驅動收發(fā)等進階要點有效縮短自主二次開發(fā)與排錯周期。1. 為什么需要一份 Android 串口工具源碼做工業(yè)平板、儀器儀表或車機應用的同學遲早會撞上這樣一幕設備上留了一個 DB9 或 RS485 接口對方的協(xié)議手冊寫得像天書但業(yè)務上又必須在 Android 系統(tǒng)里把這路數(shù)據(jù)收進來。市面上現(xiàn)成的串口調(diào)試 App 一抓一大把能測通硬件的收尾但沒法直接嵌進自己的應用里——后臺服務、協(xié)議解析、斷線重連全部得從自己的代碼里長出來。這份標題里的源碼核心就是一套從應用層打開 Linux 字符設備節(jié)點、配置波特率與數(shù)據(jù)位、再以流的形式完成收發(fā)的完整工程。它解決的是「Android 應用側怎么和外部串口設備穩(wěn)定通信」這個具體問題。它的適用對象很明確一類是要把串口能力接進自研 App 的工程師另一類是剛接觸 Android 串口開發(fā)、想從一份可編譯的工程里搞懂原理的初學者。很多開源實現(xiàn)把 Java 層和 C 層的職責分得很清楚——Java 層負責設備路徑、權限和流接口C 層用 termios 系列函數(shù)真正操作設備文件。對開發(fā)者來說這份源碼既是可直接引用的庫也是一份能讀懂的教科書。我見過不少人拿著源碼在 ARM 板子上跑通后才發(fā)現(xiàn)自己在 JTAG 和權限上耗掉的時間比寫業(yè)務代碼還多這篇筆記就按「原理 → 拆源碼 → 集成 → 避坑」的順序把它講透。2. 串口接入 Android 的第一性原理設備節(jié)點與 JNI 橋接2.1 Android 串口設備節(jié)點到底藏在哪Android 底層是 Linux 內(nèi)核串口在 Linux 里并不神秘它就是一類字符設備文件。常見的設備節(jié)點路徑有/dev/ttyS0、/dev/ttyMT0、/dev/ttyUSB0等具體叫什么取決于 SoC 平臺和物理接口類型。比如多數(shù) x86 工控板的串口是/dev/ttyS0不少 ARM 平臺把 UART 命名為ttyMT、ttyAMA之類的前綴如果通過 USB 轉串口芯片接入則多半是/dev/ttyUSB0。了解這一點主要是為了在代碼里做設備路徑的配置化別寫死一個路徑就以為萬事大吉。串口作為字符設備的本質意味著打開它要用文件操作語義配置參數(shù)要走termios結構體收發(fā)數(shù)據(jù)就是read()和write()。Java 層不提供直接訪問/dev/路徑下的設備文件的能力所以所有開源方案都繞不開 JNI。常見做法是用 NDK 編譯一個本地庫在 C 層調(diào)用open()、tcgetattr()、tcsetattr()和read()/write()再把文件描述符傳回 Java 層由 Java 層包裝成InputStream和OutputStream。這個橋接層的質量直接決定了項目后續(xù)的穩(wěn)定性。2.2 為什么 Java 不能直接操作串口不少剛接觸的人會問我把文件路徑交給FileInputStream不就行了實驗一次就會發(fā)現(xiàn)不行。原因有兩層一是 SELinux 和 Android 的應用沙箱權限模型不允許普通 App 直接打開/dev/ttyS*這類節(jié)點這點后面避坑章節(jié)再展開二是在 Android 中直接往任意/dev/文件寫數(shù)據(jù)是受系統(tǒng)策略管控的即使僥幸打開配置波特率、數(shù)據(jù)位這種操作也沒有對應的 Java API。串口參數(shù)本質是對驅動層的 termios 結構做ioctl設置這只能從原生代碼完成。所以 JNI 層的核心任務就三件打開設備文件、配置 termios、把 fd 交給 Java 層做流式讀寫。打開設備的 C 代碼中open()通常會傳入O_RDWR和O_NOCTTY兩個標志O_NOCTTY的意思是防止這個串口設備成為當前進程的控制終端避免進程收到意外的終端控制信號。參數(shù)用O_NONBLOCK還是阻塞模式取決于讀線程的實現(xiàn)策略后面會細說。int fd open(device_path, O_RDWR | O_NOCTTY | O_NDELAY); if (fd -1) { // 打開失敗打印 errno 便于排查權限與路徑問題 return -1; } // 把串口設置為阻塞模式讓讀寫有自然的等待語義 fcntl(fd, F_SETFL, 0);這段代碼里的O_NDELAY在這里的作用是與F_SETFL搭配使用先以非阻塞方式探測能不能打開節(jié)點隨后通過fcntl把 fd 恢復為阻塞模式。這樣既避免打開階段因設備狀態(tài)異常導致掛死又保證正式讀寫時能按阻塞流模型處理。很多源碼就是在這一層掉了鏈子——非阻塞 fd 傳給 Java 層后InputStream.read()會立即返回 0 或拋出異常導致數(shù)據(jù)讀不到或 CPU 空轉。如果你看到的源碼里沒有這一行大概率會在實際設備上踩到這個坑。2.3 termios 配置波特率、數(shù)據(jù)位與校驗位的 C 層寫法配置 termios 是整個源碼里最容易“看著沒問題但跑起來全是亂碼”的部分。標準流程是先tcgetattr拿到當前配置修改c_cflag、c_iflag、c_oflag、c_lflag再用tcsetattr寫回。常見的干凈做法是先調(diào)用cfmakeraw(options)把驅動設置為原始模式這樣不會對輸入輸出做回車換行轉換、不會把CtrlC當信號處理避免 Linux 行規(guī)程干擾二進制數(shù)據(jù)幀。struct termios options; tcgetattr(fd, options); cfmakeraw(options); // 設置波特率這里的速率宏要與 Java 層傳過來的 int 值對應 cfsetispeed(options, B9600); cfsetospeed(options, B9600); // 數(shù)據(jù)位 8、停止位 1、無校驗最常見組合 options.c_cflag ~CSIZE; options.c_cflag | CS8; options.c_cflag ~CSTOPB; options.c_cflag ~PARENB; // 啟用接收關閉硬件流控大多數(shù) RS232 設備不用 RTS/CTS options.c_cflag | CREAD | CLOCAL; options.c_cflag ~CRTSCTS;參數(shù)說明這一組配置的含義CS8表示 8 個數(shù)據(jù)位CSTOPB清零表示 1 個停止位若置位則是 2 個停止位PARENB清零表示無校驗置位后還要配合PARODD決定奇偶校驗。CREAD必須置位否則驅動不會把收到的數(shù)據(jù)交給應用CLOCAL忽略調(diào)制解調(diào)器的載波信號避免檢測不到 DCD 就收不到數(shù)據(jù)。cfmakeraw之后c_iflag和c_lflag基本不用再改這一點是很多源碼里容易忽略的細節(jié)——有人只設置了c_cflag卻保留了行規(guī)程的轉換結果收到的幀里時不時多一個\r或0x0A。雙向波特率不一定要一樣部分設備要求 115200 發(fā)送、9600 接收這種非對稱配置。源碼里一般會做成讀波特率和寫波特率兩個參數(shù)內(nèi)部依次調(diào)用cfsetispeed和cfsetospeed。如果發(fā)現(xiàn)設備回數(shù)據(jù)亂碼第一件事就查這兩個值有沒有配對。3. 拆解源碼核心模塊讀、寫、關閉的生命周期管理3.1 Java 層與本地庫的對應關系拿到一份串口工具源碼先看 Java 層的類結構通常能整理出幾個固定角色一個持設備路徑和參數(shù)并調(diào)用 native 打開方法的門面類一個繼承InputStream的讀包裝類一個繼承OutputStream的寫包裝類再加上關閉時釋放 fd 的清理邏輯。native 方法的典型聲明是private native int open(String path, int baudrate, int flags)open返回的 int 就是要持有的文件描述符。這套設計的關鍵在于Java 層的流對象與底層 fd 是綁定的流生命周期必須跟設備開關周期嚴格同步。常見錯誤是只關閉了InputStream卻沒關閉底層 fd導致串口被長時間占用、其它進程無法再打開。所以源碼里close()方法通常會先在 Java 層標記一個mOpen false再調(diào)用 nativeclose()并且在 native 內(nèi)部做了 fd 合法性檢查防止close(-1)導致崩潰。3.2 讀線程模型阻塞讀還是事件輪詢串口數(shù)據(jù)是異步到達的所以讀操作必然要放到子線程。很多源碼會在打開設備后啟動一個讀線程在線程里循環(huán)調(diào)用InputStream.read(buffer)。阻塞模式下沒有數(shù)據(jù)時線程會自然掛起不占 CPU數(shù)據(jù)到達時驅動喚醒線程完成讀取。如果 C 層沒有把 fd 恢復為阻塞模式這個循環(huán)就會變成空轉CPU 占用率直線上升。Override public void run() { byte[] buffer new byte[256]; while (mIsOpen) { int length; try { length mFileInputStream.read(buffer); if (length 0) { byte[] data new byte[length]; System.arraycopy(buffer, 0, data, 0, length); if (mDataListener ! null) { mDataListener.onDataReceived(data); } } } catch (IOException e) { if (mIsOpen) { // 只有未主動關閉時的異常才需要上報 mDataListener.onError(e); } break; } } }邏輯說明這個讀循環(huán)里三個容易寫錯的點。第一mIsOpen先判斷再read()但read()可能長期阻塞在設備上所以關閉方法里要同時close()流來打斷阻塞第二buffer大小通常 128256 字節(jié)對于一幀幾十字節(jié)的協(xié)議足夠遇到大幀場景再調(diào)大第三必須把IOException掐在本地區(qū)分是主動關閉還是異常斷開否則線程會不正常終止。參數(shù)上我一般把buffer設為 512覆蓋絕大多數(shù)傳感器和工業(yè)協(xié)議的幀長度。3.3 寫操作與串口驅動的發(fā)送緩沖寫操作相對簡單直接通過OutputStream.write()完成。需要留意的點是串口驅動的發(fā)送緩沖區(qū)并不是無限大寫入速度超過設備消費能力時底層write()會阻塞所以業(yè)務上發(fā)送協(xié)議幀的線程不要放在 UI 線程。另一個細節(jié)是write()成功返回并不代表對方設備真的收到了完整數(shù)據(jù)它只表示數(shù)據(jù)進入內(nèi)核發(fā)送緩沖區(qū)對講機式的應用還要靠應答幀確認。public void send(byte[] data) { if (!mIsOpen || data null || data.length 0) { return; } try { mOutputStream.write(data); mOutputStream.flush(); } catch (IOException e) { // 寫入失敗時記錄日志并觸發(fā)重連回調(diào) onConnectionError(e); } }這里flush()對流本身沒有意義因為沒有用戶態(tài)緩沖區(qū)但保留這個調(diào)用是為了將來替換成帶緩沖的包裝流時行為保持一致。send()方法最好做成同步方法或由上層消息隊列統(tǒng)一調(diào)度避免多個業(yè)務線程并發(fā)write()導致幀交叉錯亂。多數(shù)設備協(xié)議對幀連續(xù)性敏感一條指令被另一條指令的字節(jié)打斷解析端必然報錯。3.4 串口參數(shù)的可配置化設計良好的源碼不會把這些參數(shù)寫死在 C 代碼或者 Java 類的構造方法里而是支持讀取配置或動態(tài)傳入。設備路徑、波特率、數(shù)據(jù)位、停止位、校驗位、流控方式這六項每一項都應當被上層參數(shù)化。常見做法是提供一個配置類或SerialPortOptions結構體打開時一次性傳入。參數(shù)可選值缺省建議設備路徑/dev/ttyS0、/dev/ttyMT0、/dev/ttyUSB0運行時探測波特率9600、19200、115200 等按設備手冊數(shù)據(jù)位5、6、7、88停止位1、21校驗位NONE、EVEN、ODDNONE流控NONE、RTS/CTSNONE表格里的參數(shù)需要兩者都要覆蓋到一是 C 層的 termios 宏定義二是 Java 層的參數(shù)映射邏輯。特別提醒波特率只能使用內(nèi)核預定義的速率值直接傳一個隨意數(shù)字給底層會設置失敗或得到錯誤速率。非標波特率如 2400、57600 之外的奇異值需要內(nèi)核和驅動支持BOTHER機制絕大多數(shù)商用源碼不處理這種情況。4. 把源碼集成進自己的 Android 工程從編譯到第一個 Demo4.1 準備工作拷貝源碼與本地庫進工程無論從哪獲得的源碼通用集成步驟都是類似的找到 C 層源碼或預編譯的.so庫、把 Java 層工具類拷貝到自己的src目錄、配置CMakeLists.txt或把.so放到src/main/jniLibs/abi/下。如果是 .so 庫需要確認包含arm64-v8a和armeabi-v7a目錄某些源碼只帶 v7a在 64 位真機上可能加載失敗。android { defaultConfig { externalNativeBuild { cmake { cppFlags // 指定要編譯支持的 ABI abiFilters arm64-v8a, armeabi-v7a } } } externalNativeBuild { cmake { path src/main/cpp/CMakeLists.txt } } }這段配置的含義是讓 Gradle 在構建時自動用 CMake 編譯 C 層源碼并只生成arm64-v8a和armeabi-v7a兩種指令集。真機調(diào)試時這兩個 ABI 基本覆蓋全部設備如果還要支持 x86 模擬器可以臨時加一個x86_64但發(fā)布包不推薦帶上體積變大且沒有實際意義。如果源碼不附帶 C 源碼而只有 .so那就省去externalNativeBuild配置直接依賴預編譯庫。4.2 初始化與打開串口的最小可用代碼集成調(diào)試階段不要上來就套復雜的業(yè)務框架。先用最小代碼把設備打開、收到一串數(shù)據(jù)、再關掉驗證硬件鏈路是通的然后再往上層加協(xié)議解析。最小可用的調(diào)用邏輯一般是聲明設備路徑與參數(shù) → 實例化串口工具類 → 注冊數(shù)據(jù)回調(diào) → 打開設備。// 1. 確定設備節(jié)點先執(zhí)行 ls /dev/ttyS* 確認實際路徑 String devicePath /dev/ttyS0; int baudrate 9600; // 2. 創(chuàng)建配置數(shù)據(jù)位8停止位1無校驗 SerialPortOptions options new SerialPortOptions.Builder() .devicePath(devicePath) .baudrate(baudrate) .dataBits(8) .stopBits(1) .parity(SerialPortOptions.PARITY_NONE) .build(); // 3. 打開設備讀線程自動啟動 SerialPort serialPort new SerialPort(options); serialPort.setDataListener(data - { // 收到數(shù)據(jù)后投遞到業(yè)務線程不要在這里做耗時操作 Log.d(SerialPort, recv: bytesToHex(data)); }); serialPort.open();邏輯說明這個代碼塊演示了從配置到打開的最小閉環(huán)。bytesToHex是調(diào)試期間必備的輔助方法把字節(jié)數(shù)組轉換成十六進制字符串打印出來方便和協(xié)議手冊逐字節(jié)對照。對于協(xié)議復雜的場景建議在回調(diào)里先做幀緩沖再按幀長度或幀頭解析整包數(shù)據(jù)避免把半包數(shù)據(jù)交給業(yè)務邏輯。打開方法內(nèi)部應該先檢查設備是否已打開防止重復調(diào)用造成 fd 泄露。4.3 幀協(xié)議封裝粘包與半包處理串口通信最常見的協(xié)議坑是“粘包”和“半包”。設備可能一次發(fā)來多個幀緩沖區(qū)讀一次也可能只讀到半幀。成熟的源碼會提供一個幀緩存區(qū)把每次讀到的數(shù)據(jù)追加到緩存尾部然后按協(xié)議格式循環(huán)解析逐幀回調(diào)上層。private final ByteArrayOutputStream mFrameBuffer new ByteArrayOutputStream(); public void onDataReceived(byte[] data) { // 1. 數(shù)據(jù)進入緩存 mFrameBuffer.write(data, 0, data.length); // 2. 按幀頭長度字段循環(huán)拆包 byte[] buffer mFrameBuffer.toByteArray(); int offset 0; while (buffer.length - offset 4) { // 假設幀格式: 0xAA 0x55 len data... if ((buffer[offset] 0xFF) 0xAA (buffer[offset 1] 0xFF) 0x55) { int frameLength buffer[offset 2] 0xFF; if (buffer.length - offset frameLength 3) { break; // 數(shù)據(jù)不夠一幀等下一包 } byte[] frame Arrays.copyOfRange(buffer, offset, offset 3 frameLength); mFrameListener.onFrameReceived(frame); offset 3 frameLength; } else { offset; // 沒有幀頭逐字節(jié)跳過 } } // 3. 處理剩余未消費數(shù)據(jù) byte[] remain Arrays.copyOfRange(buffer, offset, buffer.length); mFrameBuffer.reset(); mFrameBuffer.write(remain, 0, remain.length); }這段代碼的邏輯是典型的“緩存 循環(huán)拆包”模式先把新數(shù)據(jù)追加進緩沖區(qū)再根據(jù)定義的幀頭與長度字段判斷當前緩沖區(qū)里有沒有完整的一幀。有就切割出來回調(diào)沒有就跳出循環(huán)等待下包數(shù)據(jù)。跳字節(jié)找?guī)^的分支應對異常字節(jié)防止數(shù)據(jù)錯位后整個緩存區(qū)作廢。參數(shù)上協(xié)議長度字段通常是 1 或 2 字節(jié)如果幀長度超過 255 就要改成雙字節(jié)小端序幀頭越復雜比如 4 字節(jié)魔數(shù)誤判概率越低但拆包代碼也更繁瑣。4.4 關閉與資源釋放的完整順序串口關閉的順序里藏著不少 bug。一個常見的錯誤是先把mIsOpen置為 false 再關閉流然后直接 join 讀線程但在某些定制系統(tǒng)上讀線程可能深度阻塞join 會一直卡住。更穩(wěn)妥的關閉順序是主動設置關閉標記 → 關閉InputStream打斷阻塞 → 等待讀線程退出并設置超時 → 最后關閉OutputStream和底層 fd。public void close() { if (!mIsOpen) { return; } mIsOpen false; try { if (mFileInputStream ! null) { mFileInputStream.close(); // 打斷阻塞讀 } } catch (IOException ignored) { } try { if (mReadThread ! null) { mReadThread.join(500); // 等待線程退出避免殘留 } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } try { if (mFileOutputStream ! null) { mFileOutputStream.close(); } } catch (IOException ignored) { } mSerialPortNative.close(); // 釋放 fd }這段關閉流程的巧妙之處在于借助InputStream.close()從外部打斷阻塞的read()從而讓讀線程自然退出而不是依賴一個不確定的接口標志位。join(500)是保險策略如果驅動異常導致流關閉后線程仍不退出最多等 500ms避免關設備時 UI 卡死。mSerialPortNative.close()必須在最后調(diào)用等所有 Java 層流全部釋放后再收起 fd。5. 串口集成避坑指南5 個最常見的翻車現(xiàn)場5.1 設備節(jié)點存在但打開報 Permission denied現(xiàn)象代碼里路徑寫的是/dev/ttyS0文件也存在但open()返回 -1日志里打出的 errno 是 13。原因Android 的 SELinux 策略默認禁止普通應用訪問 tty 設備節(jié)點即使應用聲明了READ_EXTERNAL_STORAGE也無濟于事。解決如果設備已經(jīng) root調(diào)試階段可以用setenforce 0臨時放行量產(chǎn)方案通常需要在系統(tǒng)固件的 sepolicy 里追加允許規(guī)則或者有系統(tǒng)簽名權限的 App 通過系統(tǒng)接口申請。經(jīng)驗之談是工業(yè)平板上跑串口應用十有八九要跟設備廠商要一個定制固件或系統(tǒng)授權不要指望純應用層繞過。5.2 read() 一直接收不全整幀數(shù)據(jù)總是在半路斷開現(xiàn)象打印收到的字節(jié)數(shù)組每次只有幾十字節(jié)一幀 200 字節(jié)的數(shù)據(jù)要分四五次才能收完。原因驅動按內(nèi)核緩沖區(qū)大小與中斷節(jié)奏上報數(shù)據(jù)應用側read()不會為你湊夠一幀。解決從根上接受“讀到多少算多少”的現(xiàn)實把協(xié)議拆包邏輯做在應用層用 4.3 節(jié)那種幀緩存持續(xù)拼接。另外一個隱蔽原因是緩沖區(qū)開得太小read(buffer)的 buffer 只有 64 字節(jié)驅動一次可用數(shù)據(jù)再多也只能取 64 字節(jié)改大到 512 或 1024 往往能減少切包次數(shù)。5.3 波特率設了 115200設備回的卻是亂碼現(xiàn)象收發(fā)硬件連線確認無誤參數(shù)配置也檢查過設備返回的字節(jié)流完全不可讀。原因最典型的是 C 層未正確設置對應波特率的宏或者cfsetispeed與cfsetospeed只設置了一個。另一個可能位于不太容易被想到的位置USB 轉串口芯片的驅動層默認配置和代碼配置不一致導致實際鏈路速率與預期不同。解決排除法很有效——先用系統(tǒng)自帶串口調(diào)試工具把設備調(diào)通再用自己的源碼連確認不是硬件問題后回到 C 代碼逐行打印tcgetattr讀回的c_cflag實際值檢查波特率宏是否真的生效。5.4 串口關閉后立刻重新打開失敗現(xiàn)象執(zhí)行close()后 1 秒內(nèi)再次open()同一路徑返回 -1提示Device or resource busy。原因關閉時 fd 還被子線程持有或者驅動內(nèi)部有狀態(tài)殘留還有一個常見原因是close()沒被完整調(diào)用Java 層流關了但 C 層 fd 沒關。解決關閉流程嚴格按 4.4 節(jié)順序執(zhí)行若仍然復現(xiàn)在 close 末尾加一次usleep或讓上層業(yè)務在收到關閉回調(diào)后再等 200ms 重新打開。某些底層驅動確實需要幾十毫秒釋放端口這種“玄學”問題見得多了重試機制比糾結驅動源碼更省時間。5.5 數(shù)據(jù)回調(diào)里直接更新 UI 導致界面卡死或崩潰現(xiàn)象數(shù)據(jù)量一大界面掉幀甚至 ANR。原因串口讀線程是一個高頻觸發(fā)源在回調(diào)里直接runOnUiThread刷新控件會把每幀數(shù)據(jù)都變成一次 UI 任務消息隊列瞬間堆積。解決讀線程只負責把幀投遞到業(yè)務層的單線程隊列由專門的 HandlerThread 消費只有在真正需要刷新 UI 的業(yè)務點上才切到主線程。比較實用的模式是回調(diào)里做數(shù)據(jù)聚合比如每 100ms 把累積數(shù)據(jù)合并發(fā)布一次而不是一幀一刷。6. 把串口源碼變成趁手的調(diào)試工具一個長期值得投入的小習慣源碼集成穩(wěn)定之后我建議再做一層輕量封裝把它做成一個可獨立運行的工具型 Activity或至少保留一個不依賴業(yè)務模塊的調(diào)試入口。界面不用復雜一個設備路徑下拉框、一個波特率選擇框、一個發(fā)送輸入框、一個滾動接收日志區(qū)就夠。別小看這個工具它解決的是實際開發(fā)里特別好用的痛——協(xié)議聯(lián)調(diào)時對方的設備不可能每次都連著你電腦上的 USB 轉串工具在 Android 設備上直接調(diào)才是現(xiàn)場真實鏈路。一個值得借鑒的做法是把接收區(qū)做成十六進制與 ASCII 雙顯并且加上行號和時間戳。工業(yè)協(xié)議里經(jīng)常出現(xiàn)“非打印字符 殘留舊幀”的組合純文本模式下幾乎無法定位問題。加上時間戳后從設備發(fā)出到應用收到的時間差一目了然能直接判斷是鏈路延時長還是協(xié)議交互次數(shù)太多。我會習慣性地在工具頁放一個“連續(xù)發(fā)送”按鈕用來長時間壓測設備在高頻詢問下會不會掉線——這個測試數(shù)據(jù)在量產(chǎn)評估里非常有說服力。在封裝時給源碼補兩個能力一是把當前收發(fā)的字節(jié)數(shù)統(tǒng)計出來累計計數(shù)清零二是把每條日志同步落盤。字節(jié)統(tǒng)計能直觀看到實際吞吐量和理論波特率對比就能大致判斷底層鏈路是否健康。日志落盤的價值則在于復現(xiàn)問題現(xiàn)場設備環(huán)境復雜等用戶把出問題的 logcat 抓回來往往已經(jīng)丟了上下文有了本地文件排查效率能提高一倍不止。除此之外確認數(shù)據(jù)穩(wěn)定后再考慮把它收斂為獨立 Module串口邏輯與業(yè)務完全隔離對外只暴露 open/send/close 三個接口。這樣以后從 Android 工程切到系統(tǒng)定制固件或換平臺遷移成本都控制在很小的范圍。這套源碼對我來說更像是一個持續(xù)迭代的底座——每次遇到新硬件平臺把設備節(jié)點映射和波特率策略調(diào)整一下剩下的穩(wěn)定性保障都是現(xiàn)成的。希望能幫你的串口項目少走幾段彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狠狠操夜夜| 尤物视频网 刘玥| 一级特级aaaa毛片免费观看| 久久久不卡| 欧美一区二区传媒| 人人操av| 亚洲啪啪视频一区二区| 狼人狠干| 99草精| 久久97资源 网| 色欲久久综合| av天堂手机版追回| 自拍大香蕉乱插| 乱伦日本中文自拍| 深夜视频| 97神马久久| 中文字幕免费在线观看| 蜜臀99久久精品| 动漫区日韩区欧美区| 大香蕉久久| 一级免费啪啪片| 久久91视频| 欧美国产精品久久九九| 强奸抽插av| 人妻铁牛TV| 欧美亚州综合网图片| 黄色一区三区| 欧美青青草视频| 九九九九九精品十六| 91暧暧| 久久免费老司机精品| av九九| 日韩激情中文字幕有码| AV网站高清无码在线观看| 高清国产无码av| 亚洲欧美综合| 亚洲欧美综合| 午夜舔阴达高潮视频免费看| 久久黄片国产一区二区| 9丨亚洲一区二区在线| a片 xxxx受爽视频| 久草新在线| 美女91网| 日韩大香蕉| 欧美天天综合网| 久久久四区| 97天天综合| 麻豆成人AV| 国产色产精品在线观看| 成人av影院在线观看| 免费福利视频中文字幕| 日韩av在线免费网站| 日韩欧美亚洲一区二区三区影院| 久热9| 五月丁香综合啪啪| 美女主播色欲91抠b在线播放| 青苹果影院男人的天堂| 九九九九九九九九九九九蜜桃| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 91艹逼精品| 东京热av男人的天堂| 制服丝袜第二页| 嗯嗯啊啊的视频| 校园激情狠狠四射| 老司机天天操| 涩涩五月天| 日本一区二区三区精品| 中文字幕诱惑制服人妻丝袜美丝袜美 | 久久草视频污视频| 欧美熟妇精品黑人巨大91| 啊啊啊操死我| 两性色网| 影音综合网| 天美麻豆黄色录像| A级在线视频| 3p国产色噜噜一区| 伊人97色天使| 亚洲国产97在线精品一区| 久久午夜色播影院免费高清| 亚洲精品无码少妇久久| 日韩av三四区| 日韩欧美传媒一区国产| 欧美激情中文字幕另类小说| 1二区9| 精品在线78| 欧美日韩黄片精品在线| 欧美黑人猛交春色影视大全| 青青草中日韩在线| 一区二区三区在线美女| 在线观看十八禁| 天堂av最新电影网| 丰满高潮18xxxx| 97精彩视频网站| 职场同事知名国产国产精品久久欧美日韩 | 午夜视频久久久| 国产操偷| 精品免费国产二区三区| A片 AV一级在线播放观看免费| 91久青| 超碰99在线| 思思热国产在线视频| 久久精品72| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 精品美女久久一二三| 久久国产逼| 91久久精品国产| 中文一区二区| 夜色AV无码手机在线影院| 涩爱AV在线| 超碰99在线| 综合色99| 日韩在线观看AV| 精品成人动漫一区二区| 东京热熟女亚洲视频网站| 97在线观看免费视频| 伊人99热| 亚洲在线91| 色五月综合| 久久中文字幕女同性恋一区| 国产人妖视频一区在线观看| 情色五月天网| 在线看免费无码AV天堂的| 亚洲色图 图片| 亚洲一区在线观看欧洲| 亚洲欧美综合色| 中文操逼字幕| 日韩内射视频| 国内精品久久人妻性色av| 亚洲色图 欧美热图 清纯唯美 另类自拍| 一区二区三区一亚洲中文字幕、综合区灬| 在线观看精品国产免费| 欧美96交| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 人妻无一区二区三区| 国产精品一二三免费网站| 欧美se综合| 99色视频| 男女做爰猛烈动高潮A片免费应用| 蜜臀久久99精品久久久老,,| 91精片| 日韩一区二区熟女| 天天操夜夜嗨| 97亚洲精品超碰| 久久久噜噜噜久久久| 丰满人妻aA一区二区三区| 国产久久视频| 麻豆这里只有精品| 四虎免费在线观看| 性色亚洲| 丰满人妻一区| 伊人影院中文字幕| 韩国一级AAA| 欧美97se| 妇女视频网站| 国产成人无码高清| 97视频免费在线观看| 一及黄久一点| AV中文在线可看| 久久久久久久九九九九九九| 国产深喉视频一区二区| 欧美伦乱爱| 99热精品在线在线| 在线观看中文av字幕| 少妇熟女一区二区三区| 性爱AV天堂| 大香蕉乱伦视频网| 国产成人 综合亚洲 天堂| 神马久久久久久久久| 亚洲城人男人的天堂| 免费一级黄色录像影片| 亚洲精品久久久久毛片A片拉屎| 偷拍亚洲高清图片| 少妇免费视频| 超碰人人在线| 久久久久国产精品喷潮免费观看臀| 91国产丝袜白虎| 国产美女激情| 欧美精品 - 91爱爱| 免费黄色A片| 91久久青青草原精品| 欧美天天综合站| 久久久久久性爱片| 久久丁香| JULIA一区二区三区在线播放| av三级电影在线播放| 国产精品午夜福利| 色综合1991| 91AV天美在线视频| 久久爱超碰网| 香港成人一级视频在线青青草| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日本中文字幕一区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 不卡av在线中文字幕| 精品福利| 97超碰色色| 激情婷婷丁香网| 国产不卡中文字幕免费avi| 色色色色色色色色色色色色色色综合| 五月丁香啪啪啪| 干婷婷综合网| 91free福利| 精品人体无圣光凹凸| 婷婷色一区| 精品人妻伦一二三区久久| 91人妻素女| 园内精品自拍视频在线播放| 亚洲免费在线探花| 男人a天堂手机在线版| 九九热久久99精品re| 国产成人亚洲精品无码最新在线| 日韩成人性日韩成人性爱视频在线免费观看 | 日本孕妇一区二区视频操逼免费看 | 黑人黄片在线免费观看| 夜嗨影院| 亚洲一本大道中文字幕无码在线| www.色操逼| 黄网色一区二区三区四区精品| 黄色免费网页无码| 国产成人在线观看综合| 综合久| 五月丁香婷婷综合网| 日本免费亚洲欧美| 日日夜夜青青草母狗| 伊人国产视频| 熟女少妇视频| 日韩无码视频黄色| 性色av蜜臀av色欲aV| av无码精品久久久久| 日韩人妻中文视频| 欧美黑人性猛交91| 中文字幕女同在线| 综合色区偷拍| 婷婷操逼| 中文字幕天天天天天| 60秒不遮不挡| 中文AV制服乱伦| 97爱| 久久久久久久亚洲Av无码| 国产高清在线观看欧美| 五月婷婷六月丁香| 精品国产99| 欧美日韩天堂| 综合色一区三区二区| 黄色免费网| 思思热影视| 女人爽到高潮久久久| 99re8超碰| 另类老少妇| 欧美亚洲激情| 日本污ww视频网站| 天天天肏屄欧美| 十八禁电影伊人网| 无遮挡男女激烈动态图| 亚洲熟女中文字幕在线| 欧美 青青草| 无套后入双马尾| 午夜福利国产欧美日韩夜夜| 久久久无码av精| 五月丁香六月| 国模91| 97视频在线免费观看| 人人 操人人 操人人| 色狠狠色| 精品人妻伦一区二区三区久久| 欧美综合色图网| 丝袜熟女2P| 五十路人妻在线| 亚洲美女AV无码| 国产午夜激片Av毛片不卡| 欧美嫩性色| KK色在线影院| 成年女人黄网站| 九九热免费国产视频婷婷伊人| 热热色色综合| 日韩操p| 亚洲欧美校园另类春色| 91n处女在线观看| 国产精品久久99日日| 男人天堂.AB| 中文三一区| 91社区拍啪人妻| 亚洲不卡av在线| 乱欲视频| 很黄很污的免费网站| 国产欧美另类久久久精品课程| 老司机老司机午夜影院| 东京热av男人的天堂| 啊啊啊啊啊啊在线观看| 婷婷丁香六月天| 福利天天都操| 日韩无码成人电影| 91狠狠综合久久| 日韩AV熟女乱伦| 国产精品动态一区二区三区四四| 丰满人妻无码一区二区三区| 亚洲综合 欧美| 51一区二区三区| 国产久久久久影院老熟女| 6080YYY午夜理论片在线观看| 91在线限制级| 黄色片一区二区三区四区五区| 偷拍亚洲高清图片| 看黄片视频免费| 人妻美腿丝袜日韩| 台湾佬激情综合| 成人精品无码| 97公开久久| 欧美少妇性爱网站| 亚洲极品| 男人天堂久久精品| 国产欧美日本亚洲精品| 欧美情色贴图| 亚洲一区二区精品福利| 99热在线只有精品| 狠综合网| 性爱av在线免费观看| 深爱伊人影院| 久久不卡一区二区| 乱伦图一区| 欧美日韩精品青青| 女优视频第10页| 日韩熟女三十乱伦| 91AV天美在线视频| 国产成人亚洲精品自产在线| 亚洲av噜噜噜噜噜噜| 欧美精品91| 国产精品一区二区三区,亚洲综合| 亚洲宗合网| 婷婷五月天基地| 黄色电影在线播放综合网站| 天天拍夜夜| 免费农村成人少妇人妻Aa一区二区视频 | www.91久久| 天天综合91| 91在线视频国产网站| 亚洲欧洲无码97久久精品| 郑州宾馆老熟女露脸啪啪| 少妇色欲综合网2| 日本一区二区电影网站| 美女极品一区二区三区| 男女无套 免费网站| 欧美青青视频| 中文无码一二三区| 九九性爱网| 国内毛片热久久思思热| 96一区二区| 2017天天透天天通天天擦| 日本久久网| 国语国产操逼伊人AV网| 97超碰欧美| 日日日日做夜夜夜夜做无码97| 日韩97超碰中文字幕| 欧美国产欧美在线观看| 亚洲中文字幕熟女| 免费视频97| 97国产精品久久久久| 一二三啪啪专区| 欧美操人| 99热网站| 成人av动漫在线观看| 国产精品久久久久久高清无码免费看| 免费a v| 四虎在线视频| 人妻少妇无码| 欧美熟女逼久久久久久| 绑缚麻绳人妻寝取完整版| 青青操青娱乐| 大香蕉啪啪啪| 亚洲图片欧美在线视频| 国产91久久九九免费精品无码| 亚洲av综合色区图片亚洲| 人人操人人色网| 久久区| 亚州,欧美在线| 学生妹天天看| 亚洲色图综合网| 麻豆国产成人精品| 操亚州| 韩国国产欧美情侣视频在线| 东京热不卡视频| 久久一二三四不卡 | 熟女人妻精品一区二区视频| 国产白丝网站| 中文字幕视频二区| 日本精品999| 久久久久国产精品久久久| 99re黄| 91少妇人妻| 日韩97P| 大JI巴好深好爽又大又粗视频| 欧美情色亚洲| 一区二区高清视频| 超碰精品国产无码| 亚洲天天做日日做天天谢日日 | 天美传媒AV国产在线| 75大香蕉| 亚洲97网站| 黄片com.| 欧美丰满熟妇XXXX性ppX人交| 国产成人精品日本视频| 抽插无码高清一区| caopeng97| 欧美 青青草| 蜜桃久久久久久久久久久久| 亚洲综合伊人| 91亚洲情色| 亚洲综合影院| 偷拍亚洲熟女视频播放| 120分钟婬片免费看| 欧美日韩色图片| 久久国产视频专区一二三| 狠狠热这里都是精品| 97热视频在线观看| 屁股久久久久久| 国产视频一区二区三区在线免费观看| 自拍大香蕉乱插| 七久久久| 无码操逼天堂| 日韩有码 一区二区三区| 午夜AV人气不卡| 欧美黄片视频在线观看免费| 精品熟女一区=区三区| 亚洲欧洲日产国产综合网| 天天热精品| 又大又大又大又粗爽高潮观看| 无码精品久久| 五月激情影院| 天天激色| 91大神精品长腿在线观看网站| 加勒比在线视频一区二区三区| 久久婷婷五月天| 蜜桃久久久久久久久久久久| 男人天堂新在线| 久久精品毛片免费不卡| 日韩国产品视频中文字| 日韩无码第3页| 狠狠操夜夜| 亚州情色j区| 东北操逼| 国产51色综合久久免费| 91青视频| 欧美激情专区| 操逼日韩无码 | 欧美日产国产在线成人第一区| 亚洲精品日日夜夜52| 亚洲欧美色综合| 国产区在线| 中国国产精品一区视频| 精品国产一区二区久久| 亚洲 欧美 第一页 | 大逼色网站| 亚洲五码一区二区三区| 午夜欧美J进J出白浆流出久久久| 91 综合网| 艹少妇网站| 青娱乐大香蕉| 久久精品国产亚洲AV清纯| 激情五月天色色网| 日本精品九九九| 乱伦a片视频| 91久久伊人婷婷青青草| 综合久久久久久久久91| 69AV女优男人的天堂| 青娱乐黄色录像| 欧美日韩第一页| 欧美日日人人天天| 欧美一级黄片免费播放| 大香蕉2017| 一区二区娱乐网站| 99视频自拍区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产在线观看一区二区三区| 久jiu久神马影院| 国产97免费视频| 亚洲色图久久精品蜜| 精品久久97| 成人日韩欧美| 视频不卡中文字幕| 国产精品久久久蜜臀| 国产呦精品系列在线观看| 97操97干| 大香蕉123| 综合另类| 天天摸夜夜操视频| 亚洲黄网在哪免费看| 久久久久久人| 夜夜爽妓女| 日韩人妻一区二区| 亚州春色| 超碰成人免费| 国产强奸AV在线| 区二区亚洲婷| 综合色播| 激情小说日韩无码| 亚洲亚洲亚洲天堂天堂| 韩日精品四区| 午夜激情成人在线观看| 白嫩妹子国产骚| 久久啊哟| 精品一区二区综合熟妇| 色淫网站优优视频| 精产国品一区二三产品| 91操人| 国产精品国产精品国产| 色天堂综合| 久久人人看| 另类亚洲一区二区三区| 亚洲中文字幕av| 91色爽欧美| 一区二区三区视频在线观看免费| 亚洲激情视频| 亚洲综合草草| 色狠人在线99| 高清无码网址| 岛国片国产成人亚洲播放| 久草这里只有精品| 国产人妻精品一区二区三区秋霞 | 久草精品一区| 一牛影视久久久一区二区三区| 日本视频一区二区三区| 亚洲福利影院一区久久| 欧美一区二区三熟女剧情| 黑丝91视频| 欧美黄片视频在线观看免费| 91香蕉视频在线观看免费| 天天操妹子| 午夜无码熟妇丰满人妻| 4141514逼喷水三级片| 97碰在线视频| 日韩,欧美,中文在线| 亚洲成人精品在线一区| AV女优男人的天堂| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照 | 97免费视频在线观看视频| 男人天堂.AB| 91九色精品熟女内射| 日韩欧美国产一区二区三区四区| 国产午夜福利专区综合| 久久久久久97| 日日骚中文字幕| 91美女视频。| 88在线一区二区三区| 欧美 日韩 婷婷 五月| 九九九久千久久激情蜜桃在线看 | 中国一级操逼视频| 翔田千里无码中出中文字幕| 老司机福利青青草| 欧美成人性活片| 欧美日韩久久精品爱爱| 色臀AV| 96久久久久久久| 97资源站国产精品| 亚洲天堂另类| 亚洲成成熟女人综合一区二区| 国产自产22区| 久久久性少妇| 91模特在线观看| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久久熟妇熟女国产| 中文乱码99| 天天日日日射| 粉嫩AV一区夜夜嗨| 欧美传媒一区| 亚洲做性| 91成人无码| 久操97| 人人看黄色视频| 国产亚洲99久久精品熟| 色综合V| 国产精品区在线12p| 欧美精品一区二区少妇免费A片| 在线岛| 久久香蕉综合一本到3atv| 日韩黄色一区二区三区| 精品色色| 粘花网06av视频| 亚洲天堂人人妻| 久久精品女同亚洲女同13| 青青操日韩| 在线中文字幕视频| 中文色综合| 无码高清专| 夜夜 中文视频rt| 超碰在97| 清纯唯美亚洲综合| 99re热有精品视频国产| 国产成人无码高清| 亚洲人精品久久久喷水| 蜜桃一区二区三区| 天天天干977| 翔田千里爆乳巨臀无码| 在线可观看的黄色网址| 另类图片五月| 婷婷久草| 日韩一级欧美一级国产一级台湾| 久久夜黄色无码A级大片| 国产亚洲在线观看| 麻豆激情综合| 91 丝袜在线播放| 操逼片中文| 狼人综合婷婷激情四射 | 人人妻人人爽| 免费精品人妻一区二区三| 国产农村一一级特黄毛片| 日韩欧美成人大香蕉| 午夜精品人妻二区三区| 亚洲色图欧美一区二区不卡| 探花熟女,姿勢到位,體驗感也到位| 大香樵伊人网| 97久久天天综合色天天综合色电影| 97国产超碰| 欧美日韩香蕉| 综合网欧| 国产精品高潮久久久无码| 日韩欧美字幕亚洲一区二区| AV一二区| 91人妻少妇| 人人色人人操在线| 91精品人妻啪啪间| 国产福利电影| 热久久精品| 欧洲亚洲人妻无码久久三区四区| 精品欧美А∨无码黑人大荫蒂| 亚洲熟妇自偷自拍另欧美| 中文字幕在线第二页| 日韩成人在线性爱视频| 亚洲另类久操网| 四虎影视精品| 色五月综合网| 啊啊啊啊,啊啊好多水| 日韩簧片免费看| 91逼逼女人91| 国产91精品在线免费| 五月丁香六月婷| 亚洲在线A| 在线观看综合精品亚洲| 亚洲欧美在线丝袜| 青青伊人这里只有精品| 97er欧美性| 91人妻最真实刺激绿帽| 97色论| 51国产午夜精品视频| 99热这里只有精| 99热在线观看| 亚洲天堂东京热| 亚州欧美色图| 99re这里只有精品3| 久久久久九九九九| 欧美在线伊人色| 国产一区二区三区高清视频| 亚洲色欲一区二区三区| a亚洲欧美色欲| 殴美日韩m| 国产精品女生av| 成人熟女区| 不卡一区二区日本视频| 精品欧美日韩在线观看| 亚洲最大网站av| 女生看匆91网站| 黑丝内射一区二区三区| 极品另类| 亚洲 欧美 小说| 国产亚洲精品美女久久久久久2021| 人妻黑丝袜电影| 亚洲综合中文字幕有码| 91精品国产91久久久久久久久久久久| 99久久婷婷| 超碰97护士| 啊啊啊97视频| 美女黄频a美女大全免费皮| 亚洲一区二区中文字幕| 久久99国产综合精品女同| 高清国产无码av| 91AV天美在线视频| 蜜臀少妇一区二区| 久久透逼视频| av橘色网站| 神马视频久久久久久| 精品欧美А∨无码黑人大荫蒂| 97爱碰| 天天综合精品| 澳门黄片一香蕉视频| 九九人妻| 久久久久久久 九九九九九九九| 成人97人人超碰人人| 久久成人东京热人妻| 91老熟女逼| 国产懂色精品国产av| 精品人妻一区二区三区日产| 69久久久久久久久久久久久| 婷婷五月天成人网| av天堂天堂av日韩| 国产99热| 亚洲男人的天堂网| 九热超碰| 超碰97护士| 亚洲女毛多水多21P| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久毛卡| 久久久一区二区三区麻豆| 欧美制服网站美腿丝袜| 思思视频免费看网站| 男人天堂综合| 五月天啪啪| 懂色中文一区二区三区| 欧美综合色| 天堂麻豆天美| 久久激情视频| 国产精品一区二区三区,亚洲综合| 精品人妻一区二区三区四区| 91欧美丨精品丨入口| 丁香激情网| 国产精品人妻熟女aⅴ| 9久久久久久| 在线一区| 日本天堂网| 亚洲天堂久久| 免费观看的黄色的网站| 中文字幕丰满子伦无码专区在线视频最新 | 99r九九| 九九综合色| 久久性爱网站| 国产特级毛片AAAAAA高潮流水| 久久久97| aa片毛片| 亚洲AV色图一区| 殴美牲| 人妻嗯啊啊在线播放| 俺去俺来也在线www| 成人精品一区二区91毛片不卡| 亚洲中字幕日本一区二区三区| 妇女一区二区三区| 精品无av| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | www.久久超碰| 天堂精品| 超碰97人人乐| aV中文麻| 精品国产乱码久久久久久免费| 九九九精品色乱九九九| 天天插天天操天天摸天天射天天看| 极品内射| 久久人妇| 国产外初女出血视频| 久久久一区二区| 国产一区二区三区久久精品太古里| 二级久久网| 国产人妻一区二区三区欧美毛片| 国产精品视频| 亚洲九九爱| 精久久久| 丰满人妻一区二区三区四区| 女人综合网| 大香蕉免费3| 无码逼| 天美麻花大全视频| 嗯啊不要在线| 国产大片精久久久久久| 亚洲天堂人人妻| 亚洲熟妇综合久久久久久| 二级毛片| 亚洲资源站| 日韩精品字幕| 91精品国产日韩欧美综合| 国产欧美日韩精品中文| 久热9| 日韩AV中文字幕电影| 97超碰巨乳| 97鸡把在线视频| 国产精品人妻无码久久久互動交流 | 亚洲一欧洲中文字幕在线| 免费的黄片wwwwww| 男人兔费天堂| 天天α片| 色天天野狼综合社区| 91视频综合网| 亚欧视频在线| 中亚精品极乱| 中文久久96| 天天综合网在线观看| 一区二区三区高清天码| 国产激情在线观看| 啊啊啊啊啊操我视频| 长久操视频| 男人亚洲天堂| 乱伦系列一区二区| 夜夜操天天肏| 日韩本不卡视频在线观看 | 人妻丝袜日本| 一区AV| 美女91网站| 欧美精品23| 国产成人精品日本亚洲语言| 日韩乱码av| 久久超碰98| 国产后入式在线观看| 成人小说另类在线| 欧美国产日韩高清在线| 亚熟在线| 九九九不卡| 在线岛| 欧美日不卡| 青青草久草AV| 精品人妻免费观看| 亚洲av无码成人精品国产| 久久久久久久久久久久久久久乱码| 日日妻色网| 黄片视频观看| 六月色婷婷| 久草老司机| 亚洲无线码欧洲精品区别| 五月丁香六月| 亚洲熟妇AV日韩熟妇在线| 国产欧美在线观看免费观看| 婷婷色五月激情| 久久久精品中文字幕麻豆| 操逼操2| 天天综合精品| 人人妻人人色一区二区三区| 日韩综合无码色欲vv| 国产精品天美传媒| 午夜啊啊| aaa一级黄片| 国产精品午夜福利视频| 欧美日韩啪啪电影| 成 人 影视 一区 二区 三区 四区 | 99热aaa| 色欲天天综合久久久无码网中文| 丁香六月综合激情| 日韩无码第3页| 伊人色综合网电影| 日本国产二线女色| 欧美日韩操操操| 天天看高清麻豆| 午夜福利一区二区影院| 亚欧美天堂在线| 水多多映视AV| 手机不卡视频不卡在线一二三区| 97精品国产| 99自拍B亚洲 | 亚洲av影院在线观看| 亚洲人久久久网| 日韩欧美中文| 欧洲自拍第一页| av一区二区三区 中文| 欧美色图另类图片| AV 少妇 人妻 偷拍| 97欧美| 欧美亚洲丝袜美女电影| 人人玩人人添人人澡免费| 黄色不卡视频| 色久桃花影院在线观看| 日韩毛片9| 五月婷婷深深爱| 亚洲一区二区在线观看91| 嫩草 人人网精品| 99久久婷婷丁香| 午夜操一视频一区| 久久一区无码| 色五天伊人| 丰满岳乱妇一区二区三区| 乱子伦一区二区三区国产精品| 成人免费在线网站| 日本不卡一二区| 天天弄欧美| 自拍视频一区在线观看| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美一级欧美三级在线观看| 岛国A V在线免费看| 噜噜噜亚洲精品| 婷婷丁香六月| 国产精品第一区第一页| 狠狠爱AV| 亚洲 图片 综合91| 中文字幕一区二区三区高清| 亚州五月| 97中文字幕色| 五月婷婷激情综合| 日韩欧洲操屄视频| 亚洲91射| 天天日日本| 色区久久| 99re公开精品免费视频| 九色黄站| 99这里都是精品| 夜夜操夜夜爽夜夜高潮| 日韩精品视频在线观看一卡二卡| 偷拍精品一区二区三区| 老色鬼成人精品视频下载大在线观看| 性站 | 久久老熟女| 欧美一二在线| 天天综合网站| 人人操人人干网页| 97国产超碰| 欧美激情精品久久久| 欧美成不卡网| 五月丁香六月| 人人操人人摸人| 91在线免费精品视频| 五月天AV资源| 欧美午夜视频| 久久的网站啊啊啊啊啊| 六月丁香婷| 国产aⅴ无码片毛片一级网站| 男人的天堂网页| 中文字幕一二三av| 精品无码人妻一区二区免费蜜桃| 性色avv| 亚洲国产第一页综合视频| 在线看片国产精品每日更新| a亚洲欧美色欲| 亚洲欧美另类图片| 中文字幕免费在线观看| 91艹| 久色99999| 亚洲综合性感在线| 日本淫色网| 夜夜中出国产| 五月综合激情| 五月天婷婷成人网| 婷婷久久五月| 91|九色|国产熟女| 特级丰满少妇一级AAAA爱毛片| 欧美一区二区福利在线| 激情天天视频| 国产男女边吃边摸视频网站| 看日韩黄片| 国产亚洲色婷婷久久99精品91 - 百度 | 五月丁香黄色网| 玖草在线视频| 亚洲av性爱电影| 日本视频在线中文字幕| 91熟女视频| 精品无码久久久久久久杏吧| 蜜臀久久99精品久久久电影| 91综合熟女| 色欧洲| 日本孕妇一区二区视频操逼免费看| 男人天堂2017| 精品国模无码| 国产极品精品美女视频| 色色色色日本| 囯产操逼片| 午夜男人一级A片7777| 婷婷五月天AV| 久超碰在| 亚洲欧美综合色| 屌妞视频久久久久久久| 欧美少妇色综合| 亚洲日本天堂| 蜜臀AV一区二区三区| 性色aV一区二区三区噜噜| 97香蕉网| 精品无码不卡视频| 日本精品不卡一二三区| 99爱在线视频| 色狠狠综合噜一二三区| 蜜桃色院一区久久| 女人18精品一区二区三区| 久久嫩草| 乱伦熟女专区| 丝袜熟女一区二区三区| 综合婷婷| 佐山爱中文字幕| 国产热av| 97操| 熟女精品va中文字幕| 狠狠干狠狠色| 欧美日韩资源在线| 国产精品一级二级在线| 亚洲色交| 免费αⅴ在线观看| 婷婷久久网| 中文字幕乱碼在线| 欧美人妻熟女在线| 百度百度日本操逼| 国产小黄片在线免费观看| 日日夜夜狠狠| m欧洲一级午老| 综合少妇网| 欧美五十路熟| 色色激情五月天| 天美欧美国产| 国产99热| 中文字幕亚韩| 日韩影片中文字幕一区二区三区| 最新9久久久9免费视频| 亚洲色图综合| 精品超碰国产| 美女主播色欲91抠b在线播放| 综合网亚洲在线| 中文人妻av高清一区| 26uuu国产| 呦女网站| 精品国产91内射久久| 人妻嗯啊啊在线播放| 天美传媒av在线| 日韩欧美亚洲自拍偷拍| 日韩免费性爱视频在线观看| 97 国产一区| 国产日韩久久| 日本午夜久久电影| 国产精品视频在线播放 | 亚洲日韩肥臀视频在线观看| 97操综合| 激情网色| 久久大线蕉一区| 久久久97| 伊人亚洲国产一成人久久精品,久久| 天天超级碰碰碰| 亚洲一区日韩精品| 大香蕉手机在线视频| 九久久精| 国产亚州日韩欧美看片| 久久久国产精品亚洲精品| 日B操| 精品99999久久久久久| 自拍鲍鱼一区在线高清观看免费| 黄色不卡视频| 午夜福利一区二区影院| 精品无码一区二区| 97免费在线观看视频| 成人精品在线| 97人人夜| 看一级黄色视频| 青草伊人久久| 久久一区二区三区入口| 中文字幕第23区| 上海一级黄片| 伊人精品国产| 成人三一级一片aaa| 夜夜福利| 国产成人欧美一区二区三区的国产| 五月婷婷hd| 欧美激情视频在线一区| 天天综合影院91| 欧亚无码视频| 天天干天天日天天射黄色片| 日韩激情无码影院| 国产高清不卡视频| 国产中文字幕在线点播| 国产极品久久久| 久久成人午夜精品影院| 爱妻综合网| 天天日天天干天天整| 骚鸭AV| 精品久久久久久亚洲| 人人操人人色网| 91夜色chaopeng| 久久精品中文字幕观看| 中文字幕第95页| 97在线精品| 亚洲精品九九九| 亚洲 se图 欧美电影| 天天摸夜夜添无码小视频| 最新9久久久9免费视频| 婷婷色播婷婷| 曰韩中文人妻视频| 日本999精品| 一区在线国产播放| 青青草福利视频| 色综合加勒比四四季| 久久亚洲AV无码专区首页| av日韩中文字幕| 久久久草成人网站久久久草成人久久久草久久久 | 无码WWW免费视频网站| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 97精品一二区| 国产 日韩 欧美高清| 超碰综合97在线| 国产精品老熟女一区二区| 国产日韩无码一区二区三区久久区| 加勒比海成人视频网 | 91久久国产精品| 青青青国产| 思思在线免费视频| 婷婷爽人人婷婷爽视频| 丝袜视频一区二区在线播放国产中文| 风流老熟女一区二区三区l| 人妻第一页| 国产成人主播| 亚洲五月婷婷| 免费的黄片有限公司| 亚洲狠狠入| 上床不卡网站| 91精品91久久久中77777| 性久久久| 中文字幕三四五区| 婷婷五月天无码| 女同在线视频一区| 思思热影视| 26uuu最新| 久久久无码精品人妻二区 | 日本十八禁免费看污网站| 国产在线激情| 欧美综合在线91| 偷拍 精品另类 凸凹了四区| 成人三一级一片aaa| 大色综合| 美女t无毒不卡不卡| 九九九九九九成人| 亚洲欧美校园另类春色| 久久婷婷综合国际产色怕| 午夜人人操| 天天综合中文字幕 91| 99热18这里只有精品| 91色爽欧美| 五月丁香亭亭| 欧美日韩国内不卡| 午夜.DJ高清在线观看免费7| 久久超碰日韩精品| 素人伊尹大香蕉免费下载视频| 国产成自自拍在线观看| 人人天天欧洲| 我爱大香蕉| 亚洲超碰AV| 国产精品久久久久亚洲av| 欧美强奸乱| 在线性黄高清免费视频| 大香蕉乱级| 中文 人妻 制服| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 日本新免费二区三区| 九一屌逼| 天天干2019| 校园春色综合| 69人妻精品一区二区绯色| 色一色综合网| 黄色免费网页无码| 日韩人妻播放| 亚洲国产成人精品久久久国产成人一区二区三.| 日韩一级性爱无码| 精品蜜乳AV免费观看| 欧美人体性爱互联网第一页婷婷日本| 大逼色网站| 伊人九九九| 欧美加勒比| 久久精品熟妇丰满人妻99| 欧美翘臀视频网站一区二区三区| 精品人妻一区二区三区不卡断 | 伊人黄色视频免费观看| 日韩在线观看字幕精品| 亚洲黄色a级片| 欧美成人一区二区三区在线播放| 国产精品爽爽va在线观看98| 日逼国产| 国产精品国产拍高清AV| 日本片日本片祼观看网站在线看中文版网页在线看 | 美女写真| 欧美成人一区二区三区在线播放| 欧美性爱伊人| 六月丁香久久| 亚洲综合色男人网| 自拍盗摄一区| 爱爱久久| 婷婷五月天色网| 欧美色另类| 26UUU欧美日本|