<tr id="tp1vn"><td id="tp1vn"><dl id="tp1vn"></dl></td></tr>
  1. <p id="tp1vn"></p>
  2. <sub id="tp1vn"><p id="tp1vn"></p></sub>
    <u id="tp1vn"><rp id="tp1vn"></rp></u>
    <meter id="tp1vn"></meter>
      <wbr id="tp1vn"><sup id="tp1vn"></sup></wbr>
      日韩第一页浮力,欧美a在线,中文字幕无码乱码人妻系列蜜桃 ,国产成人精品三级麻豆,国产男女爽爽爽免费视频,中文字幕国产精品av,两个人日本www免费版,国产v精品成人免费视频71pao
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      汽車診斷協(xié)議精講:ISO 14229(UDS)與 ISO 15765 的協(xié)作機(jī)制及代碼示例

      0
      分享至


      1. 引言

      現(xiàn)代汽車電子系統(tǒng)由數(shù)十個甚至上百個電子控制單元(ECU)構(gòu)成,它們通過 CAN、LIN、FlexRay 等總線協(xié)同工作。當(dāng)車輛出現(xiàn)故障時,診斷工具(如診斷儀)需要與 ECU 通信,讀取故障碼、實時數(shù)據(jù),執(zhí)行動作測試等。這一套通信規(guī)則就是 汽車診斷協(xié)議。

      在基于 CAN 總線的診斷應(yīng)用中,最核心的兩個標(biāo)準(zhǔn)是:

      • ISO 14229 :定義了 統(tǒng)一診斷服務(wù)(UDS,Unified Diagnostic Services) ,是 應(yīng)用層 協(xié)議,規(guī)定了診斷請求和響應(yīng)的格式、服務(wù)含義。

      • ISO 15765 :定義了 基于 CAN 總線的診斷傳輸(DoCAN,Diagnostics over CAN) ,是 傳輸層/網(wǎng)絡(luò)層 協(xié)議,負(fù)責(zé)將應(yīng)用層 UDS 消息拆分成適合 CAN 總線傳輸?shù)男?,并在接收端重組。

      很多初學(xué)者容易混淆這兩者。一句話總結(jié):UDS 告訴你“問什么問題”,ISO 15765 教你“怎樣把問題裝進(jìn) CAN 幀里送過去”。而 ISO 14229 正是 UDS 的標(biāo)準(zhǔn)編號。

      本文將從概念到代碼,深入淺出地比較這兩個協(xié)議,并給出 C++ 實現(xiàn)示例。

      2. 協(xié)議棧概覽(OSI 模型視角)

      OSI 層

      汽車診斷協(xié)議棧

      標(biāo)準(zhǔn)

      作用

      應(yīng)用層

      UDS

      ISO 14229

      診斷服務(wù)定義:讀數(shù)據(jù)、寫數(shù)據(jù)、例程控制等

      傳輸層

      DoCAN (ISO 15765-2)

      ISO 15765-2

      分段、重組、流控制

      數(shù)據(jù)鏈路層

      CAN 2.0B

      ISO 11898

      8 字節(jié) CAN 幀、仲裁、錯誤檢測

      物理層

      CAN 物理層

      ISO 11898

      電平、拓?fù)?/p>


      • UDS (ISO 14229)ISO 15765 不是對立關(guān)系,而是上下層協(xié)作關(guān)系。

      • ISO 15765 同時也定義了與 UDS 無關(guān)的 時間參數(shù) (如 P2、P2* 等)和 通信控制

      3. UDS (ISO 14229) 詳解 —— “說什么”

      UDS 是一套面向汽車場景設(shè)計的診斷服務(wù)集合,每個服務(wù)用 服務(wù)標(biāo)識符(SID, Service Identifier) 表示(1 字節(jié))。典型服務(wù)包括:

      SID (hex)

      服務(wù)名稱

      功能簡述

      0x10

      Diagnostic Session Control

      切換診斷會話(默認(rèn)、編程、擴(kuò)展等)

      0x11

      ECU Reset

      重置 ECU

      0x22

      Read Data By Identifier

      通過 DID 讀取數(shù)據(jù)(如 VIN、軟件版本)

      0x2E

      Write Data By Identifier

      通過 DID 寫入數(shù)據(jù)

      0x19

      Read DTC Information

      讀取故障碼

      0x14

      Clear Diagnostic Information

      清除故障碼

      0x31

      Routine Control

      啟動/停止例程(如動作測試)


      3.1 UDS 請求/響應(yīng)格式

      請求格式(診斷儀 → ECU):

      [SID] [子功能(可選)] [參數(shù)...]

      例如:讀取 DID 0xF190 的數(shù)據(jù)(假設(shè) DID 占 2 字節(jié))

      22 F1 90
      • 0x22 = ReadDataByIdentifier SID

      • 0xF190 = 數(shù)據(jù)標(biāo)識符(如 VIN)

      肯定響應(yīng)格式(ECU 成功處理):

      [SID+0x40] [子功能(若請求有)] [數(shù)據(jù)...]

      例如對上述請求的肯定響應(yīng):

      62 F1 90 41 32 ... (實際數(shù)據(jù))
      • 0x62 = 0x22+0x40

      否定響應(yīng)格式(ECU 無法處理):

      0x7F [SID] [NRC]

      例如:請求的 DID 不支持,返回 7F 22 31(0x31 = RequestOutOfRange)

      3.2 子功能與抑制肯定響應(yīng)位

      許多服務(wù)(如 SessionControl、ECUReset)的第一個字節(jié)稱為子功能,其最高位(bit7)為 抑制肯定響應(yīng)位(SPR, Suppress Pos Resp)

      • SPR = 1:ECU 不發(fā)送肯定響應(yīng),只發(fā)送否定響應(yīng)(用于減少總線負(fù)載)。

      • SPR = 0:ECU 發(fā)送肯定響應(yīng)。

      例如:切換到擴(kuò)展會話(子功能 0x03),且不需要肯定響應(yīng):

      10 83   // 0x80 | 0x03 = 0x83
      3.3 UDS 示例(無分段)

      一個完整診斷請求通過 CAN 發(fā)送(假設(shè)不超 8 字節(jié)):

      • 請求: 10 03 (切換到擴(kuò)展會話,需要肯定響應(yīng))

      • 響應(yīng): 50 03 00 32 01 F4 (肯定響應(yīng),附帶一些參數(shù))

      4. ISO 15765 詳解 —— “怎么送”

      CAN 數(shù)據(jù)鏈路層一幀最多承載 8 字節(jié)數(shù)據(jù),而一個 UDS 消息可能長達(dá)幾十甚至幾百字節(jié)(如讀取 VIN 的 17 個字符,加上 DID 等)。ISO 15765-2(常稱為 ISO-TP)定義了分段傳輸協(xié)議,將長消息切分成多個 CAN 幀,并管理發(fā)送/接收狀態(tài)。

      4.1 四種幀類型(N_PDU 類型)

      幀類型

      簡稱

      用途

      協(xié)議控制信息(PCI)字節(jié)

      單幀

      SF

      消息總長 ≤ 7 字節(jié)(經(jīng)典 CAN)

      第一個字節(jié)高 4 位 = 0x0,低 4 位表示數(shù)據(jù)長度

      首幀

      FF

      長消息的第一幀,告知總長度

      第一個字節(jié)高 4 位 = 0x1,低 4 位 + 第二字節(jié)組成 12 位總長

      連續(xù)幀

      CF

      首幀之后的后續(xù)數(shù)據(jù)

      第一個字節(jié)高 4 位 = 0x2,低 4 位表示序列號(SN,0~15 循環(huán))

      流控制幀

      FC

      接收端控制發(fā)送端速率

      第一個字節(jié)高 4 位 = 0x3,低 4 位表示流控制狀態(tài);后續(xù)字節(jié)包含塊大小(BS)和最小間隔時間(STmin)


      4.2 幀格式詳表(經(jīng)典 CAN,11 位 ID,單字節(jié) PCI)

      單幀 (SF)

      | Byte0        | Byte1 ~ Byte7 (最多7字節(jié)數(shù)據(jù)) |
      | 0x0 | Len | UDS 數(shù)據(jù) (Len 字節(jié)) |
      • Len = 4 位,范圍 0~7(實際長度 0~7,若消息總長 >7 必須用多幀)

      • 注意:有些實現(xiàn)使用 首個字節(jié)為 PCI,剩余 7 字節(jié) ,Len 不包含 PCI 自身。

      首幀 (FF)

      | Byte0        | Byte1        | Byte2~Byte7 |
      | 0x1 | Len_H | Len_L | 前 6 字節(jié) UDS 數(shù)據(jù) |
      • 總長度 = (Len_H << 8) | Len_L,范圍 8~4095 字節(jié)

      連續(xù)幀 (CF)

      | Byte0        | Byte1~Byte7 |
      | 0x2 | SN | 后續(xù) 7 字節(jié) UDS 數(shù)據(jù) |
      • SN 從 1 開始,每發(fā)一個 CF 加 1,到 15 后回繞到 0。

      流控制幀 (FC)

      | Byte0        | Byte1        | Byte2        | Byte3~Byte7(保留)|
      | 0x3 | FS | BS (塊大小) | STmin (最小間隔) | 0x00... |
      • FS (Flow Status):0=繼續(xù)發(fā)送(CTS),1=等待(WAIT),2=溢出(OVFLW)

      • BS (Block Size):發(fā)送端每發(fā) BS 個 CF 后,需等待下一個 FC 才可繼續(xù)(0 表示無限制)

      • STmin:兩個連續(xù)幀之間的最小間隔時間(0~127 或 0xF1~0xF9 編碼)

      4.3 多幀傳輸流程示例

      發(fā)送方(如診斷儀)想發(fā)送一個 20 字節(jié)的 UDS 消息:

      1. 發(fā)送 首幀 :PCI=0x10,長度=20,并攜帶前 6 字節(jié)數(shù)據(jù)。

      2. 接收方收到 FF 后,計算所需 CF 數(shù)量,準(zhǔn)備接收緩沖區(qū),并發(fā)送 流控制幀 (BS, STmin)。

      3. 發(fā)送方根據(jù) FC 發(fā)送 連續(xù)幀 ,每幀 7 字節(jié)數(shù)據(jù),直到全部發(fā)完。

      5. UDS 與 ISO 15765 的比較

      比較維度

      UDS (ISO 14229)

      ISO 15765-2 (DoCAN)

      OSI 層

      應(yīng)用層

      傳輸層 / 網(wǎng)絡(luò)層

      關(guān)注點

      診斷服務(wù)語義:做什么操作、數(shù)據(jù)含義、錯誤碼

      消息分段、流控制、CAN 幀打包與重組

      數(shù)據(jù)單元

      UDS 請求/響應(yīng)(無長度上限)

      N_PDU(單幀/首幀/連續(xù)幀/流控制幀)

      關(guān)鍵參數(shù)

      SID、子功能、DID、DTC、NRC

      塊大小(BS)、最小間隔(STmin)、序列號(SN)

      獨立性

      可運行于其他傳輸層(如 DoIP、UART)

      專為 CAN 設(shè)計,可傳輸任何上層數(shù)據(jù)(不僅是 UDS,也可以是 OBD、KWP2000)

      標(biāo)準(zhǔn)文檔

      ISO 14229-1

      ISO 15765-2

      核心關(guān)系:UDS 消息被封裝成 ISO 15765 的 N_PDU 載荷。沒有 ISO 15765,UDS 無法穿越 CAN 總線的 8 字節(jié)限制;沒有 UDS,ISO 15765 只是在傳輸無意義的字節(jié)流。

      6. C++ 代碼舉例:實現(xiàn) ISO 15765 打包器與 UDS 消息組裝

      以下代碼演示:

      • UDSRequest 類:構(gòu)造一個簡單的 UDS 請求(如 ReadDataByIdentifier)。

      • ISO15765Packer 類:將 UDS 請求字節(jié)流轉(zhuǎn)換為多個 CAN 幀( vector )。

      • ISO15765Unpacker 類:將收到的 CAN 幀還原成 UDS 消息。

      為了簡潔,假設(shè) CAN 幀結(jié)構(gòu)為 {id, data[8], dlc},且使用標(biāo)準(zhǔn) CAN ID(0x7DF 診斷請求,0x7E8 響應(yīng))。僅實現(xiàn)發(fā)送端打包邏輯。

      6.1 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

      #include  
                
      #include
      #include
      #include

      struct CanFrame {
      uint32_t id; // 標(biāo)準(zhǔn) 11 位 ID
      uint8_t dlc; // 數(shù)據(jù)長度 (0~8)
      uint8_t data[8];
      };

      // 輔助打印
      void printCanFrame(const CanFrame& frame) {
      std::cout << "CAN ID: 0x" << std::hex << frame.id << " DLC:" << std::dec << (int)frame.dlc << " Data:";
      for (int i = 0; i < frame.dlc; ++i) {
      std::cout << " " << std::hex << (int)frame.data[i];
      }
      std::cout << std::dec << std::endl;
      }
      6.2 UDS 請求構(gòu)造(應(yīng)用層)

      class UDSRequest {
      public:
      UDSRequest(uint8_t sid, conststd::vector& data = {})
      : m_sid(sid), m_data(data) {}

      std::vector serialize() const {
      std::vector msg;
      msg.push_back(m_sid);
      msg.insert(msg.end(), m_data.begin(), m_data.end());
      return msg;
      }

      // 示例:構(gòu)造讀取 DID 的請求 (0x22)
      static UDSRequest makeReadDataByIdentifier(uint16_t did) {
      return UDSRequest(0x22, {static_cast(did >> 8), static_cast(did & 0xFF)});
      }

      private:
      uint8_t m_sid;
      std::vector m_data;
      };
      6.3 ISO 15765 打包器(將 UDS 消息轉(zhuǎn)成 CAN 幀序列)

      class ISO15765Packer {
      public:
      // 輸入:UDS 原始字節(jié)流(無 PCI)
      // 輸出:CAN 幀列表(請求 ID 固定為 0x7DF 示例)
      static std::vector pack(const std::vector& udsMsg, uint32_t canId = 0x7DF) {
      std::vector frames;
      size_t len = udsMsg.size();

      if (len <= 7) {
      // 單幀模式
      CanFrame sf;
      sf.id = canId;
      sf.dlc = static_cast(1 + len); // PCI + 數(shù)據(jù)長度
      sf.data[0] = static_cast(0x00 | len); // 單幀 PCI
      std::copy(udsMsg.begin(), udsMsg.end(), &sf.data[1]);
      frames.push_back(sf);
      } else {
      // 多幀模式:首幀 + 連續(xù)幀
      // 首幀
      CanFrame ff;
      ff.id = canId;
      ff.dlc = 8; // 首幀總是 8 字節(jié)
      uint16_t totalLen = static_cast(len);
      ff.data[0] = 0x10 | ((totalLen >> 8) & 0x0F); // 高 4 位為 1,低 4 位為長度高 4 位
      ff.data[1] = totalLen & 0xFF; // 長度低 8 位
      size_t firstPayload = std::min((size_t)6, len); // 首幀攜帶 6 字節(jié)數(shù)據(jù)
      std::copy(udsMsg.begin(), udsMsg.begin() + firstPayload, &ff.data[2]);
      frames.push_back(ff);

      // 后續(xù)數(shù)據(jù)按 7 字節(jié)分塊,生成連續(xù)幀
      size_t offset = firstPayload;
      uint8_t sn = 1; // 連續(xù)幀序列號從 1 開始
      while (offset < len) {
      CanFrame cf;
      cf.id = canId;
      cf.dlc = 8;
      cf.data[0] = 0x20 | (sn & 0x0F); // 連續(xù)幀 PCI
      size_t chunkSize = std::min((size_t)7, len - offset);
      std::copy(udsMsg.begin() + offset, udsMsg.begin() + offset + chunkSize, &cf.data[1]);
      // 如果不足 7 字節(jié),剩余字節(jié)填 0x00(可選,但通常 DLC=8 會包含無用數(shù)據(jù))
      if (chunkSize < 7) {
      std::fill(&cf.data[1 + chunkSize], &cf.data[8], 0x00);
      }
      frames.push_back(cf);
      offset += chunkSize;
      sn = (sn + 1) & 0x0F;
      }
      }
      return frames;
      }
      };
      6.4 使用示例

      int main() {
      // 1. 構(gòu)造 UDS 請求:讀取 DID = 0xF190
      auto udsReq = UDSRequest::makeReadDataByIdentifier(0xF190);
      std::vector udsMsg = udsReq.serialize(); // 輸出: 0x22 0xF1 0x90 (3 字節(jié))

      // 2. 打包成 CAN 幀(單幀)
      auto frames = ISO15765Packer::pack(udsMsg, 0x7DF);
      for (constauto& frame : frames) {
      printCanFrame(frame);
      }

      // 3. 模擬一個較長的 UDS 消息(例如 20 字節(jié)的寫數(shù)據(jù)請求)
      std::vector longMsg(20, 0xAA); // 模擬 20 字節(jié)數(shù)據(jù)
      longMsg[0] = 0x2E; // WriteDataByIdentifier SID
      longMsg[1] = 0xF1;
      longMsg[2] = 0x90;
      // 剩余 17 字節(jié)為寫入值

      auto framesLong = ISO15765Packer::pack(longMsg, 0x7DF);
      std::cout << "\nLong message (20 bytes) packed into " << framesLong.size() << " frames:\n";
      for (constauto& frame : framesLong) {
      printCanFrame(frame);
      }

      return0;
      }

      預(yù)期輸出

      CAN ID: 0x7df DLC:4 Data: 0 22 f1 90
      Long message (20 bytes) packed into 4 frames:
      CAN ID: 0x7df DLC:8 Data: 10 14 2e f1 90 aa aa aa // 首幀,總長度20
      CAN ID: 0x7df DLC:8 Data: 21 aa aa aa aa aa aa aa // CF SN=1
      CAN ID: 0x7df DLC:8 Data: 22 aa aa aa aa aa aa aa // CF SN=2
      CAN ID: 0x7df DLC:8 Data: 23 aa aa aa aa aa aa aa // CF SN=3 (最后7字節(jié),但剩余6字節(jié),尾部補(bǔ)0)
      6.5 ISO 15765 解包器(片段)

      實際 ECU 需要接收 CAN 幀并重組。以下展示核心邏輯:

      class ISO15765Unpacker {
      public:
      // 輸入:一個 CAN 幀,輸出:是否完成一個完整的 UDS 消息
      bool feed(const CanFrame& frame, std::vector& outUdsMsg) {
      if (frame.dlc == 0) returnfalse;
      uint8_t pciType = (frame.data[0] >> 4) & 0x0F;
      switch (pciType) {
      case0x0: { // 單幀
      uint8_t len = frame.data[0] & 0x0F;
      outUdsMsg.assign(&frame.data[1], &frame.data[1] + len);
      returntrue;
      }
      case0x1: { // 首幀
      uint16_t totalLen = ((frame.data[0] & 0x0F) << 8) | frame.data[1];
      m_buffer.clear();
      m_buffer.reserve(totalLen);
      // 首幀攜帶 6 字節(jié)數(shù)據(jù)
      size_t payloadLen = std::min((size_t)6, frame.dlc - 2);
      m_buffer.insert(m_buffer.end(), &frame.data[2], &frame.data[2] + payloadLen);
      m_expectedLen = totalLen;
      m_nextSn = 1;
      m_waitingForFC = false; // 本示例簡化流控制,實際需要等待 FC
      returnfalse;
      }
      case0x2: { // 連續(xù)幀
      uint8_t sn = frame.data[0] & 0x0F;
      if (sn != m_nextSn) {
      // 序列號錯誤,可做錯誤處理
      returnfalse;
      }
      size_t payloadLen = std::min((size_t)7, frame.dlc - 1);
      m_buffer.insert(m_buffer.end(), &frame.data[1], &frame.data[1] + payloadLen);
      m_nextSn = (m_nextSn + 1) & 0x0F;
      if (m_buffer.size() >= m_expectedLen) {
      outUdsMsg.swap(m_buffer);
      returntrue;
      }
      returnfalse;
      }
      case0x3: // 流控制幀(發(fā)送端處理,接收端不處理)
      default:
      returnfalse;
      }
      }
      private:
      std::vector m_buffer;
      uint16_t m_expectedLen = 0;
      uint8_t m_nextSn = 0;
      bool m_waitingForFC = false;
      };
      7. 實際應(yīng)用中的重要參數(shù)與注意事項
      1. CAN ID 分配:診斷通信通常使用 11 位 ID,如物理尋址(特定 ECU)和功能尋址(廣播給所有 ECU)。UDS 不規(guī)定 ID,ISO 15765 也不規(guī)定,通常由整車廠定義(例如 0x7DF 用于功能請求,0x7E8 為第一個 ECU 的響應(yīng))。

      2. 流控制參數(shù)

        • **BS (Block Size)**:接收端可以限制連續(xù)幀個數(shù),防止發(fā)送端淹沒接收端緩沖區(qū)。

        • **STmin (Separation Time)**:兩個連續(xù)幀之間的最小時間間隔,用于低速 ECU。

      3. 時間參數(shù) P2 / P2*:UDS 應(yīng)用層定義了 ECU 處理請求的最大響應(yīng)時間(P2 = 50ms 典型值),ISO 15765 不涉及這個,但診斷儀必須實現(xiàn)超時管理。

      4. 多協(xié)議并存:UDS 也可以運行在 DoIP(以太網(wǎng))、LIN、FlexRay 上,而 ISO 15765 專用于 CAN。因此 ISO 15765 可視為 UDS over CAN 的“運輸層”。

      8. 結(jié)論
      • UDS (ISO 14229) 是汽車診斷的“語言”,定義了豐富而統(tǒng)一的服務(wù),讓診斷工具與不同 ECU 能夠互通。

      • ISO 15765 是這套語言在 CAN 總線上的“信使”,解決了 CAN 幀過小的限制,提供了可靠的分段、重組與流控制機(jī)制。

      • 二者相輔相成:沒有 UDS,ISO 15765 傳輸?shù)闹皇菬o意義的字節(jié);沒有 ISO 15765,UDS 將無法穿越 CAN 總線的長度壁壘。

      理解這兩者的分工是開發(fā)任何基于 CAN 的診斷工具或 ECU 固件的基礎(chǔ)。通過本文的 C++ 代碼示例,讀者可以親手打包一個 UDS 請求,觀察它如何被拆分成 CAN 幀,從而更直觀地掌握汽車診斷協(xié)議棧的層次協(xié)作。在實際工程中,建議使用成熟的 ISO-TP 庫(如 isotp-c)和 UDS 庫,但掌握原理始終是調(diào)試復(fù)雜問題的關(guān)鍵。

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點推薦
      山東榴蓮僅退款后續(xù)來了:女子被行政拘留7日,不道歉商家會起訴

      山東榴蓮僅退款后續(xù)來了:女子被行政拘留7日,不道歉商家會起訴

      映射生活的身影
      2026-05-15 15:43:54
      女子無證駕車從甘肅回廣西 被查獲時已行駛超800公里

      女子無證駕車從甘肅回廣西 被查獲時已行駛超800公里

      封面新聞
      2026-05-15 19:44:02
      突發(fā)槍響!小馬科斯大勢已去,菲軍方火速切割,中菲關(guān)系有望改善

      突發(fā)槍響!小馬科斯大勢已去,菲軍方火速切割,中菲關(guān)系有望改善

      精彩一網(wǎng)打盡
      2026-05-16 07:23:37
      維尼修斯女友宣布和平分手:自己永遠(yuǎn)會“允許自己去經(jīng)歷”

      維尼修斯女友宣布和平分手:自己永遠(yuǎn)會“允許自己去經(jīng)歷”

      懂球帝
      2026-05-15 21:11:14
      重慶何主任細(xì)節(jié)曝光:挪車后沖馬路牙子加速離開,多重身份引人議

      重慶何主任細(xì)節(jié)曝光:挪車后沖馬路牙子加速離開,多重身份引人議

      我超有瓜
      2026-05-16 01:16:06
      曼聯(lián)官方:19歲中場泰勒-弗萊徹當(dāng)選預(yù)備隊年度最佳球員

      曼聯(lián)官方:19歲中場泰勒-弗萊徹當(dāng)選預(yù)備隊年度最佳球員

      懂球帝
      2026-05-16 07:18:40
      特朗普稱美伊?;鹣怠皯?yīng)其他國家要求”

      特朗普稱美伊?;鹣怠皯?yīng)其他國家要求”

      新京報
      2026-05-15 21:44:04
      牛!中國制造,已經(jīng)強(qiáng)到如此可怕了!百元造千元級溯溪鞋!

      牛!中國制造,已經(jīng)強(qiáng)到如此可怕了!百元造千元級溯溪鞋!

      英國報姐
      2026-05-13 13:13:54
      生活是快樂的:不是等來的,是自己創(chuàng)造的

      生活是快樂的:不是等來的,是自己創(chuàng)造的

      疾跑的小蝸牛
      2026-05-15 19:59:37
      別再吹牛自己心理素質(zhì)硬!進(jìn)了審訊室,大部分人撐不過3輪就崩盤

      別再吹牛自己心理素質(zhì)硬!進(jìn)了審訊室,大部分人撐不過3輪就崩盤

      小虎新車推薦員
      2026-05-14 00:09:17
      馬斯克曾突然變臉,扯下美國遮羞布:沒中國,誰敢想造出電動車?

      馬斯克曾突然變臉,扯下美國遮羞布:沒中國,誰敢想造出電動車?

      縱擁千千晚星
      2026-04-04 19:34:36
      1億果粉的選擇 5月15日起京東入手iPhone 17 Pro 只要6999元

      1億果粉的選擇 5月15日起京東入手iPhone 17 Pro 只要6999元

      PConline太平洋科技
      2026-05-15 10:34:27
      拜仁敲定英格蘭神鋒五年長約 戈登+凱恩歐冠狂造28球劍指大耳朵杯

      拜仁敲定英格蘭神鋒五年長約 戈登+凱恩歐冠狂造28球劍指大耳朵杯

      小金視角看球賽
      2026-05-16 07:00:34
      繼特朗普之后,普京訪華在即——俄方稱日期很快官宣

      繼特朗普之后,普京訪華在即——俄方稱日期很快官宣

      舟望停云
      2026-05-16 07:22:39
      約翰-阿洛伊西:韋世豪展現(xiàn)了出色的賽場擔(dān)當(dāng)和團(tuán)隊領(lǐng)導(dǎo)力

      約翰-阿洛伊西:韋世豪展現(xiàn)了出色的賽場擔(dān)當(dāng)和團(tuán)隊領(lǐng)導(dǎo)力

      懂球帝
      2026-05-16 00:13:47
      英國乒乓球官方銳評孫穎莎,四字稱呼,再次印證劉國梁當(dāng)年的評價

      英國乒乓球官方銳評孫穎莎,四字稱呼,再次印證劉國梁當(dāng)年的評價

      林子說事
      2026-05-16 06:16:13
      天吶!看到孫儷早年舊合照,我終于懂鄧超為啥一眼就淪陷

      天吶!看到孫儷早年舊合照,我終于懂鄧超為啥一眼就淪陷

      東方不敗然多多
      2026-05-15 17:52:33
      相親要1000萬彩禮的“泡面姐姐”露真容,網(wǎng)友很失望勸她戴上面罩

      相親要1000萬彩禮的“泡面姐姐”露真容,網(wǎng)友很失望勸她戴上面罩

      漢史趣聞
      2026-05-13 10:21:50
      老燕子被女兒家教偷家了

      老燕子被女兒家教偷家了

      毒舌扒姨太
      2026-05-14 22:48:14
      美股半導(dǎo)體、存儲股,全線大跌

      美股半導(dǎo)體、存儲股,全線大跌

      第一財經(jīng)資訊
      2026-05-15 21:52:36
      2026-05-16 08:39:00
      新能源自動駕駛 incentive-icons
      新能源自動駕駛
      專注于半導(dǎo)體行業(yè)資訊
      977文章數(shù) 347關(guān)注度
      往期回顧 全部

      汽車要聞

      高爾夫GTI刷新紐北紀(jì)錄 ID. Polo GTI迎全球首秀

      頭條要聞

      魯比奧訪華期間回應(yīng)媒體提問:中美兩國關(guān)系至關(guān)重要

      頭條要聞

      魯比奧訪華期間回應(yīng)媒體提問:中美兩國關(guān)系至關(guān)重要

      體育要聞

      德約科維奇買的球隊,從第6級聯(lián)賽升入法甲

      娛樂要聞

      方媛為何要來《桃花塢6》沒苦硬吃?

      財經(jīng)要聞

      造詞狂魔賈躍亭

      科技要聞

      直降千元起步!蘋果華為率先開啟618讓利

      態(tài)度原創(chuàng)

      親子
      家居
      本地
      時尚
      公開課

      親子要聞

      兒童補(bǔ)腦DHA品牌怎么挑?神經(jīng)酸+磷脂酰絲氨酸PS品牌嚴(yán)選,穩(wěn)固提升理解能力

      家居要聞

      110㎡淡而有致的生活表達(dá)

      本地新聞

      用蘇繡的方式,打開江西婺源

      頂級團(tuán)隊拍出來的作品不如素人,問題出在哪兒了?

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 久久久久久久久影院| 亚洲乳大丰满中文字幕| 久久天天躁夜夜躁一区| 国产亚洲一区二区三区四区| 成人AV毛片| 伊人久久大香线蕉亚洲五月天| 人妻中文字幕亚洲一区| metart亚洲裸体中国| 最新日韩精品视频在线| 亚洲高清无码加勒比| 久久精品国产亚洲av高| 欧美粗大猛烈老熟妇| 2022国产男人亚洲欧美天堂| 中文字幕v亚洲日本在线电影| 成人综合网亚洲伊人| 日韩色导航| 国产一级做a爰片久久毛片| 丰满少妇被猛烈进出69影院| 99香蕉国产精品偷在线观看| 3p露脸在线播放| 久久精品人妻无码白浆| 男人的天堂免费一区二区视频| 最新69国产成人精品视频免费| 少妇人妻88久久中文字幕| 亚洲国产日韩在线人高清不卡| 国产精品推荐手机在线| 精品无码成人片一区二区| 日韩av自拍偷拍| 欧美性大战久久久久久久| 日韩视频中文字幕精品偷拍| 亚洲人成无码网站18禁| 国产美熟女乱又伦AV果冻传媒| 久久精品aⅴ无码中文字幕| 国产按头口爆吞精在线视频| 91啪国产最新精品| 中文字幕无码一区二区三区四区| 粉嫩蜜臀av一区二区绯色| AV色色色| 精品人妻中文字幕在线| 色婷婷综合久久久久中文字幕| 在线亚洲一区二区|