99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

cantools 完整文檔導(dǎo)讀:CAN 總線數(shù)據(jù)庫解析、消息編解碼、CLI 工具與代碼規(guī)范實戰(zhàn)指南

cantools 完整文檔導(dǎo)讀:CAN 總線數(shù)據(jù)庫解析、消息編解碼、CLI 工具與代碼規(guī)范實戰(zhàn)指南 嵌入式開發(fā)工具【免費下載鏈接】cantoolsCAN bus tools.項目地址https://gitcode.com/gh_mirrors/ca/cantools點擊查看免費下載本文以 cantools 官方文檔docs/index.rst內(nèi)嵌完整README.rst為骨架結(jié)合倉庫源碼展開系統(tǒng)講解這個 Python 3 CAN 總線工具集從數(shù)據(jù)庫解析DBC/KCD/SYM/ARXML/CDD、消息編碼解碼、診斷 DID、CLI 命令行工具decode/plot/dump/list/generate_c_source/monitor/convert到 C 源碼生成與 Ubuntu 虛擬 CAN 接口vcan實戰(zhàn)的完整技術(shù)棧。閱讀本文后你將能夠直接用 cantools 加載車載網(wǎng)絡(luò)數(shù)據(jù)庫、在腳本或candump管道中實時解碼 CAN 報文、可視化信號曲線、生成可落地的 C 代碼并理解其 API 設(shè)計與編碼規(guī)范。項目概覽cantools 能做什么cantools 是使用 Python 3 編寫的 CAN 總線工具集CAN BUS tools in Python 3.官方文檔將其核心能力總結(jié)為多格式數(shù)據(jù)庫解析支持DBC、KCD、SYM、ARXML 34 與 CDD 文件的讀取與寫入。CAN 消息編碼與解碼根據(jù)信號定義位序、縮放因子、偏移量、符號性將物理量編碼為字節(jié)串、或?qū)⒃甲止?jié)解碼為物理量。簡單與擴展的信號多路復(fù)用signal multiplexing支持一個多路復(fù)用信號按取值切換不同的信號子集。診斷 DID 編碼與解碼面向 UDS 等診斷服務(wù)的數(shù)據(jù)DID/Data編解碼。candump輸出解碼直接消費 Linuxcandump程序抓取的日志流。節(jié)點 Tester 工具cantools.tester.Tester提供基于 CAN 數(shù)據(jù)庫的測試輔助。C 源代碼生成器從數(shù)據(jù)庫生成 C 語言的struct、pack/unpack與信號encode/decode函數(shù)。CAN 總線監(jiān)控器文本界面實時監(jiān)控總線流量。信號圖形化繪圖基于 matplotlib 可視化信號隨時間的變化曲線。上述能力的模塊組織可從源碼結(jié)構(gòu)印證src/cantools/database/下是 CAN 與診斷數(shù)據(jù)庫的加載/序列化邏輯can/formats/含dbc/、kcd.py、sym.py、arxml/diagnostics/formats/cdd.py負責(zé) CDDsrc/cantools/subparsers/下是各 CLI 子命令decode.py、plot.py、monitor.py、generate_c_source.py、convert.py、list.py、dump/src/cantools/c_source.py與tester.py分別對應(yīng) C 代碼生成與節(jié)點測試。安裝項目使用標(biāo)準(zhǔn)pip方式安裝python3 -m pip install cantools注意默認(rèn)安裝不包含 matplotlib因此plot繪圖子命令需要額外安裝可選依賴python3 -m pip install cantools[plot]同理數(shù)據(jù)庫加載緩存見下文cache_dir參數(shù)依賴可選的diskcache包可通過pip install cantools[cache]啟用。腳本化使用加載數(shù)據(jù)庫、編碼與解碼官方文檔以tests/files/dbc/motohawk.dbc這個小型 DBC 文件為貫穿示例。第一步是解析數(shù)據(jù)庫并打印消息與信號 import cantools from pprint import pprint db cantools.database.load_file(tests/files/dbc/motohawk.dbc) db.messages [message(ExampleMessage, 0x1f0, False, 8, Example message used as template in MotoHawk models.)] example_message db.get_message_by_name(ExampleMessage) pprint(example_message.signals) [signal(Enable, 7, 1, big_endian, False, 1.0, 0, 0.0, 0.0, -, False, None, {0: Disabled, 1: Enabled}, None), signal(AverageRadius, 6, 6, big_endian, False, 0.1, 0, 0.0, 5.0, m, False, None, None, ), signal(Temperature, 0, 12, big_endian, True, 0.01, 250, 229.53, 270.47, degK, False, None, None, None)]從輸出可見Message與Signal的 repr 字段對應(yīng)其構(gòu)造參數(shù)Enable起始位 7長度 1 位大端縮放 1.0偏移 0枚舉值{0: Disabled, 1: Enabled}、AverageRadius縮放 0.1單位 m、Temperature有符號縮放 0.01偏移 250范圍 229.53~270.47單位 degK。編碼并發(fā)送到總線配合python-can包可把信號字典編碼為字節(jié)串并發(fā)送到虛擬 CAN 總線 import can can_bus can.interface.Bus(vcan0, bustypesocketcan) data example_message.encode({Temperature: 250.1, AverageRadius: 3.2, Enable: 1}) message can.Message(arbitration_idexample_message.frame_id, is_extended_idexample_message.is_extended_frame, datadata) can_bus.send(message)也可以繞過Message.encode()直接調(diào)用數(shù)據(jù)庫級的encode_message()源碼見 database.py它同時接受 frame_idint或消息名str內(nèi)部走_frame_id_to_message/_name_to_message查表 db.encode_message(158, {Bar: 1, Fum: 5.0}) b\x01\x45\x23\x00\x11 db.encode_message(Foo, {Bar: 1, Fum: 5.0}) b\x01\x45\x23\x00\x11encode()方法message.py的三個可選參數(shù)含義scalingTrue默認(rèn)對信號應(yīng)用縮放物理量 raw × factor offset設(shè)為False則不縮放。paddingFalse默認(rèn)未使用的位編碼為 0設(shè)為True則按unused_bit_pattern默認(rèn)0x00填充為 1。strictTrue嚴(yán)格模式會先調(diào)用assert_signals_encodable()校驗信號值是否在允許范圍內(nèi)、信號是否齊全否則拋出EncodeError。接收并解碼接收一幀并解碼得到信號名到物理值的字典 message can_bus.recv() db.decode_message(message.arbitration_id, message.data) {AverageRadius: 3.2, Enable: Enabled, Temperature: 250.09}注意Enable被解碼為枚舉字符串Enabled而非整數(shù)1——這是decode_choices默認(rèn)開啟的效果。decode_message()database.py關(guān)鍵參數(shù)decode_choicesTrue將縮放后的值映射為choices中的字符串設(shè)為False則返回數(shù)值。scalingTrue默認(rèn)縮放False返回原始 raw 值。allow_truncatedFalse數(shù)據(jù)不足時是否允許截斷解碼。decode_containersFalse容器幀container frame的解碼需顯式開啟否則拋出DecodeError因為容器幀返回的是(Message, SignalsDict)元組列表會破壞普通調(diào)用方的預(yù)期。更多綜合示例見倉庫 examples 目錄如 hello_world.py、dbc_io/main.py、motor_tester。核心 API 參考Functions and classesdocs/index.rst通過 Sphinx 的autofunction/autoclass/autodata指令把以下對象直接納入文檔索引構(gòu)成完整的公開 API 面頂層加載/轉(zhuǎn)儲函數(shù)cantools.database.load_file()打開并解析文件返回can.Database或diagnostics.Database。cantools.database.dump_file()將數(shù)據(jù)庫寫回文件。cantools.database.load_string()解析字符串內(nèi)容。cantools.database.load()解析文件對象file-like object讀取其.read()內(nèi)容。load_file 的格式與編碼推斷l(xiāng)oad_file()database/init.py在database_format與encoding均為None時按擴展名自動推斷格式、按格式推斷默認(rèn)編碼擴展名大小寫不敏感擴展名數(shù)據(jù)庫格式默認(rèn)編碼.arxmlarxmlutf-8.dbcdbccp1252.kcdkcdutf-8.symsymcp1252.cddcddutf-8其他/未知Noneutf-8dbc與sym默認(rèn)使用cp1252編碼是因為這兩種格式在歷史工具鏈中常含 Latin-1 字符源碼_resolve_database_format_and_encoding()中明確映射了這一點。其他重要參數(shù)frame_id_mask對消息 frame id 做掩碼后建索引用于復(fù)用同一 id 空間的場景。prune_choices默認(rèn)開啟把枚舉取值名中共有的、以_結(jié)尾的前綴去掉以縮短名稱需要原名時傳False。strictTrue信號重疊或超出消息長度時拋異常。sort_signals默認(rèn)sort_signals_by_start_bit按起始位排序傳None不排序也可傳自定義函數(shù)如lambda signals: list(sorted(signals, keylambda sig: sig.name))。cache_dir啟用磁盤緩存依賴diskcache緩存鍵包含文件路徑 修改時間 全部影響結(jié)果的參數(shù)可通過環(huán)境變量CANTOOLS_CACHE_DIR開啟刪除cache_dir目錄即可清緩存。未安裝diskcache時會發(fā)出警告并自動禁用緩存。解析失敗會拋出UnsupportedDatabaseFormatErrorload_string()在database_formatNone時按arxml → dbc → kcd → sym → cdd順序逐一嘗試解析源碼見 database/init.py。dump_file 的寫回規(guī)則dump_file()database/init.py只支持寫出dbc、kcd、sym三種格式其余拋Unsupported output database format。規(guī)則dbc文件總是使用 Windows 風(fēng)格行尾\r\n其他格式跟隨操作系統(tǒng)這與源碼中newline\r\n的顯式聲明一致。DBC 默認(rèn)按信號起始位降序排序輸出KCD 默認(rèn)不排序可通過sort_signalsNone關(guān)閉排序。若要讓 foo.dbc 與 bar.dbc 差異最小加載時傳sort_signalsNone, prune_choicesFalse。load_file(..., sort_signalsNone)后再dump_file()會繼承“不排序”的設(shè)定as_dbc_string()中若加載時未排序則默認(rèn)也傳None。CAN 數(shù)據(jù)庫對象Database / Message / Signal / Node / Bus / SignalGroupcantools.database.can.Database整個 CAN 網(wǎng)絡(luò)的容器。公開屬性/方法包括messages、nodes、buses、version、dbcDBC 特有屬性對象、autosarAUTOSAR 特有屬性對象、get_message_by_name()、get_message_by_frame_id()frame id 大于0x7FF自動按擴展幀處理、get_node_by_name()、get_bus_by_name()、encode_message()、decode_message()、add_dbc_string()/add_dbc_file()/add_arxml_string()/add_arxml_file()/add_kcd_string()/add_kcd_file()/add_sym_string()/add_sym_file()、as_dbc_string()/as_kcd_string()/as_sym_string()、is_similar()容差比較忽略舍入等微小差異、refresh()修改消息后重建查找表。構(gòu)造參數(shù)中的strict與sort_signals語義與load_*一致frame_id_mask默認(rèn)0xffffffff。cantools.database.can.Message單條 CAN 消息。屬性包括frame_id、name、length、signals、is_extended_frame、is_fd、senders、receivers、comment/comments、send_type、cycle_time、dbc、autosar、signal_groups、signal_tree、is_container、contained_messages、header_id、unused_bit_pattern等。方法包括encode()、decode()、decode_simple()、decode_container()、unpack_container()、get_signal_by_name()、is_multiplexed()、refresh()。構(gòu)造時對 frame id 有位數(shù)校驗標(biāo)準(zhǔn)幀超過 11 位、擴展幀超過 29 位都會拋Error見 message.py。cantools.database.can.Signal單個信號。屬性包括name、start、length、byte_orderlittle_endian/big_endian、is_signed、raw_initial、raw_invalid、conversion、minimum、maximum、unit、comment/comments、receivers、is_multiplexer、multiplexer_ids、multiplexer_signal、spn、choices等方法包括raw_to_scaled()、scaled_to_raw()、choice_to_number()、is_float()。cantools.database.can.Node網(wǎng)絡(luò)節(jié)點屬性name、comment/comments、dbc、autosar。cantools.database.can.Bus總線屬性name、comment/comments、baudrate、fd_baudrate、autosar。cantools.database.can.signal_group.SignalGroup信號組屬性name、repetitions、signal_names。DBC 特有對象DbcAttributeDefinitionDBC 屬性定義屬性name、default_value、kind、type_name、minimum、maximum、choices。DbcAttributeValueTypeVar屬性值類型聯(lián)合autodata指令導(dǎo)出。DbcAttribute一次具體屬性賦值屬性name、value、definition方法formatted_value()。DbcEnvironmentVariableDBC 環(huán)境變量屬性name、env_type、minimum、maximum、unit、initial_value、env_id、access_type、access_nodes、data_size、comment、dbc。DbcSpecifics掛在 Database/Message/Node/Signal 上的 DBC 專屬信息屬性attributes、attribute_definitions、value_tables、environment_variables、relation_attributes、relation_attribute_definitions。這些類型定義位于 formats/dbc 下如dbc_attribute_definition.py、dbc_attribute.py、dbc_environment_variable.py、dbc_specifics.py。AUTOSAR 特有對象AutosarDatabaseSpecifics數(shù)據(jù)庫級 AUTOSAR 信息如arxml_version。AutosarMessageSpecifics消息級信息屬性pdu_paths、is_nm、is_general_purpose、is_secured、secocSecOC 安全屬性、e2eE2E 端到端保護屬性。AutosarNodeSpecifics節(jié)點級 AUTOSAR 信息。AutosarSecOCPropertiesSecOC 屬性含auth_algorithm_name、freshness_algorithm_name、payload_length、data_id、auth_tx_bit_length、freshness_bit_length、freshness_tx_bit_length。AutosarEnd2EndPropertiesE2E 屬性含category、data_ids、payload_length。AutosarBusSpecifics總線級 AUTOSAR 信息。這些類型位于 formats/arxmldatabase_specifics.py、message_specifics.py、node_specifics.py、secoc_properties.py、end_to_end_properties.py、bus_specifics.py由SystemLoadersystem_loader.py與EcuExtractLoaderecu_extract_loader.py兩類加載器解析 AUTOSAR System Extract 與 ECU Extract 文件ecu-extract-4.2.arxml、system-4.2.arxml 等測試樣例。數(shù)值表示與轉(zhuǎn)換cantools.database.namedsignalvalue.NamedSignalValue信號命名值如帶名稱的枚舉物理量其__repr__/__eq__使{Enable: Enabled}這樣的字典可直接比較與打印。cantools.database.conversion.BaseConversion縮放轉(zhuǎn)換基類Signal.scale/offset即其實現(xiàn)。診斷數(shù)據(jù)庫UDS DIDcantools.database.diagnostics.Database診斷數(shù)據(jù)庫。cantools.database.diagnostics.Did診斷標(biāo)識符DID。cantools.database.diagnostics.DataDID 承載的數(shù)據(jù)對象。CDD 格式由 diagnostics/formats/cdd.py 實現(xiàn)測試樣例見 tests/files/cdd如 example.cdd、example-diddatarefs.cdd示例腳本見 examples/diagnostics/did.py。異常與測試輔助cantools.database.UnsupportedDatabaseFormatError無法識別數(shù)據(jù)庫格式時拋出errors.py 中與DecodeError、EncodeError并列定義。cantools.tester.Tester基于 CAN 數(shù)據(jù)庫的節(jié)點測試類。cantools.tester.DecodedMessage解碼后的消息容器含name消息名與signals消息信號兩個數(shù)據(jù)字段。cantools.typechecking.Codec內(nèi)部編解碼器類型別名Message._codecs即該類型用于描述一條消息全部信號的解碼格式與多路復(fù)用結(jié)構(gòu)。命令行工具CLICLI 入口為python3 -m cantoolsmain.py 調(diào)用init.py 中的_main()。頂層參數(shù)有-d/--debug開啟 DEBUG 日志與--version。所有子命令定義在src/cantools/subparsers/目錄每個模塊提供add_subparser()向 argparse 注冊因此新子命令是自動發(fā)現(xiàn)、按文件加載的加載失敗不影響其他命令。可用子命令包括decode、plot、dump、list、generate_c_source、monitor、convert等。decode解碼 candump 輸出從標(biāo)準(zhǔn)輸入讀取 Linuxcandump抓取的幀按數(shù)據(jù)庫解碼為可讀文本$ candump vcan0 | python3 -m cantools decode tests/files/dbc/motohawk.dbc vcan0 1F0 [8] 80 4A 0F 00 00 00 00 00 :: ExampleMessage( Enable: Enabled -, AverageRadius: 0.0 m, Temperature: 255.92 degK )使用--single-line把每條消息壓縮到一行便于腳本或日志聚合$ candump vcan0 | python3 -m cantools decode --single-line tests/files/dbc/motohawk.dbc vcan0 1F0 [8] 80 4A 0F 00 00 00 00 00 :: ExampleMessage(Enable: Enabled -, AverageRadius: 0.0 m, Temperature: 255.92 degK)plot信號可視化plot與decode類似但輸出 matplotlib 圖形而非文本。先抓取日志再繪圖$ candump -l vcan0 $ cat candump-2021-01-04_180521.log (1609779922.655421) vcan0 00000343#B204B9049C049C04 (1609779922.655735) vcan0 0000024A#120527052E051905 ... $ cat candump-2021-01-04_180521.log | python3 -m cantools plot tests/files/dbc/abs.dbc信號選擇語法支持通配符與布局控制*匹配任意數(shù)量任意字符?匹配恰好一個任意字符用-分隔的信號顯示在不同子圖信號后可用冒號指定可選格式如:-、:、:3、:4等線型/樣式標(biāo)記。例如左側(cè)輪速與右側(cè)輪速分兩個子圖顯示$ cat candump-2021-01-04_180521.log | python3 -m cantools plot tests/files/dbc/abs.dbc *33.*fl:- *33.*fr:- - *33.*rl:- *33.*rr:-取值范圍差異大的信號可以在同一子圖內(nèi)使用不同縱軸用逗號分隔信號組配合--auto-color自動著色并用--ylabel分別標(biāo)注$ cat candump-2021-01-04_180521.log | cantools plot --auto-color tests/files/dbc/abs.dbc -- \ --ylabel Bremse 33 *_33.*fl*:- *_33.*fr*: *_33.*rl*:3 *_33.*rr*:4 , \ --ylabel Bremse 2 *_2.*fl*:- *_2.*fr*: *_2.*rl*:3 *_2.*rr*:4matplotlib 預(yù)裝多種繪圖風(fēng)格可直接套用$ cat candump-2021-01-04_180521.log | cantools plot tests/files/dbc/abs.dbc --style seaborn遍歷所有可用風(fēng)格逐個預(yù)覽$ cantools plot --list-styles . | sed -n /^- /s/^- //p | while IFS read -r style; do cat candump-2021-01-04_180521.log | cantools plot tests/files/dbc/abs.dbc --style $style --title --style $style done全部參數(shù)以python3 -m cantools plot --help為準(zhǔn)。相關(guān)單測見 test_plot.py 與 test_plot_unittests.py。dump人類可讀轉(zhuǎn)儲以美觀的排版打印數(shù)據(jù)庫全部內(nèi)容包括位布局圖、信號樹與枚舉值$ python3 -m cantools dump tests/files/dbc/motohawk.dbc Messages ------------------------------------------------------------------------ Name: ExampleMessage Id: 0x1f0 Length: 8 bytes Cycle time: - ms Senders: PCM1 Layout: Bit 7 6 5 4 3 2 1 0 ------------------------ 0 |-x|---------------------x|--| ------------------------ | -- AverageRadius -- Enable ------------------------ 1 |-------------------------------| ------------------------ 2 |----------x| | | | | | B ------------------------ y -- Temperature t ------------------------ e 3 | | | | | | | | | ------------------------ 4 | | | | | | | | | ------------------------ 5 | | | | | | | | | ------------------------ 6 | | | | | | | | | ------------------------ 7 | | | | | | | | | ------------------------ Signal tree: -- {root} -- Enable -- AverageRadius -- Temperature Signal choices: Enable 0 Disabled 1 Enabled該子命令實現(xiàn)于 subparsers/dump格式化邏輯在 formatting.py。list腳本友好輸出與dump類似但輸出“沒那么漂亮、更全面、更適合 shell 腳本解析”$ python3 -m cantools list -a tests/files/dbc/motohawk.dbc ExampleMessage: Comment[None]: Example message used as template in MotoHawk models. Frame ID: 0x1f0 (496) Size: 8 bytes Is extended frame: False Signals: Enable: Type: Integer Start bit: 7 Length: 1 bits Unit: - Is signed: False Named values: 0: Disabled-a/--all等選項說明可用python3 -m cantools list --help查詢實現(xiàn)見 subparsers/list.py。generate_c_source生成 C 代碼從數(shù)據(jù)庫生成 C 源碼生成物包含消息structmotohawk.h 中對應(yīng)#define MOTORA ...與結(jié)構(gòu)體定義區(qū)域消息pack/unpack函數(shù)信號encode/decode函數(shù)frame id、長度、類型、周期時間與信號枚舉的#define宏如MOTORA_EXAMPLE_MESSAGE_FRAME_ID、MOTORA_EXAMPLE_MESSAGE_LENGTH等。已知限制信號最大 64 位實踐中幾乎不會超過。$ python3 -m cantools generate_c_source tests/files/dbc/motohawk.dbc Successfully generated motohawk.h and motohawk.c.生成的完整內(nèi)容可對照 motohawk.h 與 motohawk.c 查看。--use-float浮點信號使用單精度float而非double$ python3 -m cantools generate_c_source --use-float tests/files/dbc/motohawk.dbc Successfully generated motohawk.h and motohawk.c.--database-name自定義生成類型、宏與函數(shù)的命名空間前綴同時改變輸出文件名$ python3 -m cantools generate_c_source --database-name my_database_name tests/files/dbc/motohawk.dbc Successfully generated my_database_name.h and my_database_name.c.見 my_database_name.h 與 my_database_name.c。--no-floating-point-numbers生成不含float/double的定點代碼$ python3 -m cantools generate_c_source --no-floating-point-numbers tests/files/dbc/motohawk.dbc Successfully generated motohawk.h and motohawk.c.見 motohawk_no_floating_point_numbers.h 與 motohawk_no_floating_point_numbers.c。--node只生成指定節(jié)點發(fā)送消息的pack函數(shù)、以及信號接收者屬于該節(jié)點的unpack函數(shù)$ cantools generate_c_source tests/files/dbc/motohawk.dbc --node PCM1 Successfully generated motohawk.h and motohawk.c.見 motohawk_sender_node.h 與 motohawk_sender_node.c。C 生成器核心實現(xiàn)位于 src/cantools/database/can/c_source.py對應(yīng)測試樣例覆蓋了位域*_bit_fields.*、浮點floating_point.*、多路復(fù)用multiplex.*、輪詢舍入motohawk_use_round.*等多種形態(tài)見 tests/files/c_source。monitor文本界面總線監(jiān)控以 TUI文本用戶界面實時監(jiān)控總線流量$ python3 -m cantools monitor tests/files/dbc/motohawk.dbc底部菜單提供以下操作Quit退出監(jiān)控器也可用Ctrl-C。Filter只顯示匹配給定正則表達式的消息或信號輸入行按Enter返回菜單。Play/Pause在播放與暫停運行與凍結(jié)之間切換。Reset將監(jiān)控器重置到初始狀態(tài)。實現(xiàn)見 subparsers/monitor.py相關(guān)單測見 test_monitor.py。convert數(shù)據(jù)庫格式互轉(zhuǎn)convert子命令把數(shù)據(jù)庫從一種格式轉(zhuǎn)換為另一種實現(xiàn)見 subparsers/convert.py對應(yīng)測試見 test_convert.py 與 test_conversion.py。DBC 互轉(zhuǎn)的正確性由tests/files/dbc/下的“原文件 *_dumped文件”配對驗證如 multiplex_2.dbc 與 multiplex_2_dumped.dbc。Coding style編碼規(guī)范文檔以“基于作者個人偏好”的方式定義了本包源碼的編碼風(fēng)格對貢獻者而言是必須遵守的規(guī)則語句if、while、return等前后要有空行除非位于其他語句或文件的開頭/結(jié)尾。文件級定義之間留兩個空行。運算符前后留空格關(guān)鍵字參數(shù)keyword arguments兩側(cè)不允許空格。每行只導(dǎo)入一個模塊/對象。注釋與 docstring 以大寫字母開頭、以句號結(jié)尾像句子一樣。docstring 之后留一個空行。單行最大 90 字符目標(biāo)是不超過 80 字符。函數(shù)參數(shù)要么全部寫在一行要么每行一個。類名用CamelCase不允許下劃線。函數(shù)名與變量名用小寫 下劃線分隔snake_case。規(guī)范的示例代碼數(shù)字標(biāo)注對應(yīng)上述規(guī)則import sys from os import path # (5) from os import getcwd # (5) # (2) # (2) def foo(bars, fumNone): # (4) This is a doc string. # (6) # (7) fies [] # (3) kam path.join(getcwd(), ..) # (1) for bar in bars: if len(bar) 1): # (8) fies.append(ham 2 * bar) # (3) # (1) # This is a comment. # (6) if fum in None: fum 5 # (3) else: fum 1 # (3) # (1) fies * fum # (3) # (1) return fies # (2) # (2) def goo(): return True示例中if len(bar) 1):與if fum in None是文檔原樣保留的演示代碼并非真實語法。Tips and tricksUbuntu 虛擬 CAN 接口在無硬件的情況下調(diào)試 CAN 應(yīng)用可在 Ubuntu 上創(chuàng)建虛擬 CAN 接口。官方文檔給出的完整三步設(shè)置sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set vcan0 mtu 72 # For CAN-FD sudo ip link set up vcan0第一條加載vcan內(nèi)核模塊第二條創(chuàng)建名為vcan0的虛擬 CAN 設(shè)備第三條可選把 MTU 設(shè)為 72以支持 CAN-FD經(jīng)典 CAN 的 MTU 為 16CAN-FD 需要 72第四條把接口置為up狀態(tài)。設(shè)置完成后即可配合python-can的socketcan后端can.interface.Bus(vcan0, bustypesocketcan)以及candump/can send等工具進行收發(fā)測試。倉庫中decode、plot、monitor各子命令的文檔示例均基于此環(huán)境。貢獻指南Contributing文檔同時給出了向本倉庫提交貢獻的標(biāo)準(zhǔn)流程Fork 倉庫。安裝開發(fā)依賴使用tox可跳過此步python3 -m pip install -e .[dev]。實現(xiàn)新功能或修復(fù) bug。編寫測試用例防止未來改動破壞既有行為。運行 linterruff check src、mypy src或tox -e ruff、tox -e mypy。運行測試tox -e py。檢查測試覆蓋率tox -e cov然后用firefox htmlcov/index.html查看報告。創(chuàng)建 Pull Request。配置集中在 pyproject.toml 與 tox.ini完整的測試套件位于 tests 目錄test_database.py、test_command_line.py、test_autosar.py 等C 生成代碼的交叉驗證由 tests/test_c_code 下的 C 測試工程完成??偨Y(jié)作為docs/index.rst的完整導(dǎo)讀本文覆蓋了 cantools 文檔的全部四大板塊README 中的功能矩陣、安裝與腳本/CLI 全流程示例Sphinx 自動生成的 Functions and classes API 索引含 CAN 數(shù)據(jù)庫、DBC/AUTOSAR 特有對象、診斷數(shù)據(jù)庫與 Tester作者定義的 Coding style 規(guī)范以及 Ubuntu vcan 虛擬接口搭建技巧。配合倉庫中 examples、tests/files 與 src/cantools 源碼讀者可以完整掌握這一 CAN 工具鏈的實戰(zhàn)用法與內(nèi)部機制。贊分享嵌入式開發(fā)工具【免費下載鏈接】cantoolsCAN bus tools.項目地址https://gitcode.com/gh_mirrors/ca/cantools點擊查看免費下載相關(guān)推薦CAN總線數(shù)據(jù)處理實戰(zhàn)從環(huán)境搭建到消息編解碼全指南CAN總線數(shù)據(jù)處理實戰(zhàn)從環(huán)境搭建到消息編解碼全指南 如何高效解析汽車CAN總線數(shù)據(jù) 在汽車電子和工業(yè)控制領(lǐng)域CAN總線作為一種高可靠性的串行通信協(xié)議被廣嵌入式開發(fā)工具探索CAN總線工具Cantools探索CAN總線工具Cantools 項目介紹 Cantools是一個基于Python 3的CAN總線工具集提供了豐富的功能來處理CAN消息和信號。它支持多種嵌入式開發(fā)工具Cantools工具庫40.1.0版本發(fā)布增強CAN總線數(shù)據(jù)分析能力Cantools工具庫40.1.0版本發(fā)布增強CAN總線數(shù)據(jù)分析能力 Cantools是一個功能強大的Python庫專門用于處理CANController嵌入式開發(fā)工具上一篇gh_mirrors/er/errors深度解析Go語言錯誤處理新范式下一篇如何快速搭建現(xiàn)代化管理后臺Ant Design Vue Pro完整配置指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月天全国最大成人网| 性爱人人网| 九九在线91| 这里只有精品日韩精品| 婷婷综合视频| 五月丁香网视频| 色婷婷久久综合| 97婷婷丁香| 99色| av 一区三区四区| 五月伊人网| 久操人妻| 免费无码毛片一区二区A片 | 欧美激情中文字幕| 中文字幕永久免费| 丁香六月色情| 日本色久| 激情亚洲五月| 五月婷婷色影院| 就要去操亚洲成人精品五月天丁香婷婷| www.色婷婷.com| 清色五月天| 色天使色婷婷| 99热亚洲精品| 五月天综合色| 北京熟妇搡BBBB搡BBBB| 狠狠操狠狠| 国产99久久久| 97ai婷婷| A片试看50分钟做受视频| 五月开心激情网| 亚洲女婷婷五月基地综合久久久| 99色色| 午夜丁香婷婷| 欧美婷婷成人| 天天cha成人综合网| 亚洲热久| 亚洲综合色激情色五月| 久久久久人妻| 色啪综合| 色婷婷成人做爰A片免费看网站| 99热这里只有精品22| AV伊人青草丁香六月| 日本一区二区三区精品视频| 五月综合激情啪啪啪啪啪| 婷婷五月色| 激情综合网五月| 色色精品色| 99亚洲视频| 大香AV| 玖玖色综合| 99热都是精品| 色五月激情网| 五月婷婷九| 丁香婷五月| 无码激情精品色婷婷久久久久| 九九热这里有精品23| 超碰在线国产| www,五月天激情| www.粉嫩av.com| 天天色情站| 婷婷色五月综合丁香| 秋霞A V毛片| 9精品国产在热久久| 免费观看高清无码| 亚洲午夜av| 黄网在线播放| 1010日日无码| 丁香六月啪啪啪| www色色com| 91九色熟女| 日本色爽| 专区无日本视频高清8| 51XX午夜影福利| www.99热视频| 国产精品久久久久久久久久免费| bukadeavzaixian| 99久热视频在线| 狠狠操狠狠| 婷婷五月天天| 久久综合网桃花| 伊人青涩网| 人人九色| 性日本精品| 1995年关宝慧版蜘蛛女| 天天摸色吧天天摸色吧| 日熟女| 人妻啪啪啪| 丁香五月六月综合激情| 热日韩欧美| 亚洲黄网在线| 亚洲激情视频在线观看| 九九99视频| 99精品热视频| 91趴趴| 39视频第二区| 人妻操在线看| 99综合网| 久久久亚洲成人无码A片| 中美月韩免费A片| 天天舔天天| 黄色一级影片| 91久久九色| 婷婷丁香成人在线视频| 思思精品视频| 开心五月婷婷伊人| 色五月婷婷开心| 久热这里| 99热九九在线| 99精品视频免费观看| 97在线/亚洲| 碰97 久| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 26uuu亚洲精品国产| 亚洲九区| 99热最新精品| 99热这里只有精品33| 五月婷婷丁香五月婷婷丁香| 五月激情婷婷四射| 欧美成人网99网| 我爱大香蕉| 91无码色色| 老师高潮流白浆喷水的A片| 大香蕉综合在线| 99热99热不卡| 激情婷婷| 综合激情网五月激情| 思思久久99热只有频精品66| 免费视频在线观看的网站| 一级七香蕉| 色丁香在线视频| 伊人五月天| 色就色94欧美setu| 99小精品| 激情九月综合| 99精品国产在热久久| 99热精品9| 伊人激情影院| 九色婷婷| 五月丁香影院| 五月婷婷深爱六月| 九热视频免费观看| www.色婷婷| 亚洲国产精品SUV| 婷婷色网| WWW.99热| 天天爽天天爽天天爽天天爽天天爽| 日韩狠狠色| 婷婷中文综合网| wwwxxx五月婷婷小说| 99热精品免费| 五月丁香婷婷激情澎湃四射| 中文字幕日产A片在线看| 日本老女人黄页在线播放| 超碰不卡在线| 丁香五月综合色婷婷| 六月激情婷婷| aaa丁香五月天| 久热这里| 人人草人人视| 99日本在线| 91无码高清| 91大屁股精品| 伊人五月天| 六月激情婷婷综合| 天天干天天拍| 这里只有精9| 婷婷五月久久| 91婷婷色| 丁香婷婷五色月| 亚洲色频| 五月天激情网站| 99色热视频| 激情人妻蜜夜系列区| 99热永久在线观看| 开心激情站| 五月婷婷五月天亚洲无码| www,setingting| 99热6这里只有精品| www.99riav99| 婷婷久久综合久| 久久婷婷色综合| 亚洲美女高潮久久久久久69| 色久五月| 操97| 99热在线网站| 五月婷婷影院| 久久久ww| 久久A V无码视频| 色域五月婷婷丁香| 五月婷婷亚洲天堂97色婷婷| 久久色情| 激情綜合W W W,激情五月天| 久久99看免费| www,婷婷,com| 五月丁香啪啪网| 激情五月六月丁香| 丁香六月婷婷综情欧美| 伊人综合婷婷| 日本成人内射| 国产99久久久国产精品免费看| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 五月综合无码| 丁香五月天视频| 四色综合网| 丁香影院五月综合| AV在线大香蕉| 成人免费va| 激情丁香婷婷六月天| 99热日韩| 五月激情网五月综合网| 日本97人人| 天天天干夜夜夜操| 91超碰在线观看| 狠狠干五码| 九九国产视频| 99激情在线| 强壮公让我夜夜高潮A片视频| 天天狠狠夜夜狠狠2023| 亚州AV超碰人人操| 日本久久99| 色吧99| JAPANRCEP老熟妇乱子伦视频| 日本高清综合网五月丁香| 婷婷五月天va| 天天婷婷天天| 亚洲精99| 丁香五月婷婷呀| 99婷婷国产最新视频| 伊人爱爱日本| 欧美天堂婷婷日韩| 天堂呦 呦百度搜索-百度搜索| 99热只有| 99精品视频在线观看| 国产精品日日躁夜夜躁| 丁香色成人| 九九精品在线视频观看| 另类激情五月| av在线免费播放| av免费在线看不卡无毒| 色色五月婷婷狠狠| 亚洲性爱AV| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 丁香色情五月综合激情| 激情五月激情综合俺也去婷婷小说| 91成人看片| 久久天堂色| 99riAV成人在线视频| A久久| 深爱开心激情| 少妇人妻人伦A片| 丁香婷婷五月六月久久| 我淫我色婷婷五月天激情四射| 97热在线精品| 五月开心久久| 九九色情网五月天| 97色一二三| 专区无日本视频高清8| 亚洲 视频 导航 一区| 99热在线观看亚洲区| 婷婷爱综合| 六月婷婷综合网2| 五月激情六月丁香| 久机视频这只有精品| 亚洲中文乱字字幕在线永久| 久久99免费视频| 婷婷九月激情网| 天天日天天添| 天天爽夜夜爽夜夜爽精品| 99久在线精品99re5热视频| 九月丁香八月婷婷加勒比| 色婷婷丁香五月| 激情综合网址| 久久9久| 婷婷中文字幕| 五月丁香六月天| 婷婷五月情天| 可以免费观看的AV| 久9精品视频| 开心激情五月天网| 久久久99免费视频| 激情五月天色网站| 操骚货在线| 综合五月婷婷| 天堂成人A片永久免费网站| 婷婷金品综合视频| 色婷婷成人五月| 婷婷丁香五月天在线| 五月婷婷之六月丁香| 99在线观看视频蜜臀| 六月婷婷无码| 激情五月天啪啪| A一级操| 五月色情婷婷开心五月天| 欧美A级网站| 香蕉久久国产AV一区二区| 天天干天天拍| 人人摸人人操人人爽| 九月丁香婷婷综合| 精品人妻伦九区久久AAA片| 99色综合| 婷婷五月色综合香五月| 成年视频免费观看| 99热伊人| 久久99视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 九色91美女| 色婷婷av在线| 天天色综合色| 舔色婷婷| 99热综合网| 无码少妇高潮喷水A片免费| 97在线观看| 色天使久久综合| 久艹伊| av在线激情| 九九热这里只有精品5| 五月天婷婷色紫薇阁| 男女久久婷婷五月天| 夜丁香综合| 五月人妻婷婷| 丁香五月婷婷视频| 色五月激情五月开心五月| 精品人妻伦九区久久AAA片| 五月婷婷电影院| 久久久久久97| 性爱综合网| 97亚洲视频在线| 日本97在线观看| 国产五月天婷婷| 色婷婷丁香六月| 日日操天天爽| 思思久久精品| 五月丁香婷婷色播无码| 五月综合激情久久| 色五月综合| 中文字幕在线免费观看视频| 高清国产一级婬片a免费| 中文字幕在线播放视频| 97好吊操| 人人播| 九九婷婷激情综合网| 91日视频| 视色综合| 97碰在线视频| 中文字幕97超级碰| 丁香婷婷六月激情综合| 五月天成人小说| 中文字幕人妻一区二区| av 一区三区四区| 另类综合婷婷五月天欧美视频| 91超级碰| 色婷婷久久视屏| 五月情综合| 九九精品热播| 超碰99成人在线| ww亚洲ww在线观看| 99re在线视频| 九月婷婷激情久久| 色综合久久88色综合天天人守婷| 97人人超| 欧美性爱一区| 五月天色社区| 新激情五月天| 色丁香在线视频| 色婷网| 伊人大香久久| 很操日本7| 开心五月婷| 日韩啪啪视频| 久久伊人9| 丁香六月无码| 五月天丁香婷婷久久九| 五月熟妇婷婷久久| 久热免费视频| 九九热av| 五月天大香蕉| 99热免费| AV大片在线观看| 99热20| 六月婷婷激情图片| 日本99在线| 夜夜撸天天操| 99re视频在线精品| 日本 @ va 免费| 欧美丰满熟妇BBB久久久| 婷婷射丁香| 99热这里只有精品中文字幕| 亚洲图色五月天| 能看的av片| 激情五月天小说网| 伊人五月婷婷| 精品无码久久久久久久久| www.丁香五月| 99久久这里只有精品| 天天肏在线观看| 色综合伊人网| 狠狠99| 天天色天天日| 丁香六月激情| 丁香婷婷色五月| 黄色成人网站在线播放| 99热老司机| 丁香五月综合激情啪啪| 97碰| 久久五月丁香婷婷| 性无码专区无码| 婷婷五月成人有| 成人短视频在线观看| 色约约视频一区二区三区四区五区 | 国产黄色在线| 免费观看欧美成人AA片爱我多深 | 偷拍九九五月丁香婷婷| 丁香九九九九| 99国产精品久久久久久久久久久| 丁香六月狠狠| 国产av一区二区三区| 激情亚洲色图片丁香综合| 国产黄大片在线观看画质优化| 色五月激情五月丁香五月婷婷啪啪综合 | 五月婷婷色综图片| 五月婷婷综合网| 爱射综合| 97精品人人A片免费看| 丁香五月婷婷色综合基地| 国产FREESEXVIDEOS性中国| 色色婷五月天| 色五月噜噜| 另类小说激情五月天| 99热热热国产超碰| 中文av网| 色丁香五月综合网| 欧美一线视频| www夜夜操| 天天日夜夜草进麻麻的子宫| 人人97操| 99精品在线播放| 丁香五月婷婷综合视频| 亚洲中文字幕翔田千里| 五月天婷婷免费| 婷婷免费精品视频| 欧美偷偷操| 九九人人精品| 2020夜夜操天天爽| www.无码com| AV九九| 婷婷 激情 五月| 色婷婷人人| 色色色婷| www.五月天。com| ...婷婷五月综合不卡,国产在线手机| 五月婷婷第四色| 五月天丁香婷| 男同91 | 99这里热| 婷婷六月网| 色97啪啪| 九月婷婷综合| 五月丁香综合在线| 思思热99er在线视频| 91女人18毛片水多国产| www.色婷婷| 骚货艹网站视频| 婷色五月天| 国产精品久久久久9999小说 | 5月婷婷6月丁香aV| 久久婷婷人人| 丁香情色五月| 婷婷激情图片| 色爱综合网| 婷婷五月天伦理| 亚洲视频国产一区| 五月婷婷av在线| 亚洲最大在线| 亚洲综合激情五月| 亚洲丁香五月美女| 99热久| 99在线免费视频播放| 久久久免费精彩视频| 超碰熟女拍拍| 成人色情五月天婷婷丁香| 六月婷婷色色色| 亚洲国产精品VA在线看黑人| 成人片在线播放| 五月天成人在线播放丁香| 大香蕉五月丁香| 丁香婷婷六月| 97丨九色丨国产丨PORNY| 五月婷婷激情久久| 五月天网站免费欧美| 婷婷色播综合五月| 婷婷欧美激情综合| 色人久久| 激情六月天婷婷| 97色碰碰公开视频| 射婷婷中文字幕| 日韩无码色色| 无码人妻激情| 91九色国产熟女| 婷婷五月花西瓜| 婷婷五月丁香高清无码| 久久er免费视频| 色私五月婷婷| 天天肏高清在线| 色欲色香综合网站| 激情电影五月婷婷| 久久无码成人| 三十熟女| 一级片操逼视频| 大香蕉综合网| 亚洲另类在线观看| 在线日韩视频| 六月色婷婷| 二色av| 成人视频在线免费播放| 婷婷五月天综合网| 久久久久久人妻| 婷婷五月天六点丁香五月| 99色热视频| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 日韩性视频| 五月婷婷丁香五月婷婷丁香| 天天色天天日| 97碰人人操| 色播五月网| 停停五月丁香| 色色a| 久久538| 伊人五月综合网| 天天色综网| 天天色色天天| 激情婷婷丁香| 大香蕉五月丁香| 日韩在线视频中文字幕| 99re8这里只有精品99re8热视频| 色婷婷五月天偷拍| 激情综合网激情五月天| 青草青草视频2免费观看| 精品夜夜澡人妻无码AV| 天天操天天干天天射| 色婷婷8| 密着浓厚中出乚交尾GvG935| 婷婷久久色五月婷婷久久久| 91大神在线免费看视频全集男男一起操| 免费V片在线| 免费AV在线网址| 密臀av无码人妻精品| 激情五月婷婷视频一区二区三区| 97极品在线| 综合色99| 亚洲一区先锋影音| 久久人妻视步| 婷婷99视频精品| 丰满人妻一区二区三区| 天天日天天久久青青| 中文超碰视在线| 大胆伊人久久| www.激情| 日本操天堂| 1024在线视频| 婷婷午夜激情| se99在线| 色五月激情网| 色九月婷婷| 五月久久丁香| 97碰碰视频在线观看免费| 99久久精彩视频。| 999热成人在线综合网| 99热在线播放| 99热婷婷| 综合一啪| 久久婷婷五月综合97色一本| 开心五月婷婷99| 五月丁香影视| 婷婷97狠狠成人网站| 九九成年视频| 色色精品色| 丁香六月亭亭久久综合| 六月丁香婷婷五月| 无码啪啪| 亚州欧美黄色电影| 久久这里精彩免费在线观看| 五月花亭亭| 成人版视频在线观看| 内射人妻视频国内| 国产精品视频免费看| 五月天婷婷午夜丁香| 丁香五月婷婷色| 超碰99在线观看| 大香焦A∨| 亚州色婷婷| 五月丁香六月婷婷久久久综合| 狠狠色噜噜狠狠狠狠综合| 99热在线观看| 九色视频91| 五月天激情视频网站| 日本三级中国三级99人妇网站| 国产偷人爽久久久久久老妇APP| 另类视屏| 天天做天天爱综合| 激情丁香五月| 中文色婷婷| 五月天激情综合10p| 综合色99| 丁香五月婷婷色偷偷| 五月激情开心婷婷| 六月激情婷婷| 色玖玖玖| 国产无套精品一区二区| 最近中文字幕大全免费版在线| 亚洲成人在线综合| 色婷婷丁香| 五月丁香好婷婷A片网| 啪啪婷婷五月天激情| 天堂久久久久天堂网| 九九热亚洲中文在线观看免费| 色欧洲| 色级停停| 伊人超碰| 噼里啪啦完整版中文在线观看| 激情综合色图| 亚洲国产99| 影音先锋男人AV资源站| 丁香五月深爱五月婷婷| 五月天婷婷色色| 亚洲中文字幕AV| 激情综合五月婷婷丁香| 九热网站| 亚州精品久久久久AV无码| 五月色网| 免费九九热| 99热碰碰热| 色色色色色五月| 99这里只有精品99| 青吴乐视频| 乱抡小BB| 国产性爱在线| 天天艹天天色| 精品二区| 我要看激情五月天| 国产性爱大片久久| 狠狠色婷婷777| 任我干视频在线观看| 丁香婷婷久久激情| 国产偷人爽久久久久久老妇APP | 亚洲成人AV在线播放| 五月花婷婷| 日本97久久久精品| 亚洲综合另类| 91碰碰视频| 婷婷五月大香蕉| 色婷婷9| 日本啪啪网| 婷婷久久99| 久久久99视频| 婷婷色婷婷亚洲成人| 99热最新| 这里只精品| 精品成人无码A片观看香草视频| 色欲五月天| 久久A极片| 天天影视色综合网| 亚洲乱啪| 色狠狠999综合| 超碰91av| 狠狠色丁香| 人人摸人人射| 亚洲色区17| 婷婷成人视频| 99自拍视频在线| 色色婷| 五月天婷婷开心| 欧美精品狠狠色丁香婷婷| 人妻操逼视频| 人妻激情综合| 婷婷五月花| 亚洲人人操BD| 欧美性久| 丁香六月综合激情| 久久99成人性爱高清视频| 五月丁香最新| 亚洲这里只有精品| 99性感视频| 久re热视频| 天天狠天天叉| 日本va视频| 99热一本久道| 婷婷五月丁香六月| 色狠狠综合| 991精品在线视频| 六月婷婷综合| 夜夜爽天操| 五月婷婷天堂| 亚洲九N| 久久人人妻| 丁香五月六月久久综合 | 婷婷亚洲欧美丁香五月| 综合色五月| 人与禽A片啪啪| 色五月av| 色婷婷国色天香综合| 婷婷综合偷拍| 超碰在线99| 久机视频这只有精品| 99亚洲天堂| 免费91久久精品| 大香蕉天堂| 天天舔天天| 超碰不卡在线| 国产真实乱了老女人视频| 99A片| 深爱激情网五月| 丁香综合久久| 少妇人妻丰满做爰XXX| 久色大| 色色丁香五月婷婷| caop在线视频| 婷婷五月天天激情| 开心五月婷婷| 91色婷婷综合久久中文字幕二区| 色噜噜狠狠狠综合曰曰曰| 97干在线视频| 狠狠九九婷婷韩| 人妻丰满精品一区二区A片| 日韩综合久| av在线色五月丁香婷区久| 99热国产| 婷婷激情五月天小说| 天天做天天爱天天爽| 少妇人妻人伦A片| 99精品无码网站| 婷婷五月av| 激情AV中文| 婷婷五月花.97| 欧美色五月| h亚洲| 婷婷开心久久| 99aese| AV色五月婷婷| 日日噜噜夜夜狠狠久久丁香六月| 1024欧美日韩精品久久久| 丰满少妇乱A片无码| 色爱亚洲| 9|无码久久久久久| 婷婷五月成人| 丁香成人视频| 婷婷色五月天综合网| Xx色综合| 色色五月婷| 91精品久久久久久久久久久久| 综合五月激情| 色五月丁香五| 夜夜嗨一区二区三区直播内容 | 九九热99在线视频| 草草色情综合网| 极品人妻VIDEOSSS人妻| 综合激情婷婷| 天天色视频| 色五月婷婷影院| 网色99| 玖玖爱综合网| 色噜噜狠狠色综合网| 五月天综合| 天天婷婷综合亚洲亚洲| 久久久久久人妻久久久久久久久久人妻久久久 | 99热在线中文字幕| 26UUU亚洲欧美| 伊人久久婷婷五月天激情四射| 六月婷婷六月天天在线免费| 五月天激情小说婷婷| 99小视频| 亚洲va日| 成人片久久网站| 婷婷天天舔| 亚州激情在线视频| 最新精品视频99| 激情图片婷婷| 五月色精品| 人人人舔人人人操人人人摸人人人97| 亚洲性爱区无码区| 99热在线成人网站| 五月天综合久久| 大天天伊人| 婷婷中文无码| 激情婷婷五月| 久久久婷婷婷| 五月丁香激情六月| 偷偷操99| 9999三级片| 久久久久9| 婷婷丁香五月天综合AV| 五月天综合缴情网网站0| 激情五月无码| 五月天成人在线播放丁香| 久久婷婷激情视频| 婷婷色五月婷| 色五月网址| 极品人妻VIDEOSSS人妻| 日韩黄色影院| 91久久国产综合久久| 日本色久| 五月天五月色婷婷综合| 99热这里精| 五月六月婷婷| 在线色色| 国产精品涩涩涩视频网站| 老司机视频lsj爱就色| 婷婷五月天大香蕉| 99re在线观看| 79色色免费| 五月婷婷啪啪综合网| 玖玖综合色| 99精品国产在热久久| 超碰2021| 伊人色综合影院视频| 天天日天天插天天操| 色性日本| 婷婷伊人综合中文字幕| 久热这里| 欧美婷婷丁香五月| 日韩色色色99| 婷婷五月花西瓜| 色婷婷丁香| 99久久99综合| 日韩av在线免费观看| 久久五月天激情婷婷| 97婷婷五月| 91久久久久久久久18| 日本4399天堂中出| 成人Av在线大片| 高清激情av在线观看| 夜夜爽天操| 五月激情偷拍| 九九热内射| 99热偷拍| 五月天影院| 天天操天天曰| 丁香五月97视频| 精a品a视a频| 日日操夜夜骑| 99热精品在线观看| 婷婷九月在线| 激情五月综合色婷婷| 日本色色网站| 欧美综合激情| 青青.com| 99re6久热只有精品6在线直播| 97色婷婷| 26UUU欧美激情一区二区| 26UUU在线观看| 日本精品99| av首页在线| 婷婷五月天中文字幕.| 国产欧美va| 久久国产一区二区三区| 97人人操在线| 婷婷激情五月色综合| 97福利视频| 99资源在线视频| 丁香五月激情性色郤| 亚洲精品色| 午夜婷婷久久 | 狠狠五月激情丁香六月| 久久机热思思热| 伊人婷婷五月天| 色三级色三级| 99热都是精品| 665566 无码| 色婷婷在线视频久| 亚洲操操| 九洲一级A片| 国产日韩欧美| 亚洲美女裸体被操在线观看| 六月色婷婷欧美| 日韩成人精品中文字幕| 国内久久久精品99| 人人爽亚洲| 666555。COm毛片| 激情五月天婷婷久久久久久久久久久| 美欧日韩国产成人在战| 亚洲第一影院高清无码网站| 日韩精品色| 欧美顶级少妇做爰HD| 国产精品电影| 日本超碰在线| 99re在线视频| 婷婷五月天狠狠色| 五月婷婷9| 五月天婷婷丁香社区| 五月婷婷啪啪啪啪| 五月天激情婷婷五月天久久| 99热伊人| 色欲婷婷夜夜| 99热在线播放| 天天爽夜夜爽夜夜爽精品| 欧美婷婷日本| 激情五月天综合网| 五月天狠狠色| 六月婷婷啪啪| 国产综合婷婷| 任你擦免费视频| 无码色| 99热天堂| 亚洲99在线| 激情综合网激情五月天| 天堂在线9| 色吧婷婷| 丁香色五月 97干| 色婷婷香蕉| 综合婷婷| 天天爱天天日| 久久AAAA片一区二区| 色综合久久伊伊婷婷五月| 麻豆AV一区二区三区| 色亭亭五月天网扯| 超碰免费人| 狠狠搞亚洲| 热996精品在线观看| 狠狠色噜噜狠狠狠888| 涩涩婷婷五月| 99操无码视频观看| 色婷婷久久综合| 色色亚洲视频| 五月天自拍网| 中文超碰视在线| 亚洲狠狠干| 日韩 中文 欧美| 这里只有精品免费视频| 激情婷婷五六月天| 婷婷丁香无码专区| 五月色亚洲| 亚洲AV综合网| 色五月欧美| 亚洲久久婷婷丁香五月天| 人妻有码乱操| 亚洲人人操| 99小视频在线| 三级片AAA久久久AAA久久久AAA | 大胆伊人久久| 婷婷伊人网| 色宗合,宗合网| 色情网综合| 五月天狠狠色| 狠狠操之狠狠操| 婷婷丁香红五月91C| 中文av网| 激情综合网五月在线播放| 成人片黄网站色大片免费毛片| www.亚洲激情| 91九色中文字幕女在线观看| 成人片在线播放| 99愛国产| 久婷| 日本人妻伦在线中文字幕| 69人人操人人爽| 99在线热视频| 成人视频九九| 五月黄色婷婷| 激情综合色| 五月婷婷婷自由综合| 九九热在线99| 五月天社区| 五月天六月婷婷| aaaaa不卡| 久久探花91swag| 九九热黄色| 天天看夜夜看| 99久在线| 婷婷伊人欧美| 欧美99热| 涩婷婷五月天| 人人爽人人射-美女久久久久久久久久-成人AV| 97人碰人操| 色欲天天综合网| 九九色视频| 97人妻碰碰碰久| 1级欧美日韩| 色色色成人网| 五月婷婷六月丁香色| 成人天天爽| 色五月婷婷1| 国精产品一区一区三区免费视频| 婷婷玖玖五月天| 天天拍久久| 人妻人人操| 艹色18p| www.色五月| 色综合天堂| 欧美成人精品老美女噜噜噜| 国产婷婷色五月| 老师把我爽高潮了免费A片| 极品少妇XXXX精品少妇偷拍| 五月天开心网| 亚洲中文乱字字幕线在永久| 99小视频在线| 五月色亚洲| 欧美性爱丁香五月| 免费黄色片子| 五月久久婷婷丁香| 另类五月激情| 五月激情偷拍婷婷| 婷婷六月丁香激情| 婷婷六月综合| 五月激情久久| 丁香久久在线| 久久99热这里只频精品6学生| 丁香综合婷婷五月天| 综合图区激情| 深爱婷婷色| 97色婷婷| 五月丁香成人| 丁香六月激情毛片| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 大香蕉AV电影在线| 99视频自拍| 色婷婷九月| 色噜噜综合网| WWW·色色色·COM| 1024欧美看片| 四季8848精品成人免费网站| 操碰91| 99热在这里只有精品| A在线观看| 狠狠色五月天| 日日操日日撸| 天天摸色吧天天摸色吧| 青青草婷婷综合五月| 开心婷婷五| 欧美色图天堂网| 91干视频| 99九九在线观看免费| 免费人人操| 色久一| 六月婷婷日| 色婷婷91激情小说| aaaa久久| 亚洲色99综合天堂| 五月丁香色欲| 久久婷婷超碰| 天天肏天天舔AV| 婷婷综合久久综合| 北条麻妃伊人 | 国产99久久久国产精品免费看 | 婷婷五月丁香基| 激情丰满熟妇五月| 九九九午夜影院成人| 亚洲色欲欧美一区二区三区| 激情综合网,婷婷| 天天天天天色| 97婷婷丁香五月| 激情美女五月天激情在线| 色五月天在线| 色五月在线视频观看| 色情五月停停丁香| 99热无码首页| 99精品在线| 99欧州偷拍视频| 激情性爱五月天| 亚洲日日日| 欧美色色色| 内射人妻视频国内| www.婷婷com| 超爽内射| 偷拍91九色| 亚洲天堂热| 久久成人性爱| 艹| 色婷婷综合视频| 久久伊人9| 五月天开心激情综合网| 99爱在线视频| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 伊人影院久久网| 九月av| 久er免费视频| 婷婷色系婷色| Www.激情| 婷婷五月综激情| 人妻内射视频| 亚洲妇女熟BBW| 99碰碰碰| 五月丁香成人| 亚洲欧洲色色| 韩国三级五月天婷婷。| 久久综合五月天| 婷婷五月天开心网| 九九九激情综合| 久久婷婷五月综合一| 久久久久久久97| 婷婷五月天激情偷拍| 久久精品亚洲一级牲爱综合| 欧美性猛交99久久久99| 亚洲六月婷婷| 五月刺激丁香月综合| 久久久久久久久久91| 热无码A∨| 99热6色| 五月天激情综合在线| 天天干天天色天天干| 99啪啪网| 99ER热精品视频| 久草九九| 五月婷婷六月丁香综合视频在线| 色吧五月婷婷| 五月天婷婷色综合| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 精品一二三区久久AAA片| 亚洲国产成人AV在线| 色色五月丁香| 日日做夜夜爱| 婷婷丁香五月综合| 丁香五月婷婷av影院| 99视频九九热| 无码激情精品色婷婷久久久久| 色播播五月天| 婷婷丁香六月天| 婷婷va| 五月天成人伊人| 久久99大全| 久久性爱99国产| 五月天综合激情网| 婷婷激情五月综合丁香社| 无码人妻电影| 99干免费视频| 、激情六月天| 婷婷爱五月天| 精品一二三区久久AAA片| 色婷婷久久综合久色综| 婷婷伊人五月| 久草热在线视频| 大香蕉人人人| 狠狠色狠狠色综合日日91| 五月天久久久| 日日噜噜久久婷婷五月天| 久久ER视频com| 婷婷五月天奸女| 亚洲永远av在线播放| 开心久久五月天| 久久久婷婷五月亚洲97号色| 色婷插| 激情小说婷婷小说| 99九无网码| 啪啪五月婷婷| 色五月天综合| 人人干人人看| 九九精品热播| 伊人五月丁香| 欧美内射AAAAAAXXXXX| 99视频久久| 五月天成人综合| 91干网站| 日韩欧美四五区| 久久丁香五月| 婷婷久久丁香五月| 婷婷婷婷婷开心无码播放| 国外亚洲成AV人片在线观看| 激情五月天婷婷直播| 久热69| 五月丁香婷婷综合网色欲| 开心五月婷婷在线视频免费观看| 九九精品免费| 涩综合网| 色色色色色色色色色色色色色97| 亚洲天堂青草| 欧美天天干天天草| 久久久99精品免费观看| 第2色五月婷| 九九精品热| 婷婷五月天久久| 婷婷综合一二三| 成年视频免费观看| 九九久久网| 色综合9| 婷婷色情五月| 日本在线观看99| 99色一| 亚洲深喉AV| 久久久婷丁香五月| 99ER热精品视频| 99热欧| 1000部毛片A片免费观看| 五月天国产成人| 日日操夜夜撸| 婷五月丁香俺| 99热在线播放| 人人色人人摸人人看| 日韩aaa| 9er热在线精品视频| 热久久99热欧美国产亚洲| 成人AV在线电影| 激情五月丁香五月| 天天操天天日天天爱| 日本一级一级一级一级| 玖玖婷婷五月| 任你擦免费视频| 人妻aV在线| 亚洲天堂大香蕉| 日本三级中国三级99| 成人av中文字幕| 五月丁香香蕉| 丁香六月激| 91丨九色丨国产打屁股| 久久视频这里都是精品| 男女啪啪做爰高潮无遮挡| 天天干夜夜b| yw国产AV| 五月婷婷之综合激情| 久久婷婷丁香五月宗合| 人妻久久婷婷| 欧亚洲在线高清视频| 婷婷五月天av| 婷婷五月丁香激情色情| 欧美情色电影一区二区| 色五开心五月五月深深爱| 免费成人网在线观看| 大香蕉九操| 入口五月婷婷六月香| 激情综合五月| 另类图片婷婷五月天| 影院久久久| 26uuu精品一区二区| 五月婷婷在线短视频| 熟女人妻一区二区三区免费看| 另类综合国产| 99资源人人| 99综合久久| 亚洲久久视频| 欧美日韩婷婷五月天| 狠狠穞A片一區二區三區| 色9999日韩国产| 九九热精品视频在线观看| 五月丁香六月欧美| 97干婷婷| 婷婷五月成人| 丁香五月,激情五月,深爱五月| 97在线日本| 99啪啪| 米奇影视资源777狠狠色婷婷五月天激情网 | 丁香六月天堂| 欧美色图天堂网色| 俺去也婷婷| www.五月天社区| 人人摸人人操人人爽| 中文中文在线| 久久538| 天堂婷婷五月在线| 狠狠色综合图片| 久久人人超| 久久这里只有精品视频26| 色婷婷五月成人网| 五月激情小说| 99视频这里有精品免费观看| 中文字幕人妻在线| 成人无码精品1区2区3区免费看 | 超级黄色片| 丁香六月婷| 99精品热| 五月天免费色| 99热国产婷婷| 婷婷色综合| 色无码| 色婷婷六月激情| 偷拍91九色| 五月婷婷色在线| 九九香蕉网| ji'qi'luan'ren'lun|