免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
欧美熟女99| 操97| 激情久久久| 激情五月伊人婷婷| 色色色色五月天| 国产性av| 狠狠干婷婷| 亚洲色情网站| 色丁香在线视频| 97热久久| 这里只有九九精品| 五月开心婷婷极品激情| 怡春院久操| 亚洲人妻av伦理| www,色色色网站| 丁香五月婷婷亚洲人| 色综合中文综合网| 国内一级片| 色色色99| 久久九九爽| 人人人人人人人草| 五月丁香久久久| 原琪琪色影院| www一起操| 真实的国产乱XXXX在线91| 五月丁香久久综合| 丁香玖玖视频大全| 91精品啪| 69色婷婷| 亚洲色婷婷五月天| 九九综合网色全集| 91丁香| www91色网站| 激情小说五月天| 91九色中文字幕女在线观看| 婷婷亚洲五月| 久久婷婷视频| 九色视频91| 丁香五月综合激情啪啪| 九热...av| 日韩99视频| 日韩aaa| 九九精品视频在线观看| 狠狠狠狠狠狠狠狠| 97色视频网| 香蕉婷婷五月| 蜜桃人妻无码AV天堂三区| 丁香五月偷拍| 五月丁香六月天| 99热精品99| 最近中文字幕在线中文视频| 日韩好吊操| 五月天婷婷色情| 色婷婷精| 国产97色在线| 夜夜涩涩涩| 狠狠操之狠狠操| 丁香五月色色色色| 9久热精品在线视频| 亚洲爆乳无码精品AAA片蜜桃| 五月天婷婷激情在线色图| 第四色激情网| 婷婷五月色| 99视频| 一起草性爱不卡视频| 激情综合网亚洲色图| 狠狠狠五月婷婷六月丁香| 色久五月| 99狠狠| 精品成人在线观看| 国产精品第一国产精品| 欧美日韩日韩成人| 久久婷婷色| 99成人网一区| 五月欧美色色五月| 婷婷久久精品| 99精品在线观看| 极品人妻VIDEOSSS人妻| 大香蕉人人人| 99久久a线观| 国产热精品| 99热99色| 婷婷在线精品| 色偷偷人人| 国产精品美女| 欧美噜一噜| av中文网站| www.jiujiujiu| jiZZdr| 欧美性生交XXXXX无码小说| 无码yw| 五月丁香六月婷婷在线播放| 久久久91| 天天综合五月| 色五月激情综合网| 蜜乳AV成人| 久久久WWW| 五月婷婷香蕉| 婷婷五月天伊人| www99xxxx五月丁| 久久五月综合| 亚洲婷婷久久综合| 综合久久8| 伊人五月天日日夜夜久久久天天| 婷婷五月天亚洲五码| 思思热在线免费视频| 激情婷| 色色色色色色色色五月先| 色香蕉影院| 五月婷婷黄色视频| 97久久超碰| 99ri6在线视频| 久久久18| 婷婷 伊人 久久| 婷婷婷狠狠| www久| 久久丁香五月婷婷| 欧美三级巜人妻互换| 激情VA视频| 天天插天天射| 成人噜噜网| 五月婷婷亚洲| 五月丁香啪| 国产伦亲子伦亲子视频观看| 日本在线播放97| 婷婷九色| 午夜婷婷六月天| 五月丁香婷中文| 成人免费高清在线播放| 亚洲超碰青涩| 99re思思热这里| 五月天亭亭俺也| 久久婷婷的综合色丁香五月| 五月激情婷婷六月| 31色区视频免费看| 色色色色色色色色综合网| 婷婷五月天激情网| 5月丁香婷婷| 九九五月天| 超碰免费成人| 欧美色五月天| 日本99久久| 日韩无码专区| 噜噜噜狠狠色综合| 色婷婷丁香| 婷婷五月色情天| 五月综合激情| 久久99久久99精品免视看婷婷| 五月激情综合网| 99re免费视频| 久久超视频| 丁香五月婷婷少妇| 99精品热视频| 综合激情五月四射婷婷| 校花娇喘呻吟校长陈若雪视频 | 99视频精品在线| 天天舔天天摸| 激情亚洲婷婷| 丁香五月婷婷在线| WWW激情五月天| 中文中文在线| 久久人妻视频| 人妻久久久久| 亚洲影院婷婷色| 五月天婷婷激情综合| 色色色天堂网| 激情五月天 婷婷| 久久最新色色色| 99这里有精品| 激情五月丁香五月| 四月婷婷五月色综合| 丁香六月激情| 婷婷五月亚洲一本在线丁香| 日韩操逼大片| 国精产品一区一区三区免费视频| 天天天摸夜夜夜玩| 激情丁香五月| 久久xx| 五月天婷婷色情| WWW色色色COM| 777色色色| 色综合久久五月| 亚洲妇女熟BBW| 五月婷婷婷婷婷婷艺术| AV成人在线播放| 91人人操人人| 五月婷婷狠狠干| 色婷婷五月影视| 激情婷婷| 色亚洲激情| 91碰在线| 91美女啪啪| 99玖玖在线视频| 综合丁香婷婷五月天| 精品国产一区二区三区四区阿崩 | 九九热九九| 亚洲成AV人片在线观看| 91精品婷婷国产综合久久| 国产激情综合五月久久| 五月丁香成人视频| se99在线| 91丨九色丨东北熟女| 日韩ww| 婷婷色五月婷| 五月激情五月婷婷五月天在线| 爆乳熟妇一区二区三区爆乳照片| 亚洲AV无码成人电影| 五月天色色网站| 激情综合激情五月| 五月婷婷啪| 久久九九热re6这里有精品| 嫩草视频在线观看| 日本久久精品18| 国成人网| 大香蕉综合| 99免费视频在线观看爱| 99热精在线九九久久保| 色欲丁香| 五月久视频| 色小说婷婷五月天天天| 婷婷欧美偷拍综合| 日韩综合网络男女香蕉a片| 色综色网| 国产FREESEXVIDEOS性中国| 五月天社区| 久久亚洲婷婷| 色婷婷五月亚洲| 五月婷婷激情刺激| 五月天综合网| 色欲婷婷五月天| 蜜桃婷婷狠狠久久综合| 免费色婷婷| 97色色网| 99视频| av人人干| 久久9精品| 丁香五月伊人| 97久久精品视频| 9999久久久久| 极品人妻VIDEOSSS人妻| 欧美大片免费播放器| 成人在线网址| 日日夜夜婷婷| 激情丁香五月| 成人做爰高潮A片免费视频| 97久久久久| 丁香六月婷婷综合缴| 欧美va欧美va差| 天天爽综合| 久久五月婷综合网| 五月婷婷丁香色播网| 五月永久激情| 五月婷婷综合潮喷| 亚洲免费婷婷| AAA久久| 97色片| 久久久99视频| 五月天色区| 97色婷婷| 怡红院AV亚洲一区二区三区H| 99性爱视频| 九九色色| 69天堂99| 亚洲综合无码| 色激情综合狠狠婷婷| xx色综合| 丁香五月天中文字幕| 婷婷午夜天| 五月天激情久久| 五月婷婷香| 亚洲午夜一区二区| 五月婷婷色| 天天做天天爱天天爽夜夜揉| 丁香六月视频| 五月婷婷伦理| 激情网婷婷婷| aaa久久| 亚洲成人超碰| 久青草影院| 香蕉AV777XXX色综合一区| 中文字幕成人网站| 9精品视频在线| 99热综合在线| 婷婷五月色网| 67194成I人在线观看线路1| 99re在线观看| 婷婷五月综合中文字幕| 激情综合网五月丁香| 五月婷婷六月丁香| 婷婷欧美激情| 婷婷丁香六月| 综合五月丁香97| 色婷五月| 日本色狠狠| 99精品自拍| 最近韩国日本免费高清观看| 亚洲激情五月| 人人干天天操五月丁香| www.五月天婷婷| 五月天成人综合| 婷婷五月丁香青青草在线| www.97碰碰com| 91丨熟女丨首页| 五月深爱激情网| www.zbzhongsen.com| 99婷婷精品推荐在线视频| 99热高清在线| 婷婷伊人五月| 99无码精品| 一婬一伦一区二区三区| 开心五月综合激情综合五月| 色婷婷九月| 婷色影院| 99热这里只有精品98| 思思热精品在线观看| 婷婷丁香97| 丁香五月亚洲综合丝袜| 这里只有精品视频国产| 九九99在线免费在线观看视频| 婷婷五月,综合伊人| 91超碰人人操| 五月婷婷激情日本| 欧美久久久久久久久中文字幕| 伊人丁香六月婷婷| 五月丁香婷婷综合| www.射伊蕉婷婷| www,五月丁,com| 五月花免费视频| 欧美精品久| 先锋资源996| 91丨九色丨东北熟女| 亚洲mm免费| 深爱五月婷婷开心中文字幕| 97人人草| 99啪啪视频| 亚洲第一综合| 香蕉乱插| 26.uuu丁香五月婷婷| 色九四色| 天天爽天天摸| 另类亚洲电影| 激情综合色播| 99精品偷拍视频| 精品成人无码A片观看香草视频| 五月亭亭六月天| 色一情一乱一乱91Av| 久久这里有精品视频| 亚洲成av人影院| WWW,激情五月天,COM| 五月婷婷导航| 五月婷婷三级| 欧美婷婷综合| 久久亚洲婷婷综合色五月| 91久操| 色射影院| 九色视频91| 色五月婷婷五月丁香五月激情五月视频| 色色五月天网站| 黄网在线免费播放| 99色婷婷| 丁香五月天色| 五月天激情美女久久| 五月亭亭激情综合| 五月天大香蕉婷| 天天做天天爱天天做| 99久久婷婷国产综合亚洲| 欧美激情综合色综合色| www.激情五月天.con| 婷婷激情五月综合| 亚洲av成人在线| 超碰成人免费| 亚洲综合干| 国产婷婷婷| 亚洲精品国产精品乱码不99| 色婷婷精品视频| 97性视频| 丁香五月天天日| 精品国产一区二区三区四区阿崩 | 亚洲午夜成人av电影网| www色婷婷com| 色啪综合| 玖玖99婷婷| 五月丁香综合激情网| 一级七香蕉| 色色五月婷婷久久| 色色网站在线免费观看视频| 综合久久狠狠| 性欧美日本| 超碰碰碰碰| 婷婷大香蕉| 秋霞影音91人妻久久| 天堂va久久久噜噜噜久久Va| 91人妻人人做人碰人人爽九色| 色色无码日韩| 色色色色色五月| 亚洲精品国产成人AV在线| 国产在线6| 五月婷婷碰碰| 久久精品人妻| 婷婷五月天播播| 色性综合| 狠狠色丁香婷婷| 五月色婷婷综合| 色五月婷婷婷婷| 踪合专区啪啪| 色五月综合激情网| 日日夜夜天天综合| 5月婷婷6月六月丁香| 激情综合亚洲| 久久的爱大香蕉| 丁香五月天堂网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 色婷婷导航| 亚洲乱码日产精品BD| 亚洲最大激情无码| 五月婷婷五月天亚洲无码| 色欲影香| 91超级碰人人操| 九九亚洲视频| 淫视馆aV二区一区| 极品另类| 婷婷十月激情综合网| VA婷婷| 五月婷婷六月丁香玖玖玫瑰91| 成人无码髙潮喷水A片| 夜夜久久综合网| 79色色免费| 99热思思久| 激情爱爱网站超大免费| 激情综合色| 亚洲激情 久久| 五月天婷婷色色网| 成人VAV视频在线观看| 婷婷六月丁| 婷婷开心激情综合五月天| 婷婷伊人网| 色婷婷丁香五月天在线视频| 99色色爰| 激情婷婷色色| 99精品在线观看视频| 大香蕉视频99| 182.t午在线观看| 欧美丰满熟妇BBB久久久| 热99精品视频五月| 九九色图| 丁香婷婷色色| 丁香五月天网站| 欧美色色色色色色| 色五月av| 91人操人人人操人| 色欲天天综合| 99在线视频播放| 99re热视频这里只精品5| 热热久久久久久久久| 久久网站免费亚洲| 五月丁香婷婷福利| 婷婷97狠狠干| 久久狠色噜噜狠狠狠狠97| 五月天婷婷免费| 婷婷综合精品视频97| 五月天婷婷丁香蜜桃91| 亚洲色vA| 九九热思思| 色丁香影院| 婷婷六月激情在线视频| 婷婷淫淫狠狠六月| 91大神操美女| 婷婷五月激情中文字幕| AA丁香综合激情| 丁香五月AV| 99色| XX色综合| 色色色色色色色色色色色色色色,网站| 丁香网五月天| 青草青草久9视频在线视频| 丁香五月婷婷激情123| 狠干综合| www.操.com| 亚洲亚洲人成综合网络| 百度4399有码精品V在线观看 | 丁香五月另类小说| 99热精品免费| 欧美大奶熟女噜噜噜噜| 五月综合777| www,五月丁,com| 婷婷丁香五月天狠狠| 深爱婷婷丁香五月激情| 青青草原亚洲天堂| 欧美成人AAA片一区国产精品| 97超碰,人人舔,人人操,人人摸| 色噜噜狠狠狠狠色综合久欧美| 亚洲另类AV| 日韩操逼大片| 操逼福利视频| 久色激情| 亚洲国产精品二二三三区| 综合色七七| 超碰9在| 婷婷丁香成人| 亚洲欧州色情在线观看| 婷婷精品免费久久| 另类色网| 五月丁香六月婷婷综合网缴情| 色五月激情网| 精品国产AV色一区二区深夜久久| 色色色色区| 日韩色色小视频| 五月天激情网页| 久久婷婷综合基地| 天堂草在线观| 九九这里只有精品| 国产免费av在线| 99热这里只有精品98| 五月婷婷六月综合| 极品人妻XXXXOOOO| 99欧州偷拍视频| 婷婷色色播五月天| 国产激情久久| 色婷婷AⅤ| 五月色导航| 大香蕉99| 一区二区三区四区牛| 婷婷激情伍月网| 色99在线视频| 97日本在线播放| 人妻综合网| 五月婷婷六月婷| 天天色粽合合合合合合合| 五月丁香婷色| 久久视频在线| 搡BBBB搡BBB搡18 | 丁香五月综合久久八| 丁香五月天电影| 天天碰夜夜操| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 婷婷五月天av| 婷婷大乡焦噜噜| 亚洲激情视频网| 色色婷| 婷婷五月天性爱视频| 色五月丁香一区在线| 成人网站在线观看视频| 九九精品热播| 337久久| 五月香蕉综合| 九九無妻| 思思热闹这里只有精品| 99在线小视频| 99热国产| 开心激情网在线| 人妻激情视频| 色五月大| 成人综合视频在线| 日韩在线视频网站| 激情综合国产| 激情视频网址| www.天天色综合| 婷婷色五月激情| 婷婷精品综合| 国产精品久久..4399| 99热这里有精品首页10| 台湾无码A片一区二区| 欧美日韩成人在线免费| 日韩人妻无码精品| 特黄三级片| 中文字幕在线资源| 丁香五月影院| 秋霞免费视频| 日韩欧美骚货| 怡红院成人AV| 丁香五月婷婷激情尤物| 亚洲成人一区| 色99欧洲色19| 婷婷色导航| 丁香婷婷六月在线资源观看| 亚洲欧洲另类| 五月丁香| 精国产品一区二区三区A片| 操操操www.com| 91九九| 色婷丨日丨天丨综合久久| 色婷婷六月| 国产色99| 日本在线视频播放91| 99热在线精品观看| 五月丁香网中文字幕| 思思热99er| 日本色五月婷婷| www.黄色片-久久成人国产精品在线播放-999AV | 婷婷丁香花五月天| 久9热| 久热这里只有精品99re,久热这里只有精品7| 牛色色碰| 色婷婷精品视频| 婷婷五月天色| 岛国AAAV| 婷婷黄色| 天堂婷婷丁香六月网| 久热久re| 久久丁香五月婷婷| 婷婷五月天开心激情网| 婷婷伊人网| 成人国产欧美大片一区| 永久免费一区二区三区| 五月天天天开心激情网| 在线99精品| 久久99网| 久久a热| 亚洲小视频免费观看| 大香伊人久色| 丁香五月激情婷婷| 色爱终和网| 九九综合伊人| 色色六月| 欧美日韩999| 综合久久五月天| 天天操天天爱天天日| 超碰成人影视| 97碰在线视频| 2017狠狠干| 玖玖九九99| www.婷婷六月天| 久热精品免费视频4| 色色色色色色色色五月先| 五月婷在线色视频| 狠狠色丁香五月婷巨| 中文字幕人妻AV| 激情第四色| 天天做天天爱| 婷婷五月天综合小说网| 婷婷久久免费看| 五月综合激情| 中文字幕无码成人电影| 一级片操逼视频| 超碰碰碰碰| 婷婷五月综合网| 激情综合网激情五月网| 影音先锋色色色资源色资源色| 一本九九色| 无码少妇高潮喷水A片免费| 久久激情视频| 成人五月天丁香| 色婷婷亚洲精品天天综| 婷婷丁香五月天中文字幕| 五月丁香久久精品在线观看| 婷婷综合97| 亚洲AV另类| 人人操超碰| 大香蕉久久视频久久视频| www.夜夜| 久久538| 91热久久| 岛国操B不卡在线| 免费无码毛片一区二区A片| 色吧五月婷婷| 婷婷中文字幕| 97自拍视频在线| 亚洲午夜电影| 一月婷婷色色| 在线观看欧美| 亚洲天堂爱爱| 特黄三级片| 五月天婷婷网站888| 婷婷六月综合基地| 五夜丁香| 亚洲五月天婷婷| 色婷天天| 五月婷婷啪啪| 五月激情综合网| 狠狠色婷婷7777久| 国产欧美日韩综合精品一区二区| 九九人人操| 免费观看的av| 怎么样可以看免费的一级av| 日韩成人不卡| 大香蕉太香蕉视频97| 欧美日韩国产一二区| 91伦| 色播播婷婷| 另类综合激情| 伊人丁香六月婷婷| 思思综合热| 亚洲丁香五月在线观看| 99亚洲视频| 欧美日韩成人高清在线| 亚洲精品国产成人AV在线| 亚洲综合五月天婷婷| 噜噜噜狠狠色综合| 九月丁香婷婷基地| 日韩久综合| 丝袜人妻| 五月婷婷久久爱| 五月天激情无码专区| 99热在线只有精品| 中文字幕av久久爽一区| 极品人妻VIDEOSSS人妻| ZpRSw| 欧美色图天堂网色| 91精品熟女| 思思热国产在线| 六月色婷婷| 天天操天天操天天操天天操天天操| 色色热| 人妻六月天| 九九五月天| www.色窝| 日韩欧美成人片| 色墦五月丁香| 99视频在线观看视频| 色区久久| www,26uuu,c0m,色情| 97影院一级片| 涩丁香| 五月婷啪啪| 激情五月婷婷伊人| 色色丁香婷婷综合| 丁香五月婷婷欧美性爱| 婷婷五月天Av| 色99综合视频| 色色色综合网| 免费在线a| 激情涩涩网| 五月天色不卡| 中国无码av| 九九热av| 丁香五月Av| 婷婷五月色| 久久大香蕉视频| 色播五月丁香综合| 五月天色色网站| 91人人人人人人人| 日本色婷婷久久99精品91| 99热精品在线| 婷婷字幕在线| 五月丁香999| 日本色图综合| 激情五月狠狠喔| 五月丁香激情婷婷综合字幕| 色色色色五月天| www亚洲无码| 色婷婷六月开心中文字| 激情综合婷婷| 99日本黄站| 五月天激情丁香| 五月婷婷香蕉| 五月天婷婷丁香蜜桃91| 色五月天在线观看| 丁香五月手机在线| 综合网五月| 九九综合网| 色婷婷五月天成人网| 97综合在线| 97色婷婷五月天| 激情五月天视频| 麻豆忘忧草午夜| 九六五月天婷婷| AA片在线观看视频在线播放 | 三日本无码| 亚洲mm色| 日本少妇裸体做爰高潮片| 天天日天天添| 国产成人亚洲综合A∨婷婷| 五月色丁香| 99超级碰碰| 色五月婷婷91| 人人干99| 影音先锋噜一噜| 97婷婷狠狠| 丁香五月手机在线| 五月婷婷深深爱| 激情五月色综合网| 啪啪婷婷五月天激情| 六月婷婷七月丁香| 五月天丁香成人| 狠狠第四色| 综合色五月| 久操人妻| 午夜丁香婷婷| 日本五月婷婷久久久六月丁香| 九九99精品视频在线观看| 做爱夜夜干天天操| 夫妇交换刺激做爰| 99爱免费视频在线观看| 在线精品97| 97色色色色色| 久操干| 色综合久久天天综合网| 啪啪综合网| 丁香五月影院| 五月婷丁香亚洲| 国产三级在线播放| 婷婷九月在线| 欧美激情综合| 免费无码毛片一区二区A片| 久久婷婷五月天激情| av不卡网站| 99只有精品| 久久五月天婷婷| 嫩BBB槡BBBB搡BBBB| 五月丁香另类网| 国产成人亚洲综合亚洲| 免费亚洲婷婷中文字幕| 婷婷五月综合婷婷| 丁香五月天久久| 99re这里只有| 婷婷伊人无码| XXXX岛国| 婷婷区日本| 国产免费性爱| 5月丁香啪啪啪| 99热爱爱干干日| 色优久久| 天天干狠狠| 另类激情五月| 欧美槡BBBB槡BBB少妇| 人人爱人人摸人人澡| 影音先锋91| 涩五月婷婷| 亚洲狠狠干| 色婷婷电影| 99操九九网| 九九99九九99九九99视频网| 天天舔天天摸天天射| 91热久| 色色色99| 五月天婷婷7米| 日韩一区二区在线播放| 在线日韩av| 深爱综合网| WWW五月| 99热永久在线观看| 国产婷婷五月| 成人做爰高潮A片免费视频| 99性色| 色五月开心五月激情五月| 天堂五月婷婷| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 色色综合无码| 99噜噜噜| 大香蕉色婷婷伊人在线| 色播综合| 激情五月婷婷五月丁香五月开心五月| 五五月丁香花激情综合网| 婷婷激情五月视频| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 女同激情久久av久久| 95精品区一区二| 青草激情综合| 丁香五月婷婷日本| 婷婷色丁香五月| 99小视频| 色噜噜狠狠色综合网| 99视频热99| 国产看真人毛片爱做A片| 五月婷婷中文字幕| 五月丁香免费看| www.久久66| 五月综合视频在线| 91人人网| 大天天伊人| 婷婷丁香精品视频在线观看| 最近中文字幕2019视频1| 久9视频| 激情五月天开心| 综合五月丁香六月婷婷| 婷婷五月天激情综合深爱| 久月丁香爱婷婷综合| 日韩成人AV在线| 色婷婷激情四射视频| 丁香婷婷五月综合欧美另类| 色www久视频| 五月丁香六月激情| 色色com| 五月婷婷,六月丁香| 99热在线精品播放| 婷婷五月精品中文字幕| www.色婷婷.com| 久久ab| 久草五月天| 天堂草在线看www| 激情婷婷五月天日本系列| 午夜不卡成人一区二区| 天天色伊人| 天天色天天爱天天舔| 538在线| 五月天婷a在线| 激情丁香久久| 99高级会所久久| 99热国产这里只有| 婷婷开心青青草| 五月综合六月丁| 色五月婷婷啪啪五月| 五月激情基地| 婷婷丁香五月高清| AV操操操| 久青操| 婷婷综合色色| 婷婷五月婷婷| 国产成人精品一区二三区熟女在线| 99热精品在线观看| 无码 av电影| 色综合网页| 色婷婷五月影院| 91无码视频| 99色这里| 九九九成人在线视频| AV79| 五月天成人免费视频| 色狠狠999综合| 亚洲精品大片| 亚洲视频一区| 97成人视频| 日本丁香久在线| 99热九九这里只有精品| 激情综合网五月天天| 久久久精久人妻| 欧美色色网| 五月激情啪啪啪| 99噜噜噜在线播放| 婷婷94s| www.91在线观看| 日本综合久| 色五月五月天色婷婷色五月| 777色色色| 日本99久久| 色婷青青| 亚洲成人中心| av在线超清中文| 日日狠狠久久偷偷四色综合免费| 婷婷久久综合| 99ri视频| 99久久婷婷综合| www.91色| wwwwww.色| 狠狠人妻色综合| 精品夜夜澡人妻无码AV| 五月开心啪啪| 色婷婷色五月另类综合| 91色情播放| 日韩AAAAA| 9久9久9久女女女九九九一九| 伊人久久大香线蕉av一区| 日韩抽插操逼| 激情五月天影院| 操一区| 9久久精品视频| 亚洲激情五月婷婷日日| 9九色首页| www.99热国产| 久草A片| 激情五月丁香综合网站| 婷婷中文字幕| 一级性感毛片| 丁香桃色综合网| 9热视频在线观看| 日本eVa一区=区视频| 黄网免费看| 性天天中文网| 婷婷五月天伊人| 伊人婷婷色| 色噜综| 婷婷五月丁香五月| 性爱五月丁香| 婷婷激情五月天小说校园| 五月激情综合网| 成人网在线视频| 五月婷婷丁香在线视频| 五月天色图| 91丨九色丨熟女丰满| 亚州性爱99| 欧美在线视频99| 色综合久久综合中文综合网| 丁香六月婷婷综合啪啪| 97在线观看| 天天摸天天舔在线视频| 色天堂在线| 丁香社92视频| 久久机只有这里精品| 99精品在线| 97干视频| 91综合色| 九月av在线| 久狠日av| 丁香伍月婷电影全集| 天天操夜夜夜夜爽| 国产激情久久| 五月婷婷激情性爱| 五月丁香影院| 丁香六月婷婷色XXXXX| 武汉美女啪啪视频免费一级片| 国产免费一区二区在线A片视频| 99自拍视频网站| 五月狠狠| 大香蕉人在线65| 终合激情网| 五月丁香六月停停停| 欧美性丁香色色五月天| 亚洲成av人影院| 日韩一66精品| 99精品成人无码A片观看金桔| 99这里有精品视频3| 伊人啪啪网| 久久婷婷五月天| 亚洲综合激情五月久久| 亚洲激情av| 超碰91在线| 久热九九| 亚洲操B| 婷婷第六色| 99性视频| www.日日日.com| 久久精品一区二区三区四区| 99热大片| 人人摸人人干| 五月婷婷中文| 97碰成超视频免费视频| 五月天社区婷婷丁香社区| 色九亚洲| 久久只有18视频| 久热久色| 亚洲亚洲人成综合网络| 激情五月婷婷中文字幕| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 五月丁香偷拍| 久久性刺激| 91丨九色丨东北熟女| 免费视频舔| 欧美性生交xXxX久久久| 日本熟女内射| 中文在线成人| 欧美激情综合| 五月丁香婷婷久久| 79色色免费| 五月天精品| 激情五月深爱五月| 天天综合干| 97偷拍在线视频| 久久色五月天综合网| 97久操| 色婷婷9| 六月色婷婷欧美| 日本波多野结衣视频| 色色热| 五月色婷婷在线观看| 韩日另类| 久久在线大香蕉| 激情文学 综合 色| 伊人婷婷99热精品| 久久婷婷内射| 久久这里只有精品07 | 婷婷丁香红五月91C| 激情婷婷丁香| 99久久a线观| 九九精品少妇| 俺去也婷婷| 可以免费看AV网站| 五月天激情图片| 九月丁香久久网| 色婷婷www| 69激情小说| 黄色成人网站在线播放| 中文字幕日本最新乱码视频| 99热97| 久久黄色免费视频| 丁香玖玖视频大全| 伊人激情AV一区二区三区| 五月色影院| 第二色AⅤ| 一二区成人电影| 亚洲精品白浆高清久久久久久| www.minyis.com【JT】实力收量可预付QQ2101460746 | 婷婷五月天综合久久| 伊人春天av| 欧美碰碰碰| 99热精品在线观看| 久久性爱视频| 婷婷激情五月综合丁| 热九九精品| 99久久色| 国产成人精品一区二区三区视频| 97人人操| 另类激情网| 九九热10| 日本久久高清| 色婷大香蕉| 国产乱子轮XXX农村| 国产成人av在线| 五月色婷婷综合| 日韩成人精品一区久久久久| 久久色情| 熟女91九色| 九九色网| 嫩草极品| 综合婷婷| 综合色色网| 丁香五月天社区| 五月天六月婷婷电影| 99在线观看免费精品视频| www.婷婷亚洲基地| 欧美婷婷综合网| 五月天婷婷综合色| 国产精品色色| 99热这里只有精品66| 亚洲婷婷基地| 成年人丁香五月| 五月天精品综合| 俺去也在线官网| 最新激情五月天| 亚洲另类婷婷五月丁香在线播放| 久热 91| 99热超碰天堂网| 另类图片五月天激情| 丁香五月婷婷av影院| 激情综合五月婷婷| 日本综合久久| 综合网亚洲| 性爱综合网| 午夜天堂啪啪| 大香蕉伊人99| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 琪琪色网址| 色综色网| 九九色情网站| 色欲五月丁香| 99综合色色色| 99天堂在线观看免费视频| 乱乱av| 婷婷五月天国产传媒| AV片一区在线观看| 五月天大香蕉av| 六月五月天婷婷涩播在线| 国产黄色在线观看| 伊人五月婷| 激情综合丁香| 亚洲成人无码免费| 日本97久久久精品| 五月丁香少妇| 超碰激情网| 婷婷丁五月| 国产成人AV人人爽人人澡Va| 色国产五月| 色五月五月丁香| 五月丁香无码| 丁婷婷五月天在线播放| 日本色爽| 狠狠操综合| 欧美色五月| 欧类av怡春院| 激情五月婷婷色综合| 丁香六月婷婷色XXXXX| 99九九视频精彩在线| 色欲色天天香综合| 欧美va亚洲va| 亚洲激情色色| 五月丁香在线观看| 生活片五区| 九色婷婷| 久久免费少妇高潮99精品| 国产女生爱爱AA| 精品99在线| 亚洲国产精品五月天| 先锋av性爱成人电影| 久久久久人妻网址| 另类视频综合| 国产AV一区二区三区最新精品| 亚洲va久久久噜噜噜久久天堂| 久久影视婷婷五月| 日韩色色色色色| 日韩激情人伦人| 九九视频在线观看| 久久97| 久久五月婷天天干| 色色九九五月天| 久久婷婷激情五月天一区二区| 久热中文字幕在线线观看| 色噜噜狠狠一区二区三区| 九九色精品| 久久大大香| 日韩人妻无码精品| 五月婷婷熟女| 色色色婷婷| 拍真实国产伦偷精品| 999九九九久久久99HD| 人妻久久久久| 在线可以看的av网址| 超碰国产在线| 色婷婷狠狠18yy| 五月天丁香网| 天天做天天爱天天综合| 99久久久| 婷婷中文综合网| 99啪啪视频| 丁香美女主播视频在线观看| 婷婷精品视频| 9999热免费视频视频| 26UUU一区二区| 婷婷伊人网| 亚州美女| 996热re视频精品视频| 第四色婷婷五月| 色综合久久888| 影院久久久| ss五月天激情| 欧美视频五区| 欧美色必爱| 久久久久久久久久久久久久人妻视频 | WWW色综合| 色情五月天丁香社区| 婷婷五月天VI| 色五月婷婷天天干| 夜夜躁婷婷AV| 激情婷婷激情在线不卡| 婷婷五月天伊人在线| 国产精品色婷婷99久久精品| 六月婷婷av| 影音 五月 婷婷 久久| 操99| 丁香五月天激情免费在线观看AV777| 五月色综合| 色婷婷狠| 99视频这里有精品| 97人碰人操| 国产va在线视频| 91日韩在线| 99热精品观看| 五月天激情久久| 91呦呦呦| 伊人六月无码视频| www.夜夜操.com| 天堂久久精品| WWW,五月| 99久久.www| 婷婷五月天精品| 日本在线观看99| 秋霞电影理论| 五月激情天| 天天五月香欧美| 亚洲精品午夜国产va久久成人| 六月婷婷啪啪| 丁香五月av| 东北黄色一级| www.com五月天| 色婷狠狠| 五月丁香黄色视频| 丁香五月 性爱| 亚洲免费99| 激情色五月天| 天天摸天天高潮天天爽| 免费无码毛片一区二区A片| 秋霞午夜理论| 丁香五月婷婷色| 丁香婷婷五月天校园春色| 99这里只有精| 丁香六月婷婷综合激情欧美| 亭亭玉月丁香| 日本激情ⅩXX免费视频| 99视频| 天天爽天天弄| 人与禽A片啪啪| 婷婷 亚洲图片 丁香| 97在线观视频免费观看| www.思思99热| 波多婷婷久久| 久久九九热视频| 婷婷色在线播放| 婷婷五月丁香久久|