欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

AIS數(shù)據(jù)協(xié)議解析實(shí)戰(zhàn):從NMEA語(yǔ)句到6-bit解碼

AIS數(shù)據(jù)協(xié)議解析實(shí)戰(zhàn):從NMEA語(yǔ)句到6-bit解碼 簡(jiǎn)介AIS數(shù)據(jù)協(xié)議解析完整版是一份面向船舶通信研發(fā)、AIS設(shè)備調(diào)試與海事信息系統(tǒng)集成人員的doc技術(shù)文檔用于解決AIS VHF報(bào)文難讀、動(dòng)態(tài)/靜態(tài)信息字段定位繁瑣的問(wèn)題。文檔系統(tǒng)講解AIS報(bào)文的數(shù)據(jù)格式、VDM/VDO語(yǔ)句類型、A/B信道指示、填充位、8位CRC校驗(yàn)、多語(yǔ)句拆分重組及 結(jié)束標(biāo)志并給出C語(yǔ)言實(shí)現(xiàn)流程覆蓋字節(jié)流轉(zhuǎn)六位、報(bào)文頭提取、目標(biāo)信息解析可直接借鑒落地。除協(xié)議條款外文檔還梳理了1/2/3/4/5/18/19/21/24等報(bào)文類型的識(shí)別與解析要點(diǎn)以5號(hào)靜態(tài)信息報(bào)文為例展示電文合并后依次解析MMSI、船名、船型、船長(zhǎng)船寬、吃水、目的地等字段的位段劃分與代碼實(shí)現(xiàn)兼顧原理與實(shí)戰(zhàn)。壓縮包共1個(gè)doc文件大小678KB目前已有3749人學(xué)習(xí)下載適合作為AIS設(shè)備開(kāi)發(fā)、船舶監(jiān)控平臺(tái)搭建和協(xié)議二次開(kāi)發(fā)時(shí)的參考手冊(cè)。1. AIS數(shù)據(jù)協(xié)議解析從一串NMEA語(yǔ)句里還原一條船的實(shí)時(shí)動(dòng)態(tài)AISAutomatic Identification System船舶自動(dòng)識(shí)別系統(tǒng)是海事領(lǐng)域最基礎(chǔ)也最常用的數(shù)據(jù)協(xié)議之一岸基基站、船載終端、海事監(jiān)管平臺(tái)和航運(yùn)物流系統(tǒng)都在跑這東西。但真正拿到AIS數(shù)據(jù)你會(huì)發(fā)現(xiàn)它不像HTTP那樣有清晰的JSON結(jié)構(gòu)而是一串以“!AIVDM”開(kāi)頭、逗號(hào)分隔、看起來(lái)像亂碼的文本行。AIS數(shù)據(jù)協(xié)議解析的核心工作就是把這串文本按6-bit編碼規(guī)則拆開(kāi)還原出船名、MMSI、經(jīng)緯度、航速、航向、船長(zhǎng)船寬這些結(jié)構(gòu)化字段。這篇文章我會(huì)按我實(shí)際做過(guò)的方案來(lái)講先講清楚協(xié)議分層和報(bào)文格式再給一套可直接復(fù)現(xiàn)的Python解析實(shí)現(xiàn)最后把調(diào)試中踩過(guò)的坑和驗(yàn)證方法一并說(shuō)透。適合正在做AIS接入、船舶監(jiān)控系統(tǒng)開(kāi)發(fā)、海事數(shù)據(jù)清洗的工程師新手可以照步驟走熟手可以直接拿走避坑清單。2. 先把AIS報(bào)文鏈路理順從VHF數(shù)據(jù)鏈路到一行NMEA語(yǔ)句2.1 AIS在物理層跑的是VHF數(shù)據(jù)鏈路不是IP協(xié)議AIS工作在VHF頻段161.975MHz和162.025MHz兩個(gè)信道采用自組織的TDMA時(shí)分多址方式讓船只共享信道。每條船在自己的時(shí)隙里廣播消息不需要中心調(diào)度。這種設(shè)計(jì)對(duì)解析層意味著什么意味著你拿到手的不管是串口數(shù)據(jù)、UDP數(shù)據(jù)還是日志文件本質(zhì)上都是一段持續(xù)流里面每條消息彼此獨(dú)立沒(méi)有請(qǐng)求-響應(yīng)關(guān)系也沒(méi)有ACK機(jī)制。解析時(shí)不能假設(shè)“發(fā)了A就會(huì)回B”只能按語(yǔ)句一條條解。從數(shù)據(jù)鏈路往上協(xié)議棧大概是這樣的層次物理層是GMSK調(diào)制的VHF信號(hào)數(shù)據(jù)鏈路層是HDLC-like幀封裝網(wǎng)絡(luò)層以上才是我們常說(shuō)的高層消息——ITU-R M.1371定義的27種消息類型加上后來(lái)補(bǔ)充的28、29實(shí)際不超過(guò)29種。但這里要說(shuō)明一下我們實(shí)際開(kāi)發(fā)時(shí)99%的情況不會(huì)直接從HDLC幀開(kāi)始處理。市面上絕大多數(shù)AIS接收機(jī)比如Comar、SRT、或者普通的AIS接收模塊已經(jīng)完成了物理層和鏈路層解調(diào)把數(shù)據(jù)以NMEA 0183語(yǔ)句的形式從串口或網(wǎng)口吐出來(lái)。所以“AIS數(shù)據(jù)協(xié)議解析”這個(gè)標(biāo)題下的核心工作實(shí)際是在解析NMEA封裝層和高層消息層而不是去解射頻信號(hào)。如果你做的是類似“AIS基帶信號(hào)解調(diào)”的項(xiàng)目那就要去看GMSK解調(diào)和TDMA時(shí)隙同步那是另一個(gè)量級(jí)的工程。本文聚焦的是拿到接收機(jī)輸出之后的協(xié)議解析這也是絕大多數(shù)從業(yè)者的真實(shí)場(chǎng)景。2.2 NMEA語(yǔ)句格式VDO和VDM的六個(gè)字段必須記清AIS數(shù)據(jù)接入最常見(jiàn)的形式是NMEA 0183語(yǔ)句典型的一行長(zhǎng)這樣!AIVDM,1,1,,A,13u?etPv2;0n:dDPwUM1KV1L,0*5C拆開(kāi)來(lái)看這個(gè)語(yǔ)句以“!”開(kāi)頭后面是“AIVDM”或“AIVDO”然后是逗號(hào)分隔的字段。這里先記住一個(gè)關(guān)鍵點(diǎn)!AIVDM表示來(lái)自其他船的消息!AIVDO表示本船自己的消息。在接收機(jī)日志里兩者都會(huì)出現(xiàn)解析時(shí)一般不需要區(qū)分但如果做的是本船航跡記錄AIVDO就要單獨(dú)處理。六個(gè)字段的含義如下表字段序號(hào)示例值含義11語(yǔ)句條數(shù)一條完整消息可能被拆成多條語(yǔ)句發(fā)送21當(dāng)前語(yǔ)句序號(hào)3空順序消息ID多語(yǔ)句消息用用于關(guān)聯(lián)4A信道編碼A或B對(duì)應(yīng)VHF信道513u?etPv2;0n:dDPwUM1KV1L數(shù)據(jù)載荷payload6-bit ASCII編碼60填充位數(shù)數(shù)據(jù)載荷最后不足6位時(shí)補(bǔ)的0個(gè)數(shù)字段3在很多單語(yǔ)句消息里是空的這個(gè)不用管。字段5是真正的解碼對(duì)象字段6非常關(guān)鍵——它決定了載荷二進(jìn)制流的長(zhǎng)度是否準(zhǔn)確如果接收機(jī)填錯(cuò)了你解析出來(lái)的字段會(huì)整體錯(cuò)位。校驗(yàn)和是“”后面兩位十六進(jìn)制計(jì)算范圍是從“!”之后到“”之前的所有字符的異或和。這一行的校驗(yàn)和是0x5C可以用下面的代碼驗(yàn)證def nmea_checksum(sentence: str) - str: body sentence.split(*)[0].lstrip(!) cs 0 for ch in body: cs ^ ord(ch) return f{cs:02X}這個(gè)校驗(yàn)和的計(jì)算邏輯是逐字節(jié)異或不是累加和。很多人在這一步按CRC的思維去做算出來(lái)對(duì)不上其實(shí)AIS用的是最簡(jiǎn)單的異或代碼里兩行就完事。校驗(yàn)和的作用是在解碼之前先過(guò)濾掉損壞語(yǔ)句確保后面6-bit解碼不基于壞數(shù)據(jù)展開(kāi)。2.3 高層消息類型位置報(bào)告和靜態(tài)數(shù)據(jù)是解析主要目標(biāo)ITU-R M.1371定義了多種消息類型但實(shí)際在AIS數(shù)據(jù)流里出現(xiàn)頻率最高、業(yè)務(wù)價(jià)值最大的是這么幾類消息1、2、3位置報(bào)告Class A船包含MMSI、經(jīng)緯度、SOG、COG、真航向、航行狀態(tài)、ROT等一條1/2/3類消息就能知道一條船現(xiàn)在在哪、往哪開(kāi)、多快。消息5船舶靜態(tài)和航次數(shù)據(jù)Class A船包含船名、船舶類型、船長(zhǎng)船寬、吃水、目的地、ETA需要兩條NMEA語(yǔ)句拼接才能完整解析。消息18Class B位置報(bào)告對(duì)應(yīng)小型船只的B類設(shè)備字段比消息1/2/3少一些。消息24Class B靜態(tài)數(shù)據(jù)替代了B類船沒(méi)有消息5的問(wèn)題分為24A和24B兩段。消息4基站報(bào)告和消息21航標(biāo)報(bào)告在區(qū)域監(jiān)控和AIS基站網(wǎng)絡(luò)場(chǎng)景里會(huì)大量出現(xiàn)。這里有一個(gè)我們?cè)陧?xiàng)目中用到的消息類型過(guò)濾策略位置消息1/2/3/18直接進(jìn)實(shí)時(shí)軌跡鏈路靜態(tài)消息5/24進(jìn)船舶檔案表更新模塊其他消息4/11/21/27按需走旁路存儲(chǔ)。這個(gè)分流能省掉很多不必要的解碼時(shí)間在一路串口數(shù)據(jù)3000條/分鐘的場(chǎng)景下解碼性能的差距會(huì)被明顯放大。2.4 搞清楚AIS報(bào)文長(zhǎng)度和填充位的關(guān)系所有AIS消息的二進(jìn)制長(zhǎng)度是有固定區(qū)間的。Class A位置報(bào)告消息1/2/3不帶填充位時(shí)是168 bit用168除以6得到28個(gè)ASCII字符。這也是為什么很多位置報(bào)告語(yǔ)句的payload剛好是28個(gè)字符。消息5靜態(tài)數(shù)據(jù)是424 bit去掉填充位后是70到71個(gè)字符因?yàn)?24除以6等于70余4需要補(bǔ)2位填充。如果你在解析時(shí)發(fā)現(xiàn)消息5的payload字符數(shù)不是70或71就要警惕是不是語(yǔ)句拼接順序錯(cuò)亂或者是接收機(jī)輸出截?cái)?。填充位字段字?的取值范圍是0到5因?yàn)樗回?fù)責(zé)補(bǔ)齊最后不足6位的部分。解析時(shí)先把payload每個(gè)字符轉(zhuǎn)成6-bit二進(jìn)制然后把所有bit串起來(lái)再根據(jù)填充位字段去掉末尾的無(wú)效位得到真正有效的數(shù)據(jù)bit流。這個(gè)過(guò)程是整個(gè)AIS解析的地基地基歪了后面所有字段都會(huì)錯(cuò)位。下一章我會(huì)給出完整的Python實(shí)現(xiàn)。3. 核心解碼算法用Python把6-bit payload拆成經(jīng)緯度和航速3.1 6-bit ASCII編碼規(guī)則從字符到二進(jìn)制的映射表AIS的payload不是直接以ASCII碼傳輸數(shù)據(jù)而是用了一套自定義的6-bit字符表。這套表的字符順序是0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_加上空格。為什么是從“0”開(kāi)始而不是從“A”開(kāi)始因?yàn)锳IS協(xié)議中第一個(gè)有效編碼字符對(duì)應(yīng)數(shù)值0第二個(gè)對(duì)應(yīng)1以此類推字符“0”的ASCII碼是48減去48就是0字符“A”的ASCII碼是65減去48等于17正好對(duì)應(yīng)表里的第18個(gè)位置。轉(zhuǎn)換為二進(jìn)制時(shí)規(guī)則是取該字符在表中的索引值轉(zhuǎn)成6-bit二進(jìn)制。比如前面的payload首字符“1”索引是1二進(jìn)制是000001“u”索引是45ASCII 117減48再偏移實(shí)際按順序算二進(jìn)制是101101。實(shí)現(xiàn)時(shí)不用維護(hù)映射表直接用兩個(gè)剪刀差轉(zhuǎn)換def char_to_bits(c: str) - str: # AIS 6-bit 字符轉(zhuǎn)二進(jìn)制輸入必須是payload字符 ascii_val ord(c) if 48 ascii_val 119: val ascii_val - 48 elif ascii_val 32: val 0 else: val ascii_val - 48 - 8 # 之后的特殊處理 return format(val, 06b)這段代碼的邏輯說(shuō)明AIS 6-bit字符表里“0”到“W”的索引就是ASCII減48其中“W”以后到空格之間的字符需要額外減8。實(shí)際項(xiàng)目里我建議直接用映射表查起來(lái)更快兩個(gè)方式性能差不多但映射表更不容易出錯(cuò)AIS_CHARS 0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_ CHAR_MAP {c: i for i, c in enumerate(AIS_CHARS)} def char_to_bits_fast(c: str) - str: return format(CHAR_MAP[c], 06b)參數(shù)說(shuō)明AIS_CHARS這個(gè)字符串的順序就是協(xié)議的字符表順序不能調(diào)換最后一個(gè)字符是空格編碼值0x20。CHAR_MAP建好后整個(gè)payload轉(zhuǎn)換就是一次字符查表。3.2 按bit位精確提取字段位偏移表和字段解析函數(shù)當(dāng)payload轉(zhuǎn)換成一長(zhǎng)串二進(jìn)制bit流之后解碼的關(guān)鍵就是按消息類型去切分bit。以消息1/2/3Class A位置報(bào)告為例它的位偏移表是這樣的字段起始位長(zhǎng)度單位/說(shuō)明消息類型06固定值1/2/3重復(fù)指示器62一般填0MMSI830十進(jìn)制航行狀態(tài)3840在航1錨泊5受限等ROT428轉(zhuǎn)向率單位0.1度/分鐘SOG5010航速單位0.1節(jié)位置精度6011高精度10m0低精度經(jīng)度6128單位1/600000度有符號(hào)緯度8927單位1/600000度有符號(hào)COG11612航向單位0.1度真航向1289單位0.1度511不可用時(shí)間戳1376UTC秒填充位1432補(bǔ)0注意這里說(shuō)的“起始位”是0-based即從bit流的第0位開(kāi)始算。經(jīng)度占28位而緯度占27位是因?yàn)榻?jīng)度范圍是±180度乘以600000后需要的bit長(zhǎng)度和緯度不同。這個(gè)不對(duì)稱是小學(xué)算術(shù)就能推導(dǎo)的但實(shí)現(xiàn)時(shí)很容易把兩個(gè)長(zhǎng)度搞反建議把這段位偏移表寫(xiě)死成常量數(shù)組。def extract_bits(bits: str, start: int, length: int) - int: 從bit流中截取指定字段并轉(zhuǎn)成int chunk bits[start : start length] return int(chunk, 2) if chunk else 0 def decode_msg1(bits: str): msg_type extract_bits(bits, 0, 6) mmsi extract_bits(bits, 8, 30) sog extract_bits(bits, 50, 10) / 10.0 lon_raw extract_bits(bits, 61, 28) lat_raw extract_bits(bits, 89, 27) lon lon_raw / 600000.0 if lon_raw else None lat lat_raw / 600000.0 if lat_raw else None cog extract_bits(bits, 116, 12) / 10.0 true_heading extract_bits(bits, 128, 9) return { type: msg_type, mmsi: mmsi, sog_kn: sog, lon: lon, lat: lat, cog_deg: cog if cog 360 else None, heading_deg: true_heading if true_heading ! 511 else None, }邏輯說(shuō)明MMSI是30位的十進(jìn)制數(shù)直接轉(zhuǎn)int就行不用做符號(hào)處理。SOG是10位無(wú)符號(hào)數(shù)單位0.1節(jié)轉(zhuǎn)float后除以10。經(jīng)緯度因?yàn)橛胸?fù)數(shù)存在理論上需要處理二進(jìn)制補(bǔ)碼但實(shí)際中很少看到西經(jīng)或南緯的極端值簡(jiǎn)單按無(wú)符號(hào)數(shù)處理然后判斷是否超范圍再取負(fù)號(hào)也可以。COG的360度上限決定了一個(gè)特殊值當(dāng)COG原始值等于3600時(shí)表示不可用所以用cog 360做過(guò)濾。真航向的511即原始值511表示不可用在消息里通常是“無(wú)航向信息”如果不做過(guò)濾會(huì)把511當(dāng)511.1度解析出來(lái)出現(xiàn)一個(gè)幾乎不存在的航向。3.3 消息5靜態(tài)數(shù)據(jù)解析多語(yǔ)句拼接后再解碼消息5是AIS靜態(tài)數(shù)據(jù)報(bào)文里信息量最大的一條但它會(huì)被拆成兩條NMEA語(yǔ)句發(fā)送各攜帶168bit和256bit加起來(lái)正好是424bit。如果只解析其中一條語(yǔ)句拿到的就是半截?cái)?shù)據(jù)船名、目的地這些字段會(huì)錯(cuò)位。實(shí)現(xiàn)上要先按“語(yǔ)句條數(shù)”和“當(dāng)前語(yǔ)句序號(hào)”做拼接def assemble_static_report(parts: list[str]) - str: parts: 同一消息ID下的多個(gè)payload字符串按語(yǔ)句序號(hào)排列 返回拼接后的完整bit流 total_bits for payload in parts: total_bits .join(char_to_bits_fast(c) for c in payload) return total_bits拼接時(shí)要注意兩個(gè)邊界條件第一條語(yǔ)句和第二條語(yǔ)句的填充位不同第一條通常填充位是0第二條因?yàn)榭傞L(zhǎng)度424mod6的原因填充位是2分別去掉各自的填充位再拼還是先拼后去尾先拼后去尾更簡(jiǎn)單因?yàn)閮蓷l語(yǔ)句的payload拼接后只有最后一條語(yǔ)句末尾才有填充位中間不存在填充位問(wèn)題。但必須確認(rèn)第一條語(yǔ)句的payload長(zhǎng)度是28個(gè)字符第二條是42到43個(gè)字符如果接收機(jī)給的是別的長(zhǎng)度多半是數(shù)據(jù)鏈路層出了問(wèn)題。消息5的字段布局消息類型(6bit) MMSI(30bit) IMO(30bit) 呼號(hào)(42bit7個(gè)6-bit字符) 船名(120bit20個(gè)6-bit字符) 船舶類型(8bit) 船長(zhǎng)船寬(30bit) 吃水(12bit) 目的地(120bit20個(gè)6-bit字符) ETA(20bit)。船名和目的地這類字符串字段是直接用6-bit字符表反向映射的也就是把每個(gè)6-bit值查表轉(zhuǎn)回字符。def bits_to_text(bits: str) - str: text_chars [] for i in range(0, len(bits), 6): v int(bits[i : i 6], 2) text_chars.append(AIS_CHARS[v]) return .join(text_chars).strip( )這個(gè)函數(shù)最坑的地方是字符串末尾會(huì)帶空格填充和“”填充符。AIS協(xié)議規(guī)定文本字段不足長(zhǎng)度時(shí)用空格補(bǔ)位多余用符號(hào)填充。所以解析出的船名可能是“COSCO SHANGHAI”必須用strip( )把末尾的和空格清掉。但注意不能strip掉中間的空格否則“MAERSK LINE”會(huì)變成“MAERSKLINE”對(duì)船名匹配會(huì)出問(wèn)題。4. 把解析器接到真實(shí)數(shù)據(jù)流串口、TCP日志和消息分發(fā)的完整工程4.1 數(shù)據(jù)源接入方式serial讀取與socket接收的兩套模板AIS接收機(jī)常見(jiàn)輸出是串口RS232或USB轉(zhuǎn)串口和網(wǎng)絡(luò)TCP/UDP。串口場(chǎng)景下用pyserial核心參數(shù)是波特率38400、8位數(shù)據(jù)位、1位停止位、無(wú)校驗(yàn)。這是AIS接收機(jī)的默認(rèn)配置少數(shù)設(shè)備支持切換接不上時(shí)先檢查波特率再懷疑線序。import serial ser serial.Serial( port/dev/ttyUSB0, baudrate38400, bytesizeserial.EIGHTBITS, parityserial.PARITY_NONE, stopbitsserial.STOPBITS_ONE, timeout1, ) while True: line ser.readline().decode(ascii, errorsignore).strip() if line.startswith(!): process_sentence(line)這里有個(gè)性能陷阱串口readline在數(shù)據(jù)量大時(shí)會(huì)阻塞AIS數(shù)據(jù)密集時(shí)可能出現(xiàn)緩沖區(qū)溢出。建議把串口讀取放到獨(dú)立線程解析主線程用隊(duì)列接收避免IO阻塞影響解碼吞吐。timeout1保證即使沒(méi)有數(shù)據(jù)readline最多阻塞1秒不會(huì)把線程卡死。TCP場(chǎng)景更簡(jiǎn)單AIS TCP服務(wù)器通常直接輸出文本流用socket加readline循環(huán)即可但要做好斷線重連。很多岸基AIS設(shè)備用的是TCP 4001端口或者其他自定義端口接入時(shí)要先確認(rèn)設(shè)備的手冊(cè)不要想當(dāng)然用23。4.2 按消息類型分發(fā)從一句話到軌跡入庫(kù)的管線設(shè)計(jì)一條完整的AIS解析管線至少要有三層接入層負(fù)責(zé)讀取和校驗(yàn)解碼層負(fù)責(zé)把payload轉(zhuǎn)成結(jié)構(gòu)化對(duì)象業(yè)務(wù)層負(fù)責(zé)按消息類型分發(fā)到軌跡緩存、船舶檔案、告警模塊。分發(fā)邏輯有一個(gè)常見(jiàn)的坑消息1/2/3都是位置報(bào)告但消息類型字段在第0到第5位必須先解出消息類型再去分發(fā)不能直接用NMEA語(yǔ)句的前綴VDM/ VDO判斷。def process_sentence(sentence: str): if not sentence.startswith(!): return parts sentence[1:].split(*)[0].split(,) if len(parts) 7: return if nmea_checksum(sentence) ! sentence.split(*)[1][:2]: return payload parts[5] fill_bits int(parts[6]) bits .join(char_to_bits_fast(c) for c in payload) msg_type int(bits[0:6], 2) if msg_type in (1, 2, 3, 18): record decode_position_report(bits, fill_bits) route_tracker.update(record) elif msg_type 5: pending_static[parts[2]] pending_static.get(parts[2], []).append(payload) if len(pending_static[parts[2]]) 2: record decode_static_report(assemble_static_report(pending_static.pop(parts[2]))) ship_profile.update(record)邏輯說(shuō)明parts[2]是NMEA語(yǔ)句的消息ID字段用于關(guān)聯(lián)同一條消息5的兩個(gè)分片。如果接收機(jī)連續(xù)發(fā)送多條消息5用這個(gè)ID做key就能避免不同船的靜態(tài)數(shù)據(jù)拼錯(cuò)。fill_bits在這個(gè)分發(fā)層不直接參與解碼因?yàn)槲恢脠?bào)告類消息的fill_bits通常是0而消息5的fill_bits在拼接后統(tǒng)一處理更簡(jiǎn)單。分發(fā)的粒度建議按消息類型分表存儲(chǔ)而不是把所有消息灌進(jìn)一個(gè)大表。軌跡表通常只保留24小時(shí)內(nèi)的位置報(bào)告船舶檔案表則長(zhǎng)期保留靜態(tài)信息。這種設(shè)計(jì)在MySQL里加一個(gè)msg_type索引就能高效查詢?cè)诤A繑?shù)據(jù)場(chǎng)景下比一個(gè)“所有字段可空”的大寬表好維護(hù)得多。4.3 多語(yǔ)句消息的拼裝狀態(tài)管理過(guò)期清理不能少消息5需要兩條語(yǔ)句拼裝如果一個(gè)片段在傳輸中丟失另一片段就會(huì)一直掛在內(nèi)存里浪費(fèi)空間而且可能與下一條消息5的片段混淆。解決辦法是給每條待拼裝記錄加時(shí)間戳超過(guò)5秒沒(méi)湊齊全部片段就丟棄。這個(gè)5秒不是拍腦袋定的AIS的時(shí)隙分配保證一條消息的多個(gè)片段在同一個(gè)無(wú)線電時(shí)段內(nèi)到達(dá)正常情況下間隔不超過(guò)幾百毫秒。pending_static: dict[str, list[str]] {} def buffer_static(payload: str, msg_id: str): now time.time() item pending_static.get(msg_id) if item is None: pending_static[msg_id] {parts: [payload], ts: now} else: item[parts].append(payload) item[ts] now def cleanup_static(timeout5): for msg_id in list(pending_static): if time.time() - pending_static[msg_id][ts] timeout: del pending_static[msg_id]這里的cleanup_static要放在串口讀取循環(huán)里每輪調(diào)用一次或者用定時(shí)器每30秒跑一次否則內(nèi)存里堆積的失效消息會(huì)越來(lái)越多運(yùn)行一天后可能有幾千條垃圾數(shù)據(jù)占著內(nèi)存。5. AIS解析避坑五條會(huì)讓你深夜翻車(chē)的數(shù)據(jù)坑5.1 校驗(yàn)和明明能對(duì)上但解碼出來(lái)的緯度差了幾公里現(xiàn)象從串口讀到的AIS語(yǔ)句校驗(yàn)和全部通過(guò)解碼出的經(jīng)緯度在赤道附近偏差很大個(gè)別點(diǎn)跑到撒哈拉沙漠里去了。原因AIS的payload經(jīng)過(guò)6-bit編碼后如果接收機(jī)輸出的填充位字段第六個(gè)逗號(hào)后的數(shù)字填錯(cuò)了你按錯(cuò)誤填充位裁剪bit流尾部的bit錯(cuò)位會(huì)影響后面所有字段。更隱蔽的是另一種情況語(yǔ)句里帶有回車(chē)換行符如果不做strip最后一位的ASCII碼參與異或時(shí)會(huì)把0x0D也算進(jìn)去導(dǎo)致校驗(yàn)和計(jì)算表里錯(cuò)誤——但恰好某個(gè)接收機(jī)在發(fā)送時(shí)也把回車(chē)換行算進(jìn)了校驗(yàn)兩邊都錯(cuò)校驗(yàn)和反而能對(duì)上。解決解析前統(tǒng)一執(zhí)行strip()去掉\r\n然后強(qiáng)制校驗(yàn)位必須是兩位十六進(jìn)制且校驗(yàn)通過(guò)才繼續(xù)解析。如果發(fā)現(xiàn)填充位不在0到5之間這條語(yǔ)句直接丟棄不要試圖“修正”后再解。5.2 消息5拼裝一直湊不齊兩個(gè)片段但日志里明明有很多消息5現(xiàn)象日志文件里能看到大量!AIVDM,2,1,...和!AIVDM,2,2,...開(kāi)頭的語(yǔ)句但拼裝模塊永遠(yuǎn)只收到第一條第二條遲遲不出現(xiàn)。原因AIS消息5的第二種片段字段2等于2在某些接收機(jī)固件里可能因?yàn)榫彌_區(qū)太小被丟棄尤其是當(dāng)接收機(jī)同時(shí)處理消息1/2/3這種高頻位置報(bào)告時(shí)低優(yōu)先級(jí)的長(zhǎng)消息片段容易被擠掉。另一個(gè)常見(jiàn)原因是你的解析程序用了“按語(yǔ)句序號(hào)硬等”的邏輯如果一個(gè)片段到達(dá)順序顛倒先2后1你的代碼沒(méi)有處理。解決拼裝模塊不要依賴到達(dá)順序用消息ID做key兩個(gè)片段都到了就觸發(fā)拼接只到一條就進(jìn)入等待隊(duì)列。同時(shí)把等待超時(shí)設(shè)短一點(diǎn)3秒即可防止舊數(shù)據(jù)長(zhǎng)期占用內(nèi)存。對(duì)接收機(jī)緩沖區(qū)問(wèn)題可以考慮在配置層面把AIS接收機(jī)的輸出消息過(guò)濾掉消息8氣象、消息27長(zhǎng)距離等非關(guān)鍵類型給消息5騰出帶寬。5.3 船名解析出來(lái)是“COSCO”現(xiàn)象船名字段解碼后船名前面全是符號(hào)后面的名稱順序也亂了。原因AIS消息5的船名是固定120bit即20個(gè)字符協(xié)議規(guī)定船名靠左填寫(xiě)右邊用空格補(bǔ)位。但某些船載設(shè)備尤其是改裝的Class B終端會(huì)把船名靠右填寫(xiě)左邊用填充導(dǎo)致你按標(biāo)準(zhǔn)解析得到的字符串前半段是后半段才是船名。解決解析文本字段時(shí)先做strip( )再用strip()清理空格且不要只做一邊。正確順序是先按字符級(jí)過(guò)濾和空格再拼接成字符串這樣可以避免把“MAERSK EVERT”這種中間夾的字段拆錯(cuò)。更好的做法是保留內(nèi)部空格只去掉首尾無(wú)效字符然后用re.sub(r[\s]$, , name)只處理尾部填充。5.4 SOG出現(xiàn)99.9節(jié)COG出現(xiàn)360度現(xiàn)象解析出的船速經(jīng)常出現(xiàn)99.9航向顯示360但這是在長(zhǎng)江航道里不大可能的物理速度。原因AIS協(xié)議里SOG的可用范圍是0到102.2節(jié)超過(guò)102.2時(shí)用102.3表示“不可用”COG正好是0到359.9度用360表示“不可用”。如果解碼代碼把原始bit直接除以10輸出1023/10102.3和3600/10360就會(huì)被當(dāng)正常值放進(jìn)數(shù)據(jù)庫(kù)。業(yè)務(wù)統(tǒng)計(jì)時(shí)平均值全被這些值拉高了。解決在解碼函數(shù)中設(shè)置業(yè)務(wù)字段的可信范圍SOG超過(guò)102.2或等于102.3直接置NoneCOG大于等于360置None真航向等于511置None。注意是將字段置None還是置0置0會(huì)讓數(shù)據(jù)看起來(lái)像是“靜止在水面上”影響后續(xù)追跡判斷建議統(tǒng)一用None表示未知在數(shù)據(jù)庫(kù)里存NULL。5.5 時(shí)間戳字段解析出來(lái)全是垃圾數(shù)現(xiàn)象消息1/2/3的時(shí)間戳字段在解碼后是隨機(jī)數(shù)和真實(shí)UTC時(shí)間對(duì)不上。原因AIS消息里的時(shí)間戳字段位置報(bào)告里的第137到142位是UTC秒取值為0到59。但很多船載設(shè)備根本沒(méi)有GPS授時(shí)模塊或者GPS信號(hào)丟失這個(gè)字段要么是0要么是60表示時(shí)間不可用。如果你直接用這個(gè)時(shí)間戳作為軌跡點(diǎn)的時(shí)間會(huì)出現(xiàn)整點(diǎn)時(shí)間混亂、時(shí)間倒序等情況。解決業(yè)務(wù)系統(tǒng)里以接收機(jī)收到語(yǔ)句的系統(tǒng)時(shí)間作為軌跡主時(shí)間戳AIS時(shí)間戳只作為輔助參考。存儲(chǔ)時(shí)把AIS時(shí)間戳和接收時(shí)間分開(kāi)兩列方便后續(xù)排查信號(hào)源問(wèn)題。判斷時(shí)間戳是否可用的標(biāo)準(zhǔn)是值在0到59之間且接收時(shí)間與整點(diǎn)的分鐘數(shù)相差不超過(guò)1秒才認(rèn)為有效否則標(biāo)記時(shí)間源不可用。6. 進(jìn)階驗(yàn)證技巧用回放數(shù)據(jù)校準(zhǔn)解析器然后做消息類型擴(kuò)展解析器寫(xiě)完不等于能上線先拿歷史日志做回放驗(yàn)證。方法很簡(jiǎn)單從AIS接收機(jī)日志里截取一段原始數(shù)據(jù)保存為文本文件用支持回放的工具或腳本按原始時(shí)間間隔把每一行重新喂給解析函數(shù)然后把解碼結(jié)果和已知的船位信息做交叉比對(duì)。你沒(méi)有真實(shí)軌跡對(duì)照時(shí)可以抽幾個(gè)邏輯校驗(yàn)點(diǎn)MMSI是否落在合法的9位數(shù)字區(qū)間經(jīng)緯度是否在±180和±90以內(nèi)SOG是否在0到102.2范圍內(nèi)COG是否小于360。這些很容易寫(xiě)成一個(gè)批量校驗(yàn)函數(shù)跑完一輪后統(tǒng)計(jì)異常率。注意回放時(shí)要保留原始語(yǔ)句的順序和間隔不要一次性灌入內(nèi)存后并行處理——AIS的位置報(bào)告消息1/2/3之間是有時(shí)間關(guān)聯(lián)的你并行解出來(lái)的結(jié)果和真實(shí)時(shí)序不一致后續(xù)做軌跡擬合時(shí)會(huì)錯(cuò)亂。按行讀取、按行解析、按行入庫(kù)是最慢但最可靠的方式。消息類型擴(kuò)展方面除了消息5之外消息24Class B靜態(tài)數(shù)據(jù)也是必須補(bǔ)上的。它的結(jié)構(gòu)和消息5有部分相似但字段長(zhǎng)度和位置不同尤其24A和24B要區(qū)分處理——24A帶船名24B帶船舶類型和尺寸。如果你要接的是漁政、內(nèi)河船舶監(jiān)控項(xiàng)目Class B船的比例很高消息24比消息5更常見(jiàn)。具體位偏移參考ITU-R M.1371-5的Table 76和Table 77不要用網(wǎng)上流傳的舊版字段表舊版對(duì)24B的長(zhǎng)度定義和新版有差異。性能優(yōu)化的最后一招Python里直接用int切片再轉(zhuǎn)二進(jìn)制的做法在每秒鐘幾百條語(yǔ)句時(shí)沒(méi)問(wèn)題但到了每秒上千條一個(gè)繁忙港口可能同時(shí)有幾百條船每條船每2到10秒發(fā)一次位置報(bào)告應(yīng)該把6-bit解碼改成查表加位運(yùn)算的批量實(shí)現(xiàn)。具體做法是把payload字符串位置和bit偏移量拆成預(yù)計(jì)算的切片索引表一次循環(huán)里用ord查表替代字符串切片性能能提升3到5倍。如果你的系統(tǒng)目標(biāo)是單機(jī)支撐10000條船同時(shí)在線建議把那層解碼邏輯用Cython或Go重寫(xiě)Python只做業(yè)務(wù)分發(fā)。這套解析器的最后一個(gè)習(xí)慣性動(dòng)作是寫(xiě)監(jiān)控指標(biāo)每接收1000條語(yǔ)句記錄一次有效解碼率、校驗(yàn)失敗率、多語(yǔ)句拼裝成功率。這三個(gè)指標(biāo)能直接告訴你接收機(jī)信號(hào)質(zhì)量是否在惡化、協(xié)議層是否有兼容性問(wèn)題比看日志定位問(wèn)題快得多。我從第一次做AIS接入項(xiàng)目開(kāi)始就養(yǎng)成了這個(gè)習(xí)慣后來(lái)?yè)Q了幾種接收機(jī)、換了幾套傳輸鏈路都靠這套指標(biāo)快速排掉了接入層的疑難雜癥。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香五月自拍| 亚洲成人网站在线| 九九热自拍| 99热这里只有99| 亚洲电影在线观看| 久久婷婷亚洲| 就爱射中文字幕资源网| 亚洲亚洲激情| 日本三级中国三级99| 丁香五月天激情综合| 日日骑夜夜撸| 欧美在线视频免费播放| 91免费试看| 九九热在线99| 婷婷婷久久久| 激情图片五月天| 97碰在线视频| 国产女生爱爱AA| 丁香色五月天| 超碰人人干| 久久er九九| 性热视频99精品| 涩涩涩五月天| 超碰在线国产| 色碰碰| 丁香婷婷少妇| 色五月丁香总合网| 五月天色站| 日日夜夜狠狠| 风流少妇A片一区二区蜜桃| 99视频精品全部观看10| 欧美69色| av高清无码| 欧美内射AA| 欧洲免费视频色| 99久热这里只有精品视频删减版| 日本精品99网站| 淫视馆av三区| 三日本无码| 国产成人精品一区二三区熟女在线| 久久婷婷色丁香| 色婷婷亚洲综合av| 9999热精品| 精品人妻一区二区三区四区不卡在| 六月婷婷久久| 婷婷性福五月天| 插插网爽妇五月丁香| 五月天影院| 99热丁香五月| 久99综合婷婷| 99热啪啪| 99热综合在线| 99免费综合网| 久久ER视频com| 五月天婷婷六月激情网| 五月激情综合激情五月| 五月丁香啪啪啪啪| 五月婷婷狠狠干| 天天干天天 亚洲| 亚洲综合1024| 日韩在线观看亚洲| 婷婷五月天激情网| 国产亚洲精品人人| 婷婷色播综合五月| 五月天精品综合| 综合久久五月| 99热精品9| AV在线中文| 欧美日本va| 这里只有精彩视| 九九热视频免费| 就去涩涩丁香五月天| 色青青视频| 日逼免费视频| 五月欧美丁香在线观看| 五月婷婷九九久久| 成人网在线视频| 黄色毛片精品| 婷婷亚洲天堂| 台湾佬天天日丁香婷婷五月天| 无码激情精品色婷婷久久久久| 色综合性视频| 99精品热视频| 69凹凸成人综合网| 六月丁香停| 久久五月激情综合| 激情丰满熟妇五月| 色中色综合| 久久久精品人妻录| 日本色色色| 国产一级片| 乱精品一区字幕二区| 91se精品国产| 亚洲色啪| 操人妻视频91| 天天插天天射| 日本久久性| wwW天天干| AV伊人青草丁香六月| 森林影视大全,最好看的2019年视频| 亚洲人人操BD| 欧美色婷婷| 欧美99热| 色色色在线观看| 99热欧美在线观看| 五月天婷婷AV| 六六久久黄色| 欧美五月婷婷| 五月婷婷婷婷网| www.狠狠操.co m| 丁香五月婷婷色五月| 国产精品成人av在线观看春天| 日韩精品一品二区三区的使用体验| 激情五月天 婷婷| 狠狠色综合五月人人| 日91高清无玛| 色色综合视频| 开心五月天激情网| 人橾人| Av性爱网| 久久婷婷网| 日本精品人妻无码77777| 丁香五月天社区婷婷| 久久之人妻| 天天精品视频在线观看视频| 五月开心网| 久久久九九视频精品18| 成人丁香五月| 艹色18p| 久久久中文| www.26uuu.com亚洲电影| 五月天丁香综合| 精品一二三区久久AAA片| 蜜桃婷婷狠狠久久| 狠狠干夜夜干| 久久se 综合网| 另类综合激情| 亚洲成人五月| 在线不卡的视频| 五月天色色色| 人人妻人人澡| 婷婷色五月开心五月| 精品婷婷五月天| 97色热| 婷婷五月av| 天堂五月婷婷| 91成人性爱视频| 五月天开心网| 思思99热热热99| 99热精品99| 九月丁香婷婷网| 夜夜骑操AV| 色欲天天综合| 丁香五月AV| 五月天色婷婷成人| 激情综合网亚洲色图| 九热视频| 91久久99久久91熟女精品| 五月天六月婷婷电影| 97久久精品| 婷婷五月综合社区在线| 天天做 天天爱| 色色国产| 色~性~乱~伦~噜| 五月丁香婷婷AV| 中国无码av| 婷婷激情五月| 激情综合网激情五月天| 欧美美女国产日韩一区二区久 | 国产熟妇乱子伦hd| 亚洲九九九九| 影音先锋男人女人| 丁香五月欧美色综合| 婷婷午夜激情| 全亚洲最大的婷婷五月天网站COM| 色丁香久综合在线久综合在线观看| 99热99热不卡| 任你干嘛免费视频播放| www夜夜操| 五月婷婷性爱网| 亚洲人成网亚洲欧洲无码久久| 91久久久久久久久久久| 色婷婷六月性| 色婷婷激情五月天| 五月婷久久综合| 天天天天做夜夜夜夜做| 激情五月婷婷丁香综合网| 激情美女五月天激情在线| 丁香婷婷深情五月亚洲| 他改变了拜占庭| 丁香婷婷久久| 超黄亚洲瑟瑟网站| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品| 久久无码激情视频| 亚州在线中文字幕| 99久久6| 五月天综合色| 色婷精品91| 99re在线观看| 婷婷五月丁香基| 五月婷婷开心色伊人| 无码激情AAAAA片-区区| 激情内射p| 激情婷婷视频在线| 99re热视频这里只精品| 成人色情五月天婷婷丁香| 色狠狠色噜噜AV天堂五区| 日韩黄黄| 在线91日韩| 久久亚洲无码| www.99热国产| 伊人大蕉香| 性生活久久人妻| 2025天天日爽| 99视频精品视频| 亚洲日韩一页精品发布| 精品人妻一区| Xx色综合| 婷婷香蕉香| 月婷婷婷婷五月| 成人婷婷| 五月丁香成人网| 伊人丁香五月| 色天堂A| 色播五月| 五月丁香六月情| 噜噜操操| 99久久超级| 激情六月色| 婷婷五月天久久| 国产人妻777人伦精品HD| 亚洲另类久久| 桃色Av色哟哟| 热久69| 99久在线精品99re8热| 亚洲婷婷视频| 九月婷婷久久| 五月天天久久香| 夜夜夜天天操| 国产婷婷婷| 久久人妻www| 亚洲激情网| 91人妻人人操| 五月丁香久久综合| 玖玖激情网| 狠狠草在线观看| 97韩国久久电影院| 99热久久这里只有精品| 亚洲成人高清在线| 大香蕉啪啪啪啪啪啪| 久久a热| 激情丁香五月天图片| 久久婷婷五月天激情新地址| aV欲望人妻中文字幕| 激情五月天婷婷丁香| 激情小说之五月| 天堂久久精品| 久热re在线视频| 91精品久久久久久综合五月天| 99视频在线精品免费观看2| 五月天丁香网| 激情五月最新网址| 国自产拍偷拍精品啪啪一区二区 | 亚洲第一综合| 五月婷婷激情久久| 五月婷激情| 综合激情网| 婷婷在线综合| 91九色超碰正在播放| 麻豆AV一区二区三区| 婷婷色丁香五月| 激情五月综合网最新| 婷婷激情五月天天天开心| 超碰京东热av男人的天堂| 婷婷久久六月天| 67194成I人在线观看线路1| www.久久久久久久久久.com| av操逼网| 久久性视频| 色婷婷精品视频| 久久九九蜜| 天天草天天爱| 色99视| 久久丁香五月综合六月激情红杏视频 | 婷婷五月天日日日干干干| 九色PORNY9l原创自拍| 久xxxx| 九久热| 操逼五月婷婷| 亚洲AV成人在线观看| 精品亚洲国产成人A片在线鸭王| 大香蕉久艹| 丁香五月成人| 婷婷 伊人 久久| 综合五月天完整| 久热这里只有精品视频6| 99久久99热| 久久综合99| 色五月天堂| 9l视频自拍9l视频自拍九色学生| www.五月婷婷.com| 国产韩日亚洲美州欧亚综合在线| 久久丁香五月综合六月激情红杏视频| 五月丁香大香蕉| 久久草大香蕉| 99热这里只有精品亚洲| 天天射射夜| 婷婷丁香91综合| 日韩AV免费电影在线播放| 国产成人片| 丁香五月AV| 五月花婷婷| 91超级碰碰碰| 亚洲狠狠丁香婷婷香蕉| 久久婷婷草| www热久久yy9| 九九色影院| 亚洲精品99| 26uuu青青| sS丁香五月婷婷| 久婷婷五月激情| 激情六月五月婷婷综合网| 天天综合图片| 天天噪夜夜爽| 天天做天天爱天天玩夜夜爽 | 婷婷丁香婷婷97| 成人亚洲精品久久久久 | 人妻视频在线| 五月婷婷天天色| 国产性色蜜乳| 亚洲精品99| 天天插天天射| 色五月婷婷在线| 超碰日韩人妻在线| 婷婷五月天AV在线| 五月丁香色婷婷伊人| 激情五月无码| 色色五月天婷婷丁香| 五月丁香综合激情| 思思热精品在线观看| 色五月激情网| 九九热免费视频| 婷婷六月激情综合| 久久五月激情综合| 激情婷婷五月色| 人人妻久久妻| 天天爽人人综合免费7799| 免费无码毛片一区二区A片| 婷婷综合丁香| 色五月色五天色情网| 亚洲丁香五月综合| 亚洲综合色网| 国产午夜精品一区二区三区嫩草| 大香蕉人人人| 欧美另类五月激情| 九九色婷婷| 亚洲V国产V欧美V久久久久久| 1024操逼| 久久99久久99久久99人受| 欧美视频在线观看噜噜| 五月天色综合| 国产成人精品一区二三区熟女在线| 操操操91| www天天干| 91色在线 | 日韩| 成人在线99| 日韩精品一曲二曲三曲四曲五曲| 天天日日人| 五月婷婷六月丁香激情| 成人做爰A片免费看视频| 综合久久综合综合| 六月天六月婷| 婷婷伊人网| 亚洲熟妇无码乱子AV电影| 免费AV播放| 亚洲AV电影美洲AV电影| 色婷婷丁香AV综合| 色色婷婷五月| 亚洲色婷婷五月天| 欧美久久婷婷| 亚洲乱码日产精品BD| 久久色五月天| 精品草原久久视频| 国产成人综合亚洲| 激情的五月婷婷蜜桃| 五月婷在线| 婷婷综合婷婷| 久久婷婷成人| 婷婷爱五月| 综合色图婷婷| 欧美天天综合网站上去吧| 99九九玖玖| 色吊丝99| 五月婷婷丁香狠狠撸久久| 丁香五月电影| 无码字幕中文| 99精品久久久久久久婷婷久久 | 久热这里| 丁香五月婷婷婷桃花影院| 天天日,夜夜爽| 99热国产这里只有精品| 五月激情综合网| www色五月| 日韩AV在线免费| 青青草六月丁香| 欧美日韩999| 色六月婷婷| 日韩操| 欧美成人AAA片一区国产精品| 嫩草视频在线观看| 综合网色| 色久天| 91黄址| 丁香五月最新地址| 九九婷婷综合| 色综合色五月| 色10月婷婷视频| 91久久1118| 操人久久| 黄色成人网站在线播放| 丁香婷婷五月综合影院| 五月婷婷激情性爱| 99re热在线视频| 生活片五区| 日本免费91| 五月丁香在线| 操逼毛片国语对白| 99精品性爱| 99热最新| 婷婷五月天伊人| 综合激情啪啪| 国产AV熟妇人震精品一品二区| 日韩黄黄| 男女av免费看| 久久九九色| 日本专区久久| 久久九九网| 丁香五月婷婷无码AV| 婷婷五月天色色| 四五月婷婷| 亚洲精品九九| AV在线大香蕉| 欧美性爱特黄一级aaaassss| 丁香六月成人网| 久久五月丁香| 久久激情综合| 色伦专区97中文字幕| 久久五月丁香综合| 色天堂A| 无码髙清| 久久婷婷五月综合| 中出内射的人妻视频| 色婷婷狠狠18yy| 五月天婷婷在线AN| 色情五月综合婷婷| 操碰色一区就去操| 玖玖资源站蜜臀| 五月丁香婷婷啪啪网| 狠狠狠狠狠干| 婷婷激情丁香五月天综合| 特级西西4444www无码| site:jszngf.com| 天天操天天插| 呦呦视频无码播放| 婷婷激情在线| AV色色天堂中文| 丁香五月欧美激情| 五月 婷婷 成人| 91丨九色丨丰满人妖| 久久小说| 综合久久婷婷| 曰日爽日日操| www.国产亚洲69ty.久久久久久久久久久久| 91av成人| 五月丁香啪啪| 99久久久久久| 五月婷婷开心丁香| 888精品福利地址| 六月婷婷青青青视频| 天天插天天插| 天堂色婷婷| 精品成人无码A片观看香草视频| 秋霞日本免费毛片A片| 亚洲乱码日产精品BD| 狠狠干狠狠干| 成人在线观看一区| 91在线观看九区| 另类图片天天影视在线观看| 五月丁香六月激情欧美综合| 色五月视频无码播放| 婷婷五月丁香综合激情| 精品动漫 无码av| 欧美 日韩 人妻 高清 中文| av中文在线| 久碰视频| www.99在线| 五月丁香日本在线视频观看| 大香av| 刘玥精品一区| 人妻熟人中文字幕一区二区| 五月丁香婷婷基地| 丁香五月日韩| 婷婷色色婷婷| 99爱视频在线| 五月婷婷丁香在线| 青草激情在线| 热热久久久久久久久| 亚洲婷婷五月天在线激情综合网| 亚洲情色一区| 色激情五月| 5Www色5夜| 亚洲亚洲人成综合网络| 婷婷色色网| 国产精品久久..4399| 夜夜爱网站| 欧美天天干天天草| 人人操A| 婷婷丁香五月天欧美| 色色日韩网| 99久久婷| 9 1超碰九色| 婷婷综合网性| 国产综合婷婷| 婷婷五月大香蕉| 亚洲天堂无码| 免费AV在线| 五月丁香婷婷啪啪网| 五月天婷婷激情四射综合| 碰碰碰97国产| 91怕怕网| 激情五月婷婷啪啪| 99在线视频免费| 高清成人综合| 成年人夜夜喷水| 九九热10| 99欧美| 大香网伊人久久综合| 综合网色| caopeng超碰| 日本怕怕视频| 激情五月综合色婷婷| 五月天开心婷婷久久| 狠狠色激情在线| 五月丁香少妇A| 五月色情网| 激情五月婷婷伊人| 另类五月激情| 大香蕉中文| 99在线热| 亚洲色色色| 做爰丰满少妇1313| 婷婷丁香五月社区亚洲| 99碰碰中文| 人妻视频在线| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 1024欧美看片| 丁香五月天激情四射网| www.五月婷婷久久.com| 思思久ren热| 99视频在线观看欧| 九九视频这里只有精品| 丁香花色色网| 伊人在线视频| 丁香五月婷婷亚洲另类| 久久伊人大香蕉| 国产色婷婷亚洲| www开心激情网| 五月婷婷免费在线视频| 色色综合网站| 桃色五月婷婷| 另类视在线| 亚洲激情丁香五月天色| 狠狠草综合网| 色五月91| 狠狠干.com| 久久五月婷婷丁香| 久热2025无码| 五月天播播| 夜夜操夜夜操| 欧美一级毛卡片无码| 操日视频| 亚洲射激情| 丁香成人五月天| 五月丁香婷婷色| 色日本颜射| 538任你爽视频不一样的| 日韩九九视频| 六月合五月婷| 亚洲成人在线播放| 婷婷趴趴| 久久婷婷欧美| 五月丁香六月婷| 亚洲成人AV高清字幕| www.色九月| 深爱网深爱综合网| 综合久久高清| 91色综合久久| 秋霞三级色戒| 99色在线观看视频| 又大又粗九一在线| 伊人久久婷婷| 开心激情网五月天| 国产AV一区二区三区日韩| 色婷婷国产精品综合在线观看| 99热99日…..| 99精品视频偷拍| 六六久久黄色| 久久6这里只有精品| 丁香久月| 日韩三级视频一区二区| 五月天色婷婷视频| 99久在线精品99re8热| 极品少妇婷婷五月| 这里只有精品视频看看| 精品人妻久久久久久| 激情婷婷网| 极品 少妇 内射| 婷婷在线精品| www.色九月| 狠狠五月天激情| 日本三级日本三级99| 97色图片中文字幕视频在线观看| 人人人操97| 99精彩视频| 五月婷婷三级| 激情五月天天狠狠久久| 日本nghangse中文字幕| 五月天久久www| 99热网站| 色9999日韩国产| 色色a| 97ai婷婷| 丁香六月婷婷综合欧美| 九色视频九色九色91jiuseshipin| 六月婷婷六月天天在线免费| 99爱视频在线观看这里只有精品| 人妻九九九九| 91丁香五月| 色五月婷婷激情基地| 亚洲激情97五月天| 五月天色软件| 激情婷婷五月基地| 色99最新网址| 99日这里只有精品| 午夜成人av在线| xxx综合在线| 国产99久久久国产精品免费看| 综合激情伊人影视在线| 婷婷免费视频| site:xiongshengzz.com| 激情综合区| 丁香婷婷九月| 亚洲精品国产setv| 色99网| 丁香五月婷婷基地| 99色在线视频| 亚洲综合成人网| 91丨熟女丨首页| 色吧综合网| 婷婷5月天激情综合| 婷婷五月花| 综合色五月天| 97久久综合网| 天天做夜夜爽| www.久久爱.com| 日本欧美在线| 五月天伊人av| 一级AV片| 99色色色色| 九热视频精品| 五月婷婷啪啪啪| 九九黄色网| 丁香五月色情| 操一操插一插| 久xxxx| 色综合大香蕉| 色婷婷五月天天天天天| 久久久久久久11111111111| 五月天激情婷婷小说| AV中文字幕夜夜操b天天摸bb| 第五色婷婷| 五月婷婷啪啪网| 超碰91在线| 亚洲色色精品| av无码电影| 五月丁香777| 色 丁香婷婷| 色婷婷精品视频在线播放| 五月天伊人| 天天搞夜夜爽夜夜爽| 国产无套精品一区二区| 五月丁香六月婷婷激情视频在线观看免费 | 天天在线久久综合| www.久操| 五月丁香六月激情欧美综合| 99久久成人| 色色色色色综合| 成人片在线播放| 伊人国产婷婷五月天 | 99成人| 狠狠插日日干撸| 欧美在线操| 在线观看免费人成视频无码| 99网99热| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 天天色天天爱天天爱天天爱y| 五月婷在线影院| 亚洲精品久久久久久久久久吃药| 色五月婷婷五月| 丁香五月六月久久综合 | 国产av影片| 青草视频在线播放| 婷婷五月电影| 婷婷五月色丁香在线看| 91人人操.COM| 亚洲av另类在线观看| 97精品自拍| 婷婷激情五月天亚洲综合| 九九色色色| 日韩黄在免| 久久综合爱| 亚洲国产色色| 久久婷婷五月国产色综合激情| 亚洲 成人 电影av在线观看| 五月花婷婷| 天天插天天日| 激情二色月| 久久98| 色99免费视频中文| yazhoujiqingav| 五月丁香六月婷婷久久| 五月开心激情| 五六月丁香激情视频| 久9热| www.久久婷婷| 青吴乐视频| 色综合色色| 久久久五月五丁香| 桔色成人在线| 五月色情网| 激情婷婷| 色婷婷88| 婷婷色情五月| 五月婷婷综合成人| 色爆五月| 另类图片五月天| 激情五月婷婷综合| 激情五月天综合网| 久久机热/这里只有精品| 精品人妻久久久| 婷婷五月天AV| 91蜜桃婷婷狠狠久久综合9色| 狠狠操狠狠操| 九九激情视频| 丁香五月六月欧美| 六月婷婷日| 九九热在线亚洲免费视频| 五月天婷婷操逼视频| 日本情色一区二区| 亚洲黄色操逼| 综合色在线| 亚洲国产精品VA在线看黑人 | 五月婷网| 中文无码婷婷| 一逼色综合| 91色综合网| 中文字幕,综合,91| 六月丁香婷婷色狠狠久久| www.99久久久久99| 国产综合丁香五月天| 9l视频自拍九色9l黑人| 五月激情综合婷婷| 九九色插| 最熟少妇乱码| 日韩三级视频一区二区| 日本在线观看aaa 99| 欧美久久久中文字幕| 超碰97在线观看免费| 五月丁香色停停啪啪啪| 美女久久天堂| 免费观看高清无码| 偷拍99在线视频观看| 精品九九久久| 一起肏在线视频| 成人在线日韩欧美| 婷婷五月电影| 五月丁香啪啪啪| 婷婷香五月天| 亚洲成人在线播放| 少妇被下春药玩弄A片| 亚洲欧美在线观看| 国产毛片操B| 婷婷日韩| 嫩草视频观看| 99ri精品视频在线观看| 99这里有精品视频3| 丁香六月天婷婷在线| 色婷婷精品小视频| 国产精品久久久丁香五月八戒视频| 噜噜噜精品欧美成人在线观看| A网在线欧洲| 五月色婷婷综合| 日本99在线视频| 激情伊人五月天| 538在线精品| 亚洲AV成人一区二区在线观看| 激情婷婷22月间| 日韩日比视频| 秋霞黄色一级久久| 丁香婷婷啪啪啪| rr天天操| 超碰99在线| 69精品人人人人| 色约约视频一区二区三区四区五区| 中文在线成人| 婷婷五月天综合激情| 午夜性爱影视一区77| 人人草人| 成人看片网站| 色婷婷网大全在线| 五月婷婷激情日本| 日韩 欧美 国产 一区 二区| 激情五月天婷婷视频| 五月丁香偷拍| 四色永久成人网站| 狠狠爱丁香婷| 五月丁香91| 丁香六月成人网| 第四色大香蕉| 九九热精品在线| 97超碰99热99| 精品思思久久| www.五月瑟| 97人人操人人爽| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 丁香五月天堂网| 教师性爱毛片| 99在线热| 久热精品视频| 亚洲99热| 综合 蜜月 婷婷| 色色无码日韩| 久久机热/这里只有精品| 99热这里只有精品免费| 婷婷WWW久久| 色色色777| 五月天另类小说| 久久激情综合| 国产精品色婷婷久久久精品| 婷婷久久五月天亚洲欧美国产日韩在线观看| 久久思思精品| www.99热| 色综合丁香婷婷| 久久久久99精品成人片| 日本久久网| 四射综合网| 中文无码精品一区二区三区| 翔田千里 50岁 无码| 婷婷丁香六月天| 五月婷婷开心亚洲无| 久色婷婷200| 精品国产乱码久久久久久免费 | 久热免费视频| 久久99人人| 婷婷五月综合婷婷| 丁香久久综合| 婷婷丁香综合色AV| 婷婷六月插屄激情| 夜夜谢天天干| 久久婷婷色情7777网站| 深爱激情丁香五月| 香蕉人妻AV久久久久天天| 99热都是精品| 97操碰在线视频| 五月停视频天堂| 99热久久这里只有精品| 日本综合色色| 婷婷六月综合基地| 丁香婷婷五月基地| 久久久亚洲精品一区二区三区浴池| 九九色人| 色五月色图| 伊人大香蕉在线视频| 五月天婷婷黄色| 激情婷婷丁香| 五月开心婷婷网| 人人澡玖玖一| 亚洲乱码w在线观看| 激情VA视频| 婷婷五月天久草在线| 五月丁香婷婷激情久久| 日日干夜夜干| wwwss在线观看| 久久久久久久97| 国产亚洲网站在线| 天天爽天天日| 丁香五月www| 色吧五月婷婷| 91熟妇大香蕉| 婷婷色爱| 九热av| 九九热经典视频在线观看| 亚洲宗合激情| 九九在线免费观看| 欧美午夜乱妇午夜福利| 五月天婷婷六月| 五月婷婷丁香| 五月综亚洲| 97精品人人A片免费看| 色必久悠悠影院| 成人做爰A片免费看视频| 丁香五月婷婷婷婷欧美综合| 色婷婷狠狠| 丁香五月六月久久综合| 97人人操人人干| 天天色综合色色色色色。| 久热超碰| 色婷丨日丨天丨综合久久| 国产精产国品一二三在观看| 五月天婷婷影院影院| 五月丁香综合精品欧美| 色色色色色色色色色色色色色色,网站| 婷婷五月天综合久久日美女| 丁香婷婷成人网| 婷婷丁香综合| 人妻激情综合| 五月丁香| 亚洲精品又粗又大又爽A片| 五月色欧洲| 99在线视频网址在线观看| 激情五月丁香六月| 欧美色色色色色色| 无码啪啪| 婷婷五月在线综合| 日韩av手机在线观看| 婷婷开心久久| 六月婷婷九月丁香| 九九热这里| 色五月天天| 91九色 熟| 夜夜大香蕉婷婷丁香| 日韩无码专区| 777精品久无码人妻蜜桃| www.丁香五月| 久久99综合网| 丁香色色网| 欧美日本一区二区三区| 久久久精品99| 99热这里有精力| 丁香色啪综合| 亚洲人成网站999久久久综合| 99操免费视频| 国自产拍偷拍精品啪啪一区二区| 丁香5月婷婷| 神马欧美精| 99re久久| 精品久久66| 色热久| 午夜69成人做爰视频| 夜夜躁爽日| 狠狠综合久久| 久久色六月| 色婷婷天堂| 伊人大香五月天| 九色激情| 成人丁香五月| 五月丁香六月激情啪| 99re在线精品视频| 国产欧美性成人精品午夜| 99视频这里有精品| 青青草搞屄视频网站| 亚洲不卡123| 婷婷综合激情| www激情五月天| 成人午夜无码视频| 天天日日| 思思久久精品| 99re鈥哸鈥唙| 欧美群妇大交乱婬网| 99久久終合| 大香蕉九九| 激情五月婷婷在线观看| 五月天免费色| 大香蕉狼人久久| 成人无码精品1区2区3区免费看| 停婷丁五月在线| 亚洲五月天天| 婷婷99狠狠躁天天躁中| 色婷婷很很十八禁| 色五月婷婷久久| 99无码黄色视频| 五月亚洲激情| 色哟哟精品| 婷婷色综合中心站| 日本99热| 99精品视频偷拍| 色欲AV导航| 新99色色色色色色| 欧洲亚洲午夜| 5Www色5夜| 99久久9| 五月天激情久久| 婷婷五月天堂一本在线| 亚洲激情免费久久| 亚洲视频五区| 日本123区日韩欧美不卡在线看| 嫩草AV久久伊人妇女超级A| 爆乳熟妇一区二区三区爆乳照片| 五月综合缴情网| 99精品色色| 日韩成人av在线| 色玖玖玖| 中文婷婷狠狠| 欧美成人AAA片一区国产精品| 亚洲超碰在线| 99热在线播放| 五月婷婷人妻| 激情五月天之五月婷婷| 91蜜桃婷婷狠狠久久综合9色| 97日本在线| 大香蕉视频婷| 免费黄网不卡AV| 可以免费观看的AV| 丁香五月天激情视频| 欧美99视频| 久久综合五月| 热思思| 武汉美女啪啪视频免费一级片| 色情丁香五月天| 九九视频免费| 欧美日本VA| 五月停亭六月,六月停亭的英语| 亚洲AV无码一区二| 国产a视频| 91seAV| 国产精品24r| 碰99在线| 九九精品免费视频99| AA片在线观看视频在线播放| 99久久99久久综合| 丁香五月色| 思思精品视频| 丁香五月伊人| 丁香五月手机在线| 色情五月婷婷| 天天干天天日天天操| 中文字幕在线观看视频www| 国産精品| 久久五月天婷婷| 五月婷六月| 婷婷六月啪啪| 超碰在线国产| 色99视频| 国产又黄又爽又色的免费| 六月丁香五月婷婷| 亚洲中文字幕在线观看| 熟妇内谢69XXXXXA片| 做爰丰满少妇1313| 激情玖玖sh| 好叼操在线观看| 婷婷五月另类网站| 涩 五月 婷婷 狠狠| www久久久久| 国产精品美女| 九九99精品| 永久的网站AAAA| 人妻内射麻豆视频| 白天AV月月| 色情五月天A片| 久久只有18视频| 人妻aV在线| 99热婷婷| 777精品久无码人妻蜜桃| 性生生活大片又黄又| 日韩五月婷婷久久| 91丨九色熟女丨首页| 啪啪婷婷五月天激情| 99re在线观看| 婷婷 激情 五月| 欧美婷婷五月| 天天做天天爱天天玩| 大香蕉伊人99| 久久婷婷色| 99超超碰| 欧美婷婷精品激| 91viP在线看| 第二色AⅤ| 色色COm| 婷婷 伊人 久久| 99re8在这里只有精品| 色日本颜射| 伊人玖玖综合| 激情小说五月天社区丁香| 久久午夜理论| 天天操婷婷| 五月丁香六月成人| 日本一级淫| 4399伦理午夜| 激情六月丁香综合| 国语精品探花| 影音先锋色婷婷| 亚洲精品久久久无码| 久久网婷婷| 天天干,天天舔| 亚洲五月情| 色五月91| 中日韩美欧成人一区二区精品在线| 婷婷丁香五月激情密臀av| 婷婷五月丁香基地在线视频官网| 青青福利网| 日韩在线视频中文字幕| 国产精品18久久久| 色五月大香蕉婷婷| 五月天五月色婷婷综合| 26uuu亚洲精品国产| 丁香久久| 九九精品丁香花| 五月丁香狠狠爱| 久99热| 99热免费在线| 91免费试看| 久久99热只有精品| 青草少妇激情| 综合婷婷| 神马欧美精| 丁香五月狠狠综合欧美| 日韩成人电影在线播放| 日本啪啪视频HD| 大香蕉久艹| 天天婷婷色六月| 激情综合亚洲| 狠狠色丁香久久| www激情网| 五月天婷婷激情小说电影| 日韩有码一区| 99热在这里只有免费精品| 久草大| 婷婷色情 | 丁香五月久久| 亚洲中文乱字字幕在线永久| 亚洲亚洲人成综合网络| 婷婷色五月激情强奸四射| 亚洲一区二区无码蜜乳av| 九九热精品视频| 成人资源在线| 丁香婷婷色五月天| 天天肏夜夜肏| 国产精品色婷婷99久久精品| 日本va视频| 丁香九月激情| 51成人| 五月丁香婷婷AV| 狠狠一日| 免费的日逼视频| 色综合久久天天综合网| 97人人操com| 99热在线这里只有精品| 丁香五月手机在线| 精品99在线| 五月人妻婷婷视频| 五月婷婷久草| 五月色无码| 色婷五月天| 色综合com| 九九青草热| 六月综合婷婷开心伊人| 久久人妻在线| 中文幕无线码中文字蜜桃| www亚洲无码| 国产熟妇的荡欲午夜视频| 亚欧州精品视频| 婷婷久久色| 色色色色色色色色色色色色色色,网站| 五月久久噜噜| 99综合网| 99re99在线看| 久久综合中文| 国产精品日日躁夜夜躁| 婷婷五月天六月丁香| 丁香五月婷婷综合激情啪啪啪| 激情丁香网| 亚洲蜜桃精久久久久久久久久久久 | 99丁香五月婷| 激情五月天婷婷五月天| 五月色色色| 五月停停色色丁香| 97色天堂| 日韩成人电影在线播放| 五月丁香少妇| 类似婷婷激情综合网站| 亚洲婷婷丁香五月| 日韩视频99| 人人草碰| 91精品久久久久、久五月天| 五月婷婷亚洲色图| 色天五月天在线观看视频| www,99色| 久草热在线视频| 大香蕉欧美在线| 在线观看免费狠狠色丁香香综合| 婷婷成人在线| 99热这里| 99热在线精品观看| 婷婷五月天av| 丁香五月天AV在线| 久久色情| 五月丁香六月婷婷亚洲激情综合| A片试看50分钟做受视频| 婷婷五月激情片| 99久久欧美| 丁香五月婷老师| 久草a片| 婷婷99狠狠躁天天| 五月色在线| 99∨VTV| 久久成人天| 伊人成综合五月婷婷| 天天爽天天| 九九久久五月天| 色五月婷婷老师| 婷婷永久在线| 九九伦子片| 99成人| 99啪啪| 欧美私人家庭影院| 婷婷激情五月色综合| 五月丁香婷婷婷激情爱爱| 五夜婷婷| 五月天婷婷色紫薇阁| 狠狠一日| 国产日韩欧美性爱| 激情五月丁香五月| 免费无码毛片一区二区A片| 国产精品久久久久久五月天加勒比| 日本nghangse中文字幕| 久久艹99| 99热久久这里只有精品| 91大操| 五月婷婷久久大香蕉| www.激情在线| 超碰色碰碰| 亚洲激情婷婷| 亚洲色色图片| 丝袜熟女一区二区三区| 久久久久久久久99精品| 99热香港| 一区二区传媒视频| 天天操人人干| 激情5月天天天| 任你搞网站| 欧美丰满熟妇BBB久久久| 情趣视频66| 欧美噜噜噜草| 婷婷9月天| 9久精品视频| 开心五月丁香婷婷| 婷婷激情六月综合| 性av| 91丨九色丨白浆| 欧美综合丁香网| 热99在线精品| 嫩BBB槡BBBB搡BBBB| 激情五月天偷拍综合网| 色色色色色级无码| 91久久色| 99视频这里有精品|