亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
春色91| 久久久久9999妇女| 欧美无圣光在线| 嗯嗯啊啊啊好爽| 色大香蕉97N| 无码精品久久| 黄片免费看的| 夫妻四区五区六区| 久久夜黄色无码A级大片| 日韩干B| 99热欧美| 波多野结衣AV无码一区| 国产三级中文字幕粉嫩| 日本一级黄色电影| 欧美日韩黄片精品在线| 九九九九9999| 日欧毛片久久| 国产精品久久久999| 天天干天天狼在线视频| 97在线观看| 国产女同性恋视频| 五月丁香网站| 午夜激情成人在线观看 | 1204人成网站色www| 夜夜夜久久| 欧美性爱系列| 久久九九视频九九视频| 天天激情综合站| 天天干天天爽| 91香蕉视频在线观看免费| 91在线免费精品视频| 精品乱码久久久久| 另类av综合久久| 美国久久一二三四| 亚洲一本色码中文字幕| 天天舔天天日天天射| 使劲用力艹少妇视频一区二区| 99精品久久| 欧美伊人久久综合网| 国产精品粉嫩福利在线| 嗯嗯,好大,好爽,好骚| 亚洲一二三精品久久网| 青苹果影院男人的天堂| 情色AV电影| 成人乱码一区二区三少妇| 色欧美亚洲| 久久专区| 日韩中文字幕人妻视频| 成人八戒网站| 亚洲一欧洲中文字幕在线| 凸凹视频在线观看| 亚洲 欧美 偷拍 唯美| 哈哈操电影| 后入式免费视频| 少妇久久久久久久| 78超碰| 亚洲日韩久久精品一区| 久久欧美激情| 久热在线精品免费观看| 亚洲第一狼人丝袜美女另类 | 嗯嗯啊啊视频在线看| 日韩国产成人自拍视频| 天天综合网日韩7799| 国产AV激情无码久久无码| 成人三级片无码| 亚洲无吗在线视频| 按摩中文字幕| 91无码人妻精品一区二区三区蜜桃| 牛牛久久国产精品视频一二三 | 一牛影视成人片免费| 99热66| 麻豆区99999| 91爱做| 丰满人妻-区二区三区免费看| 精品1区2区3区| 91人人臊| 亚洲精品欧洲精品| 99在线精品观看视频中文| 啊啊啊啊啊啊啊在线| 久久熟妇五十路一区| 大但人体久久久久| 91精品国产91熟女| 再深点灬舒服灬太大了添视频| 综合伊人激情| 99九九精品| juliaann丝袜大战黑鬼| 欧美日韩中文字幕人妻| 国产中文字幕曰本毛片| 久久久久久91香蕉国产| 澳门黄片一香蕉视频| 天天色播| 亚洲天在线| 天天干干天天干干| 9久久久久久| 天天影视之亚洲综合网| 激情综合网激情综合| 久操com| 快点操死我| 2019午夜福利视频| 国产精品午夜福利亚洲综合网| 亚卅熟女乱色| 亚洲综合影片| 久久九九97| 国语国产操逼伊人AV网| 精品小视频在线| 99久久99久久免费精品蜜臀| 高清无码网址| 丰满人妻一区二区三区| 蜜乳Av成人片网站| 国产精品第二页| 98人妻精品一区二区色欲| 午夜寂寞欧美| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 久久久久久久唑| 一级免费啪啪片| 肉丝网站91| 欧美资源| 亚洲男人的天堂V| 国产精品在线免费| 久久乐| 久久久久密臀一区二区| 1769国内精品视频| 欧美在线55555| 日韩欧视频| A V视频日本| 日本999精品| 日韩欧美成人性爱在线| 日韩丨制服丨中文|在线| 操逼逼福利视频| 少妇色综合| 国内偷拍精品一区二区| 玖玖婷婷五月天| 日日97| 色综合一区二区三巨| 91美女視頻| 强奸a片网| 国产97视频| 国产精品无码AV网站| 97精品久久久久中文字幕| 亚洲暴力强奸AV| 99热18这里只有精品| 欧美久久伊人| 外国91| 蜜桃中文字日产乱幕4区| 欧美日韩国产另类综合| 91n处女在线观看| 日韩另类色图| 51久久夜色精品国产麻豆| 亚洲精品国产av天美传媒| 久热香蕉精品在线视频| 殴美性天天| 性爱av网站| 超碰诱惑| 久热久| 夜夜草网站| 亚洲天堂中文字| av东京热男人的天堂| 国产色呦呦| 久久精品店| 久草毛片电影怡| 欧美三级中文字幕hd| 少妇蹲下露出大唇5| 97精品国产97久久久久久| 久久久精品一区二区| 黄污污污污| 久草视频在线视频在线视频在线观看 | 青春草A| 强奸乱伦麻豆| 亚洲第一狼人丝袜美女另类 | 天天色天天干天天射| 精品视频一区二区| 青青草色插素人| 中文字幕在线观看丝袜| 亚洲中文日韩欧美大香蕉视频| 亚州欧美在线| 超碰9 7女人| 久久久久久久久久黄色网| 91精品无码人妻系列| 操逼网站网站| 职场同事知名国产国产精品久久欧美日韩 | 99热精品在线在线| 国产伦乱91| 欧美成熟性爱精品| 中文字幕丰满子伦无码专区在线视频最新| 97干com| 99久国产精品午夜性色福利| 日韩中文字幕视频| yw尤物av无码点击进入麻豆| 台湾佬大香蕉| 人妻第一页| 人妻素股| 偷拍片久久| 色天堂综合| 日韩AV中文字幕电影| 欧美毛片在线网| 噜噜吧,噜噜色,噜噜| 人人操肉肉| 高潮毛片无遮挡高清免费| 日韩小电影| a啊啊啊啊啊啊啊啊一区二区| julia中文字幕在线观看| 综合网欧| 中文无线日韩一区| 超碰在线综合97| se吧提供国产乱老熟视频胖女人 | 日韩成人精品中文字幕| 人妻天天夜夜爽一区二区| 日本精品第一视频在'| 久久综合资源一区二区| 日韩性爱1级片视频| 免费公开人人操| 亚洲天堂中文字| 国产精品麻豆视频网站| 欧美性爱精品一区二区| 青草视频在线看看看看看看看看看| 97久久久| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 东亚亚洲无码高清| 探花激情视频| 日韩国语字幕| 99国产精品久久久久久久成人热| 国产第11页| 大香蕉日亚洲日本亚大 | 日本精品第一视频在'| 日本女人操逼| 久久伊人在线五区| 少妇精品久久久| 久久影视二区三区行押| 亚洲精品欧洲色| 久久久免费高清中文视频| 欧美不卡二区| 白丝1区2区3区| 亚洲淫乱骚妇AV| 伊人网在线视频| 黄色一区三区| 亚洲天堂资源网| 免费精品国偷自产在线在线| 激情国产乱伦Av| 九九99久久| 麻豆区99999| 激情四射熟女丝袜| 色汉综合| 日韩人成网站在线播放| 久久夜嗨| 91精品国产91久久青草| 色嗨嗨在线| 久久久人体| 试看福利| 91综合在线| 少妇人妻好深太紧了vr91| 日本福利二区视频| 亚洲第91页 | 欧美大的香蕉有线电视视频| 日韩熟女乱伦中出| 婷婷九月丁香| 男人的天堂午夜av| 97精品一二区| 青青草中文字幕| 成人八戒网站| 色制服丝袜夫妻av一区| 69精品| 午夜视频久久久久一区| 亚洲欧美校园另类春色| 好湿好紧视频| 色五月激情网| 不卡一区视频| 级做a爱无码性色永久免费| 26uuu国产免费观看| 日韩精品高清资源在线| 亚洲无码一区成人免费午夜| 夜夜草网站| 北条麻妃性愛视频| 久久性爱视频免费看| 国产伦精品一区二区三区在线观| 欧美亚洲美少妇一区二区| 欧美92| 岛国视频免费在线观看| 久久 亚洲 日韩 人妻| 一起草三级AV电影在线观看 | 欧美亚洲日韩人妻在线观看| 欧美亚洲中文字幕| 色99视频| 白嫩妹子国产骚| 国产精品免费日韩| 情色五月天网| 激情无码日韩| 日韩精品三级片长长久久| 波多野结衣AV无码一区| 日韩传媒在线| 婷婷av在线中文字幕| 一区二区三区 丝袜 高跟 美腿| 丁香五月天堂网| 国产成人天堂| 日韩人成网站在线播放| 天天爽入口| 大香蕉一线视频| 婷婷五月天色网| 亚洲精品乱码久久久久久蜜桃麻豆 | 色爱亚洲| 裸体美女免费看网站青草| 美女黄色91| 新版天堂中文资源8在线| 黄色一区三区| 大香蕉伊人色偷偷在线| 97在线免费看视频| 青女在线| 亚洲精品日韩国产欧美| 亚州性色| 97精品网| 亚州成人a∨| 综合激情二| 国产少妇高潮| 免费观看啪视频| 友优传媒精品在线一区二区| 欧美色图天堂网m| 中国AV美女| 欧洲精品久久| 99热超碰在线| 国产丝袜美女在线一区| 啊啊啊轻点在线观看| 99色综合| 黄页网站免费高清在线观看| 91情色在线| 青青11操操操操操操操操| 无码免费在线观看黄色片| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 91激情综合| 久久婷婷五月天| 久久久久久久免费A片国产成a人亚洲精∨品无码| 免费伦费视频在线观看| 久久精品国产亚洲粉嫩| 97色97好| 99热思思| 日韩欧美国产一区二区三区四区| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 日韩免费a级毛片无码a∨| 欧美青青视频| 色老汉玖玖爱| 日韩欧美亚洲一区二区三区影院| 国产精品不卡一区二区电影| 久久大香蕉97| 国语人妻精彩刺激| 久久鲁干| 乳欲人妻办公室奶水| 九九九九精品视频| 欧洲亚洲人人爽爽视频| 日本一区二区三区精品| 日本 欧美 国产一区| 国产在线视频午夜精华在| 加勒比少妇AV婷婷六月天超碰超碰| 色色热| 亚洲 日韩 丝袜 熟女 变态| 2023天天操夜夜操| 熟人人妻少妇精品久久| 日本久久999| 国产农村妇女精品1区二区| 青娱乐日韩无码| 精品中文字幕第一页| 91无遮挡| 曰韩中文人妻视频| 亚洲毛片久久| 欧美日韩人妻精品系列一区二区三区| 941超碰| 亚洲资源网| 欧美天天谢综合网| 美日韩一卡二卡三卡免费人妻精品| 曰韩av中文字幕专区| 丰满人妻无码一区二区三区| 嗯啊啊啊轻点视频| 日本午夜福利视频| 久久色一区| 深夜啪啪啪视频免费| 高清国产av无码| 亚洲综合中文字幕有码| 2018色综合天天操| 久久HD| av资源在线观看少妇| 午夜久久无码1000合集| 国产精品自在线发布| 国产人伦a片信息免费片| 天天插夜夜操| 欧亚性爱啪啪| 久久婷婷五月天| 久久99精品视频| 伊人91| 狠狠干综合| 农村妇女一级二级三级视频| 五月婷婷色色| 伊人青青一区成人视频在线观看区| 麻豆人妻精品一区二区| 久久久9品一区二区三区| 99热综合在线| 青青青艹在线视频| 欧美高潮| 日韩91网站| 极品另类| 无码丰满熟妇一区二区浪潮AV| 嗯啊视频免费在线观看| 日本岛国黄色网址| 91在线综合网| 色娱乐色呦呦夜夜夜夜av| 狠狠做深爱婷婷久久二区| 国产后入清纯| 美女诱惑久久| 人妻中文字幕精品无码| 亚洲中文字幕三级在线| 欧美天天插| 国产传媒一区日韩| 亚洲久久东京热一二三四五区视频| 熟女高潮精品一区二区| 青青色在线观看| 亚洲国产精品9999在线观看| 日亚韩精品视频二区三| 午夜精品99久久久久传媒| 久久九七| 久久丝袜| 免费一级黄色录像影片| A久久| 99www.bibizy香蕉资源国产一区二区三区高清| 物业黑人 AV一区| 综合色好色| 日逼逼免费看| 亚洲色图超碰在线| 99热8| a级免费在线观看| 国产亚洲色婷婷久久99精品91葵花宝典 | 98一区二区精品| 精品国产久久乱码| 91丝袜在线观看| 国产三级多多影院2022国产AA一级毛片无码 | 91精品丝袜在线观看| 欧美成人精品一区二区三区| 台湾佬中文娱乐网久久久久久久久久com | 加勒比海成人视频网| 97超碰精品图片| 无码精品久久久天天影视| 99热婷婷| 色69大色97香蕉| 1769国内精品视频| 清纯唯美激情四射| 欧美综合色,www| 97在线免费视频| 欧美性爱在线无码| 特级大荫道BBwBBwBBW| 青女偷拍网| 91社操逼| 北京美女一区二区| 高清有码一区二区| 区日韩亚洲乱码av电影| 久久久久久久91| 欧美性巨大╳╳╳╳╳高跟鞋| 精品91摸| 青青草好吊色| 国产免费一区二区在线A片视频| 97色妞| 国产日韩精品suv| 嗯啊免费视频| 欧洲久久一二线| 99热在线播放| 色欲久久99国产精品久久久久久| 亚洲一区二区精品福利| 91亚洲欧美综合高清在线| 精品国产无码中文| 亚洲永久AV无码精品秋霞| 久草加勒比一区在线| 亚洲1区| 99日视频在线免费| 色婷久久| 亚洲一区二区中文字幕| 五月婷丁香| 久久久一区二区三区麻豆| 99操视频| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 福利操逼| 欧美 亚洲 91| 一区二区三区激情在线观看| 噜噜瑟| 大香蕉九九| 久久东京热成人| 色五月婷婷网| 国产精品美女久久久久久网站| 乱精品一区字幕二区| 国产一区在线播放| 99精品伊人| 色色福利| 青草地一本线一区二区三区| 日本福利社| 亚洲欧美情色| 1204金沙人妻懂旧版免费| 免费看黄视频亚洲网站| 国产日韩中文字幕欧美| 97视频一区| 日韩人妻少妇中文字幕| 超碰精品日韩欧美国产| 国产一区麻豆免费观看| 久久免费精品视频免一| 亚洲日韩电影| 久久超碰、| 国产成人免费观看在线视频| 好湿好紧视频| 男人的天堂欧美| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 国产AB视频| 丁香六月综合激情| 成人无码在线视频网站| 综合网少妇| 91视频观看网站| 久久激情亚洲精品无码?V| 日1区2区3区2020| 91麻豆天美国产| 操逼网站视频漫画国产| 激情五月天中文字幕色| 欧美在线 亚洲| 天天做天天爱天天爽| 伊人一区二区在线播放| 精品人妻一区二区三区不卡断 | 超碰美国| 亚洲中亚日激情视频| 天天摸天天插天天日| 一区二区三区视频国产免费| 亚洲色婷婷综合久久久久中文| 啊啊啊用力在线观看| 夜色AV无码手机在线影院| 亚洲色狠| 九九久久国产精品怡红院| 国产蜜臀精品一区免费尤物| 国产在线视视频有精品| 色狠狠 - 百度| 精品传媒在线一区| 男人的天堂三级| 人人澡综合涩| 有码免费观看| 黑丝内射一区二区三区| 日本123区操B视频| 亚洲成人免费中文字幕| 免费家庭乱伦视频| 亚洲男人天堂av| 97操碰| 日本最新1区2区3区| 亚洲人妻熟妇三十三区| 亚洲中文字幕97久久精品少妇| 久久久久国产精品喷潮免费观看臀| 熟妇综合一区二区三区| 丰满人妻一区二区三区免费| 九九这里只有精品| 肉丝中文无码高清| 狠狠做深爱婷婷久久二区| 日韩久久超碰色| 欧美|91色综合| 能看的AV| 综合熟女| 神马精品视频| 亚洲精品 大香蕉| 九九热视频在线观看| www久久99| 色婷婷导航| 极品色www影院| 欧美一区二区观看在线| 亚洲Av无码成人精品国产| h无码动漫在线观看| 日韩精品在线观看观看| 久久毛卡| 立川理惠加勒比无码| 三级片网站在线播放| 天天做日日爱夜夜爽| 97久久精品国产| 久久久久密臀一区二区| 人妻在线大香蕉| 福利一级版子| 午夜操操操| 99精品九九九九九九| 水滴偷拍| 操屄日韩| 精品少妇人妻av久久免费| 亚洲最大成人a毛毛片| 东京热男人的天堂精品| 婷婷久久五月| 久久熟女人| 嗯……啊…嗯嗯…啊…好舒服| 97香蕉人人乳| 久久九操在线观看| 久久人| 岛国黄片网站| 亚洲欧美国产其他二区| 成人婷婷丁香| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 五月天婷婷色| 久热精品色情| 免看60秒涩涩视频| 亚洲欧美黄| 麻豆国产视频精品观看| www欧美性爱| 久操99| 亚洲日本天堂| 男人久久天堂| 久久成人午夜精品影院| 亚洲人妻一区二区三区| 久久久久久久久久黄色网| 疯操AV| 亚洲在线网站| 动漫爆乳3D奶水一区在线观看| 欧美日韩国产传媒在线精品| 亚洲成人妻日韩在线| 欧美综合色图片| 亚洲高清无毛一区二区| 日韩精品区二区三区不卡| 色婷婷综合久久久久中文一区二区 | 亚洲国产精品成人久久蜜臀| 免费伦费视频在线观看| 伊人久久青青草| 精品一区二区久久| 成人av毛片在线观看| 亚洲精品日韩国产欧美| 超碰人妻中文在线| 青青在线视频日韩欧美| 久久久成人国产精品无码| 亚洲熟妇无码一区二区三区| 9I1性色影院| 上海一级黄片| 97超碰逼| 啊啊啊啊啊啊在线观看| 综合久久婷婷| 春色综合免费| 亚洲成人性爱网站在线播放| 欧美美女自慰一区二区三区| 嗯嗯嗯啊啊在线观看| 91东京热男人的天堂| 大香樵伊人网| 91无码精品| 成人性爱全视频观看| 日本一天色道久久久精品视频| 97超碰美女| 大香蕉伊人久久| 另类欧美| 伊欧美综合视频| 超碰97欧美日韩| 18啪啪手机免费性爱| 亚洲另类久操网| 亚州91| 亚洲 日韩 欧美 国产综合体| 天操天操夜操夜月月年年操操| 亚洲精品国产熟女| 男女激情中文字幕| 高清国产精品无码| 欧美页片| 影音先锋视频在线| 亚洲欧洲第二视频在线观看色图| 岛国在线免费视频| 夜草欧美| 男人高清无码一区二区| 亚洲综合校园春色| 91丨熟女丨丰满熟女| 亚洲清纯唯美| 一区在线国产播放| 亚洲欧美97√| 91亚洲黑人| 性色亚洲| 精品176精品2| 亚洲少妇综合在线播放| 97在线资源| 8050午夜少妇无码| 国产又粗又长又大的视频| 九久9精品| 91亚洲综合在线| 澳门成人网站久国产日韩| 色综合av综合久久| 综合色拍| 大香网伊人久久综合| 少妇无码999| 久久久久久久久久久久久9999| 欧美Ⅴ性爱| 亚洲限制级| 成人性爱高清视频免费看| 超碰诱惑| 75大香蕉| 国产超碰| 天天草天天日| 97爱啪| 嗯啊不要在线观看嗯啊| 国产三级在线现体验区| 国产av色网| 青青网三级视频| 亚洲激情综合另类男同| 日韩精品三级| 青苹果影院男人的天堂| 亚洲乱码尤物193YW| 色悠久久久av| 久久鲁夜| 成人a大片在线观看| 亚洲无码99| 人妻少妇精品视频一区二区三区| 久久久久久大| 国产AV无码AV| 久久大黄片| 亚洲日产专区婷婷| 亚洲五月婷| 久久精品 六十路 熟女 欧美| 日本精品久久久久久久| 96AV精品| 亚洲国产成人精品无码专区| 色欧洲| 色女免费在线观看视频网址| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 亚洲色图大香| 亚洲一区二区三区在线激情| 五月色网| ,成人免费啪啪视频| 欧美另类丝袜熟女| 狠综合网| 99热综合在线| 播播亚洲小说亚洲| 欧美Ⅴ性爱| 四虎影视国产精品| 亚洲欧洲色情高清| www.欧精品| 成人性爱电影一区二区| 五十路六十路七十路熟婆| 性感美女91影视| 97精选久久| 欧美在线啊啊啊 | 久久久九97| 精品亚洲国产成人AV制服丝袜| 国产午夜福利专区综合| 啊v在线观看视频| 狠狠干2020| 亚洲男人天堂2016| 亚洲网自拍| 97视频在线观看播放与子乱对白在线……| 亚洲 欧美 手机在线观看| 欧美精品23| 9久在线视频只有精品| 欧美熟妇色| 久久99干一本高清| 日本黄色XXX| 91精品国久久久久久无码| 亚洲男人的天堂V| 吻戏激情性巴克| 99视频内射三四| 日本三级日本三级99| 日韩三级天堂在线观看| 国产精品激情久久久久久久| 18禁中文字幕| 影音先锋视频在线| 日本免费专区| 人人爱人人操人人性| 中文字幕精品一区二区精| 日韩性爱1级片视频| 国产精品毛片?v一区二区三区| 翔田千里无码一区| 岛国A V在线免费看| 日韩免费三级黄片电影| 日韩中文字幕国产| 久久av一级av少妇av高潮| 亚洲一级性爱视频免费看| 乱伦1色页| 爱av免费| 激情五月天丁香| 99无码| 欧美成不卡网| 国产av热热色| 人妻熟女一区二区| 啊啊啊水好多| 91亚洲综合| 国产精品点击进入在线影院高清| 国产 日韩,欧美 自拍| 日本乱人伦片中文三区| 丁香九月 婷婷| 凸凹视频在线观看| 综合久久99| 麻豆乱码久久精| 91精品国久久久久久无码| 97超色| 男人的天堂2018| 久久精品久久久久久久久| 亚洲欧美综合区自拍另类| 日韩免费性爱视频在线观看| 久久国产视频性吧 | 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | www.狠狠干.coom| 精彩国产视频播放1区2区| 国产精品天干天干综合网麻豆| 熟女一区二区三区四区| 久久久久久97| 2019久久久久久久久福利| 久久九九综合| 国产五码丝袜屁眼| 久久大香蕉97| 欧美偷拍区| 久久婷婷精品| 丝袜视频一区二区在线播放国产中文| 日韩欧美~中文字| 国产免费黄色一级大片| 福利在线观看一区二区| 天天射网| 久久激情四射婷婷丁香五月天| 在线a亚洲视频播放在线| 中国一区二区亚洲人妻| 国产suv精品一区二区四| 91熟女.com| 精品一级毛片在线观看| 亚洲 国产 精品一区| 真实高潮91| 91大香蕉伊人| 国产操操日韩三级黄| 久久久久久久久久久久久久久性生活视频 | 午夜一区| 久久香蕉综合一本到3atv| 夜夜狼人妻| 少妇三p| 亚洲成人无码影院| 乱理日韩中文| 精品天堂| 精品少妇一区二区三区在线视频| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91足交| 96免费视频在线| 久久大黄片| 五月丁香啪啪| 日本在线15p| 超碰成人最新最好看| 熟女色图在线| www国产无码| 啊啊啊操一区| 97久久超碰亚洲| 美女一区二区国产精品| 亚洲限制级| 8x福利精品第一福利视频导航| 久久久精品日本一道| 欧美综合中文| 久热9| 2017天天操天天日| 日本在线激情一区二区三区| 久久色AV线| 性色av蜜臀av色欲aV| baiduhicn.com。| 亚洲天天做日日做天天谢日日| 天天色悠悠激情| 欧美天天干| 啊啊啊好爽快点啊啊啊嗯嗯| 久久久久久久久久久久色网| 国产99 中文字幕日韩小视频| 极品色电影院| 天天日天天干天天整| 啊啊啊在线看| 日本3级一区二区免费| av天堂加勒比| 久99| 亚洲另类天堂| 操我啊啊啊啊啊| 性爱综合一区二区| 最新中文字幕av| 欧美精品99久久久**| 欧美在线中M| 国产福利精品最新在线| 国产精品丝袜在线| 开心五月婷婷| 国产又黄又粗又猛大片| 精品国产72| 人人摸人人添人人操 | 一区在线观看中文字幕| 玖玖爱视频网站| 国产精品青青草| 五月婷婷丁香六月丁香| 美女网站黄页| 久久人妻办公室视频| 天天日天天干天天操| 大香蕉国产中文自拍| 色色香蕉| 人妻精品一区二区| 欧美图片色综合| 夜嗨影院| 超碰免费人妻在线| 亚洲免费97免费| 人人考人人摸人人干| 精品传媒在线一区| 91麻豆天美传媒HD| 国产91久久九九免费精品无码| 91女日逼| 亚州人妻| 狠狠色综合网| 国产超碰AV在线精品| 99在线啪| 蜜色网色哟哟| 性爱乱伦网址| 91肉丝| wuyechaopeng| 白丝1区2区3区| 亚洲综合中文字幕有码| 操东北女人| 丰满丝袜少妇AV| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲九九视频| 麻豆AV短剧| 国产操逼视频在线观看| 99热线麻豆| 色噜噜人妻丝袜AV资源| 大香蕉丝袜一级片| 亚洲一区二区三区中文字幕| 日韩一卡二卡三卡| 欧美激情久久久久| 亚洲国产欧美日韩人妻日中文| 五十路三级片| 国产乱伦搜索结果91P| 天天碰久久入| 亚拍在线| 日本97久久久精品| 五月天综合网| 深夜激情无码| 天天激情综合站| 日本操逼无码| 大鸡巴久久| 另类天堂| 天天综合官网| 欧美日韩电影成人在线| 国产农村妇女精品一二区| 日韩在线一区二区| 伊人96在线| 搡老熟女老女人老熟妇免费视频| 亚洲欧美激情小说| 欧美顶级黄色大片免费| 久久一区二区三区四区五区| 91久久久久久| 在线观看综合精品亚洲| 日本操色导航| 亚洲av综合伊人久久| 欧美人妻少妇| 青青草好吊色| 精品国产乱子伦一区二区三区,精品一 | 黑人中出21连凳花野真衣| 夂久色| 夜夜爽爽爽| 粉嫩国产精品久久粉嫩| 青青草日韩无码| 欧美激情综合| 婷婷久久综合| 人妻久久久久久久久久久久久久久| 国产精品99久久久www| 国产女人91精品嗷嗷嗷嗷| α√在线| 国产超碰| 婷婷五月激情综合| 亚洲综合激情五月久久| 狠狠干综合| 九九亚洲| 美女啊啊啊啊啊啊啊| 天天摸天天插天天日| 久久久久久亚洲精品中文字幕人妻| 伊人综合色网| 嗯嗯啊啊啊好舒服| 中文字幕片| 91爰爱欧美| 久久妇| 亚洲综合色图欧美| 久久久久久久久久久久97 | 99热免费| 亚洲五区熟女| 丰满人妻一区| 夜夜夜夜久久久久| 亚洲91网| 成人无码在线视频网站| 十八岁啪啪视频免费看| 自拍大香蕉乱插| www.久久| 久久免费中文字幕在线观看| 狠狠热这里都是精品| 久久亚码| 欧美—性—交—色| 欧美国产精品久久九九| 亚洲免费成人在线高清无码视频| 国产精品无码av在线| 午夜免费福利视频一区| 日韩99999色| 96国产污污污丝袜| 蜜臀久久99精品久久久久电影| 成人怡红院| 青娱乐欧美激情一区二区| 日本一级性爱| 澳门成人网站久国产日韩| 精品久久大胆人体| 久久久性爱| 日本人妻伦在线中文字幕| 国产偷拍自拍在线视频| 艹我哪美一区无码| 97精品国产手机| 国内一级精品| 久久精品国产AV一区二区三区| 一区三区啪啪| 97国产精品国| 欧美日韩97在线| 亚洲成人激情小说视频| 亚洲欧洲日韩国产自在线| 日本91白丝| 风月影院男女十八禁| 91美女小视频| 日本一区二区成人在线| 人人妻人人操人人乐| 夫妻AV网站| 狠狠色噜噜狠狠狠狠2018| 狠狠狠狠狠| 日韩中文字幕宗合在线| a片久久久久久久久久久久 | 91亚州| 干婷婷综合网| 啊啊啊快操我视频| 69一区二区三区| 亚洲第一无码播放立川理惠| 91女人的网站| 亚洲欧美日韩不卡人妻| 国产精品久久久久中文字幕| 久草精品热视| 啊啊啊慢点| 一级黄色牲爱A级片| 青苹果影院男人的天堂| 91亚洲欧美激情| 亚洲午夜福利视频| 330dv亚洲成年视频网| 囯产精品久久久久久久久久梁医生| www.色操逼| 老司机午夜精品福利视频一区二区 | 日韩性爱电影一区| 国产精品网站免费 | 最新av在线| 日韩一级久久毛片| 欧美色三级片91| 奶水 人妻 哺乳 在线| 久久亚洲精品成人av| 天天干人妻| 午夜激情成人在线观看| 男人的天堂激情| 97视频免费在线观看| 99综合视频一体| 青青草一本道福利视频| 黄色免费网页无码| 久久精品人妻一区二区| 国产一区自拍欧美日韩| 成人老鸭窝人人在线视频| 农村女一级毛卡片| 97精品国产97久久久久久免费| 99999久久精| AA丁香综合激情| 97人人爱人人乐| 67194国产| 精品人妻一区二区三区四区| 九九色热| 成人久久久| 懂色综合久久久| 女沟厕偷窥piss小便| 性色avv| 欧美精品精品一区二区| 91女网站| 色欲av一区二区三区蜜芽| 天天α片| 岛国视频免费在线观看| 日韩欧美天天爽爽爽天天爽爽| 久久毛卡| 色天天野狼综合社区| 91久久久久久久| 女生久久网| 香蕉一区二区三区在线视频| 免费成人在线观看91| 综合色拍| 亚洲一区二区性爱电影| 色欧美在线| 国产欧美日韩女同性恋ww喷水精品| 九九九九热| 91熟女综合| 九月丁香综合网| 超碰在线91| 日韩中文字幕熟妇人妻| 久久久久免费看少妇A片特黄| 日欧毛片久久| 99久久婷婷国产综合| 日韩欧美传媒一区国产| 动漫片子网站3黄| 人人妻人射| 色综合天天爱去电影网| 亚洲不卡不卡中文字幕不卡| 91精品国产日韩欧美综合| 哑洲在线| 高清不卡视频| 国人欧美精品一区二区| 亚州男人天堂| 天堂伊人久久| 久热9| 国产精品久久久久久久久久梁医生| 日韩欧美资源| 96久久科窝| 黄页视频网站野外| 亚洲高清自拍| 欧美亚洲激情一二三| 亚洲天堂,男人| 色五天伊人| 久久啊啊| 91国产丝袜美女| 狠狠中文字幕| 人人射人人操人人摸| av网站国产主播在线| 国产夫妻性生活视频| 日产中文字幕2020| 日本日逼视频网| 强奸乱伦亚洲第一页| 九九九九九精品视频| 国产第11页| 精品91摸| 99久re热视频精品98| 一级黄色视频网| 曰韩中文人妻视频| 5252色欧美在线男人的天堂| 麻豆人妻少妇在线免费观看| 999久久久| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 亚洲精品 大香蕉| 青青草啪啪网| 影音先锋少妇| 国产性感在线观看| 六月激情婷婷| 日本丝袜人妻内射| 国产精品第一区第一页| 超碰色大香蕉| 久热99999| 999综合色| 操我啊啊啊啊啊| 五月天色图影视| 久久激情综合| 日韩欧美一级特黄大片| 91久久免费视频互動交流| 亚洲精品99999| 99热这里都是精品| 亚洲人妻久久久| 天天天操天天天爱| 亚洲色香| 美美91成人国产精品欧美精品久久久久久久| 色欧美天天| 激情综合五月天| 99热自拍| 五月天综合| 色综合99| 91超级碰碰碰| www.超碰| 99激情| 激情综合五月婷婷| 五月激情小说| 婷婷久久综合| 色婷婷五月天| 屌色在线97视频| 鲁鲁色综合网| 日韩丝袜人妻AV| 97综合在线观看| 少妇被玩视频二三区| 国产精品久久久视频| 亚洲AV资源| 久久鲁夜| 淫乱图区| 日韩高清一二三| 性生活性生大爱77AV国产| 亚洲天在线| 国产精品9999| 丝袜亚洲综合| 26uuu成人影片| 美国精品国产精品|