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

ARTICLE DETAIL

資訊詳情

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

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

AIS數(shù)據(jù)協(xié)議解析實(shí)戰(zhàn):從NMEA語句到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)信息字段定位繁瑣的問題。文檔系統(tǒng)講解AIS報(bào)文的數(shù)據(jù)格式、VDM/VDO語句類型、A/B信道指示、填充位、8位CRC校驗(yàn)、多語句拆分重組及 結(jié)束標(biāo)志并給出C語言實(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è)備開發(fā)、船舶監(jiān)控平臺(tái)搭建和協(xié)議二次開發(fā)時(shí)的參考手冊(cè)。1. AIS數(shù)據(jù)協(xié)議解析從一串NMEA語句里還原一條船的實(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”開頭、逗號(hào)分隔、看起來像亂碼的文本行。AIS數(shù)據(jù)協(xié)議解析的核心工作就是把這串文本按6-bit編碼規(guī)則拆開還原出船名、MMSI、經(jīng)緯度、航速、航向、船長(zhǎng)船寬這些結(jié)構(gòu)化字段。這篇文章我會(huì)按我實(shí)際做過的方案來講先講清楚協(xié)議分層和報(bào)文格式再給一套可直接復(fù)現(xiàn)的Python解析實(shí)現(xiàn)最后把調(diào)試中踩過的坑和驗(yàn)證方法一并說透。適合正在做AIS接入、船舶監(jiān)控系統(tǒng)開發(fā)、海事數(shù)據(jù)清洗的工程師新手可以照步驟走熟手可以直接拿走避坑清單。2. 先把AIS報(bào)文鏈路理順從VHF數(shù)據(jù)鏈路到一行NMEA語句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ú)立沒有請(qǐng)求-響應(yīng)關(guān)系也沒有ACK機(jī)制。解析時(shí)不能假設(shè)“發(fā)了A就會(huì)回B”只能按語句一條條解。從數(shù)據(jù)鏈路往上協(xié)議棧大概是這樣的層次物理層是GMSK調(diào)制的VHF信號(hào)數(shù)據(jù)鏈路層是HDLC-like幀封裝網(wǎng)絡(luò)層以上才是我們常說的高層消息——ITU-R M.1371定義的27種消息類型加上后來補(bǔ)充的28、29實(shí)際不超過29種。但這里要說明一下我們實(shí)際開發(fā)時(shí)99%的情況不會(huì)直接從HDLC幀開始處理。市面上絕大多數(shù)AIS接收機(jī)比如Comar、SRT、或者普通的AIS接收模塊已經(jīng)完成了物理層和鏈路層解調(diào)把數(shù)據(jù)以NMEA 0183語句的形式從串口或網(wǎng)口吐出來。所以“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語句格式VDO和VDM的六個(gè)字段必須記清AIS數(shù)據(jù)接入最常見的形式是NMEA 0183語句典型的一行長(zhǎng)這樣!AIVDM,1,1,,A,13u?etPv2;0n:dDPwUM1KV1L,0*5C拆開來看這個(gè)語句以“!”開頭后面是“AIVDM”或“AIVDO”然后是逗號(hào)分隔的字段。這里先記住一個(gè)關(guān)鍵點(diǎn)!AIVDM表示來自其他船的消息!AIVDO表示本船自己的消息。在接收機(jī)日志里兩者都會(huì)出現(xiàn)解析時(shí)一般不需要區(qū)分但如果做的是本船航跡記錄AIVDO就要單獨(dú)處理。六個(gè)字段的含義如下表字段序號(hào)示例值含義11語句條數(shù)一條完整消息可能被拆成多條語句發(fā)送21當(dāng)前語句序號(hào)3空順序消息ID多語句消息用用于關(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在很多單語句消息里是空的這個(gè)不用管。字段5是真正的解碼對(duì)象字段6非常關(guān)鍵——它決定了載荷二進(jìn)制流的長(zhǎng)度是否準(zhǔn)確如果接收機(jī)填錯(cuò)了你解析出來的字段會(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的思維去做算出來對(duì)不上其實(shí)AIS用的是最簡(jiǎn)單的異或代碼里兩行就完事。校驗(yàn)和的作用是在解碼之前先過濾掉損壞語句確保后面6-bit解碼不基于壞數(shù)據(jù)展開。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)在在哪、往哪開、多快。消息5船舶靜態(tài)和航次數(shù)據(jù)Class A船包含船名、船舶類型、船長(zhǎng)船寬、吃水、目的地、ETA需要兩條NMEA語句拼接才能完整解析。消息18Class B位置報(bào)告對(duì)應(yīng)小型船只的B類設(shè)備字段比消息1/2/3少一些。消息24Class B靜態(tài)數(shù)據(jù)替代了B類船沒有消息5的問題分為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)目中用到的消息類型過濾策略位置消息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)告語句的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就要警惕是不是語句拼接順序錯(cuò)亂或者是接收機(jī)輸出截?cái)?。填充位字段字?的取值范圍是0到5因?yàn)樗回?fù)責(zé)補(bǔ)齊最后不足6位的部分。解析時(shí)先把payload每個(gè)字符轉(zhuǎn)成6-bit二進(jìn)制然后把所有bit串起來再根據(jù)填充位字段去掉末尾的無效位得到真正有效的數(shù)據(jù)bit流。這個(gè)過程是整個(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”開始而不是從“A”開始因?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)這段代碼的邏輯說明AIS 6-bit字符表里“0”到“W”的索引就是ASCII減48其中“W”以后到空格之間的字符需要額外減8。實(shí)際項(xiàng)目里我建議直接用映射表查起來更快兩個(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ù)說明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)度單位/說明消息類型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注意這里說的“起始位”是0-based即從bit流的第0位開始算。經(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)度搞反建議把這段位偏移表寫死成常量數(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, }邏輯說明MMSI是30位的十進(jìn)制數(shù)直接轉(zhuǎn)int就行不用做符號(hào)處理。SOG是10位無符號(hào)數(shù)單位0.1節(jié)轉(zhuǎn)float后除以10。經(jīng)緯度因?yàn)橛胸?fù)數(shù)存在理論上需要處理二進(jìn)制補(bǔ)碼但實(shí)際中很少看到西經(jīng)或南緯的極端值簡(jiǎn)單按無符號(hào)數(shù)處理然后判斷是否超范圍再取負(fù)號(hào)也可以。COG的360度上限決定了一個(gè)特殊值當(dāng)COG原始值等于3600時(shí)表示不可用所以用cog 360做過濾。真航向的511即原始值511表示不可用在消息里通常是“無航向信息”如果不做過濾會(huì)把511當(dāng)511.1度解析出來出現(xiàn)一個(gè)幾乎不存在的航向。3.3 消息5靜態(tài)數(shù)據(jù)解析多語句拼接后再解碼消息5是AIS靜態(tài)數(shù)據(jù)報(bào)文里信息量最大的一條但它會(huì)被拆成兩條NMEA語句發(fā)送各攜帶168bit和256bit加起來正好是424bit。如果只解析其中一條語句拿到的就是半截?cái)?shù)據(jù)船名、目的地這些字段會(huì)錯(cuò)位。實(shí)現(xiàn)上要先按“語句條數(shù)”和“當(dāng)前語句序號(hào)”做拼接def assemble_static_report(parts: list[str]) - str: parts: 同一消息ID下的多個(gè)payload字符串按語句序號(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è)邊界條件第一條語句和第二條語句的填充位不同第一條通常填充位是0第二條因?yàn)榭傞L(zhǎng)度424mod6的原因填充位是2分別去掉各自的填充位再拼還是先拼后去尾先拼后去尾更簡(jiǎn)單因?yàn)閮蓷l語句的payload拼接后只有最后一條語句末尾才有填充位中間不存在填充位問題。但必須確認(rèn)第一條語句的payload長(zhǎng)度是28個(gè)字符第二條是42到43個(gè)字符如果接收機(jī)給的是別的長(zhǎng)度多半是數(shù)據(jù)鏈路層出了問題。消息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ì)出問題。4. 把解析器接到真實(shí)數(shù)據(jù)流串口、TCP日志和消息分發(fā)的完整工程4.1 數(shù)據(jù)源接入方式serial讀取與socket接收的兩套模板AIS接收機(jī)常見輸出是串口RS232或USB轉(zhuǎn)串口和網(wǎng)絡(luò)TCP/UDP。串口場(chǎng)景下用pyserial核心參數(shù)是波特率38400、8位數(shù)據(jù)位、1位停止位、無校驗(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保證即使沒有數(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è)常見的坑消息1/2/3都是位置報(bào)告但消息類型字段在第0到第5位必須先解出消息類型再去分發(fā)不能直接用NMEA語句的前綴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)邏輯說明parts[2]是NMEA語句的消息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 多語句消息的拼裝狀態(tài)管理過期清理不能少消息5需要兩條語句拼裝如果一個(gè)片段在傳輸中丟失另一片段就會(huì)一直掛在內(nèi)存里浪費(fèi)空間而且可能與下一條消息5的片段混淆。解決辦法是給每條待拼裝記錄加時(shí)間戳超過5秒沒湊齊全部片段就丟棄。這個(gè)5秒不是拍腦袋定的AIS的時(shí)隙分配保證一條消息的多個(gè)片段在同一個(gè)無線電時(shí)段內(nèi)到達(dá)正常情況下間隔不超過幾百毫秒。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ì)越來越多運(yùn)行一天后可能有幾千條垃圾數(shù)據(jù)占著內(nèi)存。5. AIS解析避坑五條會(huì)讓你深夜翻車的數(shù)據(jù)坑5.1 校驗(yàn)和明明能對(duì)上但解碼出來的緯度差了幾公里現(xiàn)象從串口讀到的AIS語句校驗(yàn)和全部通過解碼出的經(jīng)緯度在赤道附近偏差很大個(gè)別點(diǎn)跑到撒哈拉沙漠里去了。原因AIS的payload經(jīng)過6-bit編碼后如果接收機(jī)輸出的填充位字段第六個(gè)逗號(hào)后的數(shù)字填錯(cuò)了你按錯(cuò)誤填充位裁剪bit流尾部的bit錯(cuò)位會(huì)影響后面所有字段。更隱蔽的是另一種情況語句里帶有回車換行符如果不做strip最后一位的ASCII碼參與異或時(shí)會(huì)把0x0D也算進(jìn)去導(dǎo)致校驗(yàn)和計(jì)算表里錯(cuò)誤——但恰好某個(gè)接收機(jī)在發(fā)送時(shí)也把回車換行算進(jìn)了校驗(yàn)兩邊都錯(cuò)校驗(yàn)和反而能對(duì)上。解決解析前統(tǒng)一執(zhí)行strip()去掉\r\n然后強(qiáng)制校驗(yàn)位必須是兩位十六進(jìn)制且校驗(yàn)通過才繼續(xù)解析。如果發(fā)現(xiàn)填充位不在0到5之間這條語句直接丟棄不要試圖“修正”后再解。5.2 消息5拼裝一直湊不齊兩個(gè)片段但日志里明明有很多消息5現(xiàn)象日志文件里能看到大量!AIVDM,2,1,...和!AIVDM,2,2,...開頭的語句但拼裝模塊永遠(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è)常見原因是你的解析程序用了“按語句序號(hào)硬等”的邏輯如果一個(gè)片段到達(dá)順序顛倒先2后1你的代碼沒有處理。解決拼裝模塊不要依賴到達(dá)順序用消息ID做key兩個(gè)片段都到了就觸發(fā)拼接只到一條就進(jìn)入等待隊(duì)列。同時(shí)把等待超時(shí)設(shè)短一點(diǎn)3秒即可防止舊數(shù)據(jù)長(zhǎng)期占用內(nèi)存。對(duì)接收機(jī)緩沖區(qū)問題可以考慮在配置層面把AIS接收機(jī)的輸出消息過濾掉消息8氣象、消息27長(zhǎng)距離等非關(guān)鍵類型給消息5騰出帶寬。5.3 船名解析出來是“COSCO”現(xiàn)象船名字段解碼后船名前面全是符號(hào)后面的名稱順序也亂了。原因AIS消息5的船名是固定120bit即20個(gè)字符協(xié)議規(guī)定船名靠左填寫右邊用空格補(bǔ)位。但某些船載設(shè)備尤其是改裝的Class B終端會(huì)把船名靠右填寫左邊用填充導(dǎo)致你按標(biāo)準(zhǔn)解析得到的字符串前半段是后半段才是船名。解決解析文本字段時(shí)先做strip( )再用strip()清理空格且不要只做一邊。正確順序是先按字符級(jí)過濾和空格再拼接成字符串這樣可以避免把“MAERSK EVERT”這種中間夾的字段拆錯(cuò)。更好的做法是保留內(nèi)部空格只去掉首尾無效字符然后用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é)超過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超過102.2或等于102.3直接置NoneCOG大于等于360置None真航向等于511置None。注意是將字段置None還是置0置0會(huì)讓數(shù)據(jù)看起來像是“靜止在水面上”影響后續(xù)追跡判斷建議統(tǒng)一用None表示未知在數(shù)據(jù)庫(kù)里存NULL。5.5 時(shí)間戳字段解析出來全是垃圾數(shù)現(xiàn)象消息1/2/3的時(shí)間戳字段在解碼后是隨機(jī)數(shù)和真實(shí)UTC時(shí)間對(duì)不上。原因AIS消息里的時(shí)間戳字段位置報(bào)告里的第137到142位是UTC秒取值為0到59。但很多船載設(shè)備根本沒有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ī)收到語句的系統(tǒng)時(shí)間作為軌跡主時(shí)間戳AIS時(shí)間戳只作為輔助參考。存儲(chǔ)時(shí)把AIS時(shí)間戳和接收時(shí)間分開兩列方便后續(xù)排查信號(hào)源問題。判斷時(shí)間戳是否可用的標(biāo)準(zhǔn)是值在0到59之間且接收時(shí)間與整點(diǎn)的分鐘數(shù)相差不超過1秒才認(rèn)為有效否則標(biāo)記時(shí)間源不可用。6. 進(jìn)階驗(yàn)證技巧用回放數(shù)據(jù)校準(zhǔn)解析器然后做消息類型擴(kuò)展解析器寫完不等于能上線先拿歷史日志做回放驗(yàn)證。方法很簡(jiǎn)單從AIS接收機(jī)日志里截取一段原始數(shù)據(jù)保存為文本文件用支持回放的工具或腳本按原始時(shí)間間隔把每一行重新喂給解析函數(shù)然后把解碼結(jié)果和已知的船位信息做交叉比對(duì)。你沒有真實(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。這些很容易寫成一個(gè)批量校驗(yàn)函數(shù)跑完一輪后統(tǒng)計(jì)異常率。注意回放時(shí)要保留原始語句的順序和間隔不要一次性灌入內(nèi)存后并行處理——AIS的位置報(bào)告消息1/2/3之間是有時(shí)間關(guān)聯(lián)的你并行解出來的結(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更常見。具體位偏移參考ITU-R M.1371-5的Table 76和Table 77不要用網(wǎng)上流傳的舊版字段表舊版對(duì)24B的長(zhǎng)度定義和新版有差異。性能優(yōu)化的最后一招Python里直接用int切片再轉(zhuǎn)二進(jìn)制的做法在每秒鐘幾百條語句時(shí)沒問題但到了每秒上千條一個(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重寫Python只做業(yè)務(wù)分發(fā)。這套解析器的最后一個(gè)習(xí)慣性動(dòng)作是寫監(jiān)控指標(biāo)每接收1000條語句記錄一次有效解碼率、校驗(yàn)失敗率、多語句拼裝成功率。這三個(gè)指標(biāo)能直接告訴你接收機(jī)信號(hào)質(zhì)量是否在惡化、協(xié)議層是否有兼容性問題比看日志定位問題快得多。我從第一次做AIS接入項(xiàng)目開始就養(yǎng)成了這個(gè)習(xí)慣后來換了幾種接收機(jī)、換了幾套傳輸鏈路都靠這套指標(biāo)快速排掉了接入層的疑難雜癥。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚欧成人一级片在线播放| 天天碰操中国年青熟妇| 人乳av| 动漫爆乳3D奶水一区在线观看| 91劲爆| 亚州少妇| 免费精品福利在线观看| av网站免费看| 欧美日韩久久精品爱爱| 久久大香蕉97| 9999久久久久| 蜜臀久久在线视频| 国产 日韩 欧美 人妻 熟女 中文| 亚洲欧美日韩免费观看| 伊人超碰97| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 九九色图| 日韩另类色图| 国内三级自拍小视频在线观看| 久久只有精品| 91制服丝袜中文字幕| 国产精品网站www| 九九RE视频在线精品| 在线观看成人性爱免费小视频| 久久久久熟女| 久久精品女同亚洲女同13| 天美一二三在线观看Av| 欧美狠狠操| 欧美第一页性| 婷婷五月天成人网| 丝袜夫妻自拍| 有码人妻系列| 91暧暧| 久久99热这里只频精品6学生| 黑人操一区二区| 欧美v日韩v亚洲v最新在线| 97在线播放| 日本顶级天天操狠狠操夜夜操中文字幕| 成人无码专区精品视频| 国产性刺激| 色五月婷婷在线| www欧美性爱| 日韩中文字幕人妻视频| 97干色| 凹凸视频在线一区二区| 婷婷五月天影院| 97综合在线| 天天爽爽爽爽| 亚洲熟妇乱女区二区三区| av资源在线播放天堂| 激情综合网五月婷婷五月天| 欧美成人性爱视频大全| 五月天激情网站| 婷婷五月天激情网| 吉川爱美98堂在线| 台湾佬中文娱乐网久久久久久久久久com| 亚码人妻| 久久这里只精品| 91女日逼| 国产精品制服丝袜清纯唯美| 无码heyzo高清一区| 美腿色图| 蜜臀在线看片| 人人操人人插 - 百度 - 百度| 久久久久久精| 成人乱人伦一区二区| 成人麻豆av电影网站| 天天精品| 大香蕉 222| 美女诱惑在线一区| 亚洲色图片区| 久久性生大片免费观看性| 激情五月天中文字幕色| 欧美日韩国产高清在线一二三区| 色小视频蜜乳| 欧美日本久久精品一区 | 亚洲精品国产av天美传媒| 91精品婷婷国产综合久久竹菊| 91美女视频电影| 94色色电影网| 精品一区二区综合熟妇| 人妻加勒比东京热| 久肏视频字幕| 黄片免费久久久久久久| 亚洲情色一区综合| 久久亚洲一区女同性恋中文字幕| 色网在线视频观看免费| 最新加勒比丝袜在线| 中文字幕AV片| 无码78| 久久人人爽爽人人爽人人片αV| 婷婷五月色| 久久久久亚洲精品| 操屄日韩| 日本欧美成人片AAAA| 五月天久久婷婷亚洲 | 温婉少妇玩3p| 亚洲91网。| 中国特猛少妇色xxx| 国产成人亚洲精品无码古代早漏男| 国产无马av| 东北女人操比视频| 色操逼网| 97碰碰日本乱偷人妻中文的| 亚洲 中文字幕 精品| www.狠狠| 啊啊啊啊免费视频| 婷婷久久网| 九九久久国产精品| 国产操逼网站亚洲一级黄色| 五月婷婷大香蕉| 国产乱人妻精品入口| 黄色免费一级在线毛片| AV天天综合| 色吊丝 日日骚 清纯唯美| 91丨豆花丨熟女| 91丝袜美女| 久久久久国产精品久久久| 亚洲精品a人片在线观看视| 亚洲码和欧洲精品激情系列| 1769国内精品视频| 国产妇女精品视频青青草| 婷婷超| 日本高清电影欧美色图| 国产一级舔足在线观看| 人人超碰在线观看黄| 思思视频免费看网站| 九九九综合精品| 成·人免费午夜在线观看| 日韩人妻大香蕉| 精品国产乱码久久久久久久| 久操大香蕉手机视频在线看 | jizz啪啪| 欧美韩国你懂得在线 | 97国产精品一区二区传媒公司| 蜜乳AV色欲AVAV无码| 加勒比久久av| 超碰国产在线| 亚洲天堂精品日韩电影| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 一本大道久| 精品-91人妻子系列| 奶水 人妻 哺乳 在线| 久久麻豆一区二区| 亚洲成人精品在线一区| 综合色久欲| 久久99网站| 国产高清自拍| 91欧美丨精品丨入口| 久干9操| 亚洲少妇综合| 色哟哟-国产专区| 7777奇米影视久久| 青青草原av| 人妻日日夜夜精品| www网站黄| 国产AV中文| 久久国99999| 欧美疯狂做爰xxxx| 东北少妇高潮zzzz| 亚洲影视第一页| baisiav| 精品九九国产无码| 深夜福利黄片| 亚洲高潮影院| 欧美熟女妇同| 久久国产视频性吧 | 色牛牛AV| 国产精品美女久久久久久网站| 九九国产热| 综合色播| 伊人激情五月天一区二区| 欧美翘臀视频网站一区二区三区| 色偷综合| 欧洲亚洲人妻无码中字久久三区四区| 91精品久久久久久综合五月天| 亚洲97成人在线观看| 久久青青草原免费视频| 欧美精品激情| 色悠久久久av| 激情亚洲天堂| 久久25| 99超级碰免费视频| 日韩黄色电影网站| 东亚亚洲无码高清| 伊人黄色视频免费观看| 亚洲精品免费中文字幕| 丁香九月婷婷| 啊啊啊慢点| 日本精品九九九| 午夜成人福利影视| 国产av青草| 欧美黑人猛交春色影视大全| 色综合五月天| 五月天伊人| 欧洲熟妇xxXx欧美老妇裸体| 又粗又长又爽在线观看| 欧美性生活免费网| 久久久精品91八戒| 日本高清视频xxxx| 香蕉黄色一级视频| 高清无码久操视频| 日本韩国国产精品一区| 欧美大香蕉久| 天天干天天燥| 手机在线中文字幕国产| 一区二区三区黄片免费观看| 久久东京伊人一本到鬼色| 日本韩高清无砖码22o| 亚洲激情视频| 综合另类| 中国AV美女| 国产肏逼网站| 亚洲乱色熟女一区| 屁屁影院一区二区三区国产| 国产农村一一级特黄毛片| 久久久∴| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 成人aⅴ一区二区三区| 日韩国产欧美伦理在线| 黄页视频网站野外| 久久99视频| 久久激情视频| 精品久久久久9999| 自拍第一页| 天天欲望网| 亚洲AV无码乱码| 91丝袜在线观看| 免费视频在线一区二区不卡| 国产一区二区啪啪视频| 久久婷婷五月天| 国产av青草| 老女人碰碰在线碰碰视频| 激情五月天校园春色网| 中出欧美| 久久av成人无码免费| 无码 有码 国产18p| www色色com| 性欧美另类高清| 亚洲情色在线| 天天干人人乐| 亚洲成人性爱网站在线播放| 日韩少妇一区二区三区| 亚洲色图久久成人| 亚洲文学偷乱拍啪啪啪啪| 久久久啊啊啊| 亚洲无码成人精品| 日韩免费人妻色情网站| 欧美日韩人妻少妇 一区二区三区| 妇女乱色二区| 日本成a人v网站在线观看| 日韩人妻一二三区视频| 久久乐| 久久精品国产99国产精品亚洲| 韩日精品福利视频一区不卡在线免| 97精品视频在线| 亚洲成a人v欧美综合天堂下载 | 刺激性视频黄页| 伦理日韩国产久久| 少妇综合网| 狠狠色噜噜狠狠狠狠狠色综合久久 | 婷婷久久综合久| 日本丝袜美腿人妻九九| 亚洲狠狠入| 蜜乳AV.COM| www久久久| 亚洲污污网站| 欧美成人免费在线观看| 久热九九| 熟女久久久| 欧美性爱第一区| 亚洲AV无码| 超碰在线日韩一区| 精品人妻一区| 熟女一区二区三区| 国产婷婷综合在线观看| 亚洲欧洲偷拍一区| 97视频免费播放| 久久久久久国产手机AV| 老鸭窝黄色视频网站| 大香蕉中文| 欧美日韩99| 久久青娱乐| 91人妻素女| 12一15性XXXX粉嫩国产| 九色97| 婷婷五月天色网| 1769一区二区| 欧洲大香蕉| 岛国网址国产| 黑人粗大V S日韩女优视频| 操逼免费视频无码国产| 亚洲性少妇| 国内精品久久人妻性色av| 欧美性爱97超碰| 色婷婷一区二区三区久久| 99久re热视频精品98| 黄页网站成人免费| 日本3级一区二区免费| 欧洲大香蕉| 久久久无码av精| 任我爽在线视频免费观看| 在线观看亚洲专区| 国产精品一二三| 久久久久久AⅤ无码免费肉站| 精吧天堂| 久久久五月天| 日韩97| 欧美精品 - 91爱爱| 人妻81p| 欧美亚洲高清不卡| 色色99| 欧美性性性| 国产av高清版| 激情抓乳插进去啪啪啪日韩| 校园春色家庭伦理欧美激情| 亚洲日韩精品在线播放| 色欧美综合| 欧美中文字幕一区| 国产乱码精品一区二区三区四川| 婷婷人妻激情| 人妻丝袜肏逼| 久热免费视频| 久久精品中文字幕观看| 老妇女91| 新精精品久久精品| 婷婷月色| 亚洲无码国产精品久久| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 激情五月激情综合网| 色欲天天综合久久久无码网中文| 性爱AV天堂| 国产日本久久免费精品| 久久日韩精品一区二区| 深夜激情| 久久久99999久网站| 91free福利| 午夜成人爽爽爽爽A片李冰冰| 日韩啪啪啪视频| 噜噜噜无码AV一级一级久久影院| 日韩无码精品综合久久| 欧美春色| 青草视频人妻在线观看| 淫荡网址| 日韩av电影网站| 免费看污网站| 日本三级黄页| 一区二区三区免费岛国片| 伊人网高清| 国产视频第2页| 91丝袜美腿网站| 久久欧美性爱视频| 可以在线观看AV的网站| 91搞逼视频| 精品国产乱码久久久久久网站入口| 1024手机看片欧美日韩| 成人无码专区精品视频| 超碰在线国产| 偷拍自拍在线视频观看| 久久亚州精品成人Av无| 蜜臀视频网站| 少妇高潮九九九九| 超碰97.com| 色香伊人| 欧美传媒一区| 免费网站观看www在线观| 婷婷色在线| 无码免费精品高清| 日本高清_区二区三区| 伊人一级免费黄片| 欧美亚洲一级在线观看| 久久久久免费看少妇A片特黄| 欧美 色 亚洲| 夜夜欧美| 国产精品香蕉| 亚洲 暴爽 AV人人爽日日碰| 资源新线在线天堂| 久久久久久久9| 天天摸天天操视频| 久久无码精品| 亚洲色图欧美| 亚洲无码视频免费在线观看网址!| 超碰人人干天天射| 狠狠躁伊人中文字幕| 黑丝制服中文字幕 | 久久毛卡| 手机看片1024你懂的国产| 国产精品熟女九色九色蜜臀| 午夜超爽| 青青操狠狠撩| 91碰碰碰| 91视频观看网站| 日本九九久久99播| 亚洲欧洲色情高清| 亚洲精品国产熟女久久久| 精人妻无码一区二区三区伊人直播| 日韩欧美中文字| 综合大香蕉美。| 国产2.3.4区| 丝袜美腿丝袜| 日韩啊V| 亚洲好看强奸乱伦| 岛国在线一区二区三区| 亚洲一区日韩| 亚洲蜜臀懂色| 蜜臀一二三区| 国产97在线 | 亚洲| av黄图片在线观看| 天天干天天操天天干天天操| 欧美精品999| 欧美少妇大量自拍视频在线观看| 91国产大片| 五十路人妻在线| 丰满人妻一区二区三区四区| 69av一区二区三区| 蜜桃臀一区二区aV| 久久HD| 久久精品中文字幕无码l| 国产精品熟女九色九色蜜臀| 久久久久久久国产视频| 色www精品视频在线观看| 天天综合色| 麻豆久久久久久久久丝袜 | 男人的天堂网免费| m欧洲一级午老| 999久久芭蕾| 百度百度日本操逼| 亚洲无码久久久久久久| 天美国产三级传媒| 欧美激情久久久久| 性综合网| 日本中文字幕在线视频| 亚洲视频小说| 91成人无码| 欧美亚洲色图另类国产| 亚洲AV无码天美传媒一区| 极品后入免费视频| 综合97| 99久久久er直播网址| 人妻夜夜爽天天爽麻豆三区网站 | 亚洲城人男人的天堂| 色女免费在线观看视频网址| 青青青国产手线观看视频2| 亚洲黄色影视| 天天影视网色欲色香| 欧美狠狠干| 久久99精品视频| 亚洲涩涩| 秋霞操逼片| 亚洲有薄码区日本系列中文字幕| 91亚洲狠狠色| 秋霞免费AV| 国产精品欧美激在线| 日骚逼视频| 人妻精品视频一区二区| 97视频新免费| 影音先锋视频在线| 福利一级版子| 天天干人人干天天日97| 欧洲一区二区三区免费| 人妻无一区二区三区| 欧美嗯啊……在线观看视频免费| 97超碰美女| 超碰av在线| 日本幼女18+| 入口操逼网站| 成人麻豆av电影网站| 久久伊人在线五区| 国产一国产一级毛片古装| 伊人色综合网| 美女久久久久久久久久久| 五月婷婷六月丁香| 九九九网站| 国产欧美日韩女同性恋ww喷水精品| 91综合无码| 色婷婷五月天| 东京热男人的天堂| 天天干天天日天天射黄色大片| 91色拍| 欧美少妇第一页| 久久精品国产AV一区二区三区| 一区=区三区视频| 日韩免费中文字幕视频| 麻豆精品A片免费观看| 无码精品久久| 欧美综合狠| 丁香五月天堂| a级免费在线观看| 91暧暧| 久久riav中文精品| 99操逼| 久久精精区一区二区一蜜桃一区二区| 久久97| av麻豆啪啪| 美国日韩黄色片| 精品国产乱码久久久久久久| 欧美成不卡网| 图片区小说区| 日韩三级伊人| 亚洲欧美综合网站| 九色97| 亚洲激情在线观看一区| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 国产精品青草综合久久| 国产综合色精品在线观看| 天操老女人| 免费一级欧美片片线观看| 亚洲色图图片| 是还免费视频1727我| 五月丁香六月激情| 噜噜噜在线视频| 97久久久网站| 久久久专区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 男人天堂久久精品不卡| 久久久久久中文字幕中文字幕最新| 欧美日韩性爱电影在线| 另类欧美综合| 老女人碰碰在线碰碰视频| 婷婷五月综合在线| 欧美一区二区三区入口| 欧美97在线欧| 很狠操| 女人一区| 欧洲天天在线| 久操热线| 国产精品蜜乳AV| 日韩免费中文字幕视频| 精品一区二区三区18| 91爱看| 成人影 天天操 亚洲| 凸凹视频在线观看| 97爱免费插| 亚洲AV无码成人精品久久| 亚洲 小说 欧美 激情 另类| 青草成人免费视频一COm| 久9久精品视频| 天天综和| 色一射色一射| 欧美激情总合网| 五月婷婷爱六月丁香色| 人妻乱仑一区二区三区| 天天弄天天操| 无码 黑人一区二区三区| 午夜超碰| 久久一二三四| 91亚洲网| 久久久久久性爱免费视频| 精品丰满熟妇人妻一区| 91精品国产长腿丝袜美女| 女人的天堂大香蕉网| 丝袜性亚洲| 热天堂一区二区| 日韩欧美视频青青| 久久色人体| 亚洲av在线免费观看| 2024人人操人人摸| 大香蕉AV在线| 六月丁丁香| 99热免费| 欧美熟妇视频 | 综合久久久久久久久91| 国产精品第一区第一页| 日韩激情电影中文字幕| 一级片视频啪啪| 国产无码三级视频在线观看| 100啪啪视频大全| 日韩中文字幕视频| 久久男人精品| 欧美三级中文字幕hd| 成人福利视频网| 婷婷天堂站| 亚洲无码色| 91久久国产综合久久| 人妻久热在线| 亚洲 欧美 小说| 99re这里| 久久9精品| 亚洲欧美天堂| 少妇无码av专区线| 精品亚洲国产成人AV制服丝袜| 国产精品久久久鸭无码的功能| 91色婷婷综合久久中文字幕二区| 亚洲黑丝在线| 啊啊啊不要啊啊受不了了视频在线| 大肉棒导航| 欧美第五页| 亚洲国产精品成人久久蜜臀| 五月丁香六月综合缴清无码| 插日本熟女视频| 五月天伊人| 中文字幕天天天天天| 亚洲欧洲无码一区夜| 国产精品丝袜在线| 中文字幕日韩专区精品系列| 久久精品店| 婷婷久草一区二区三区| 精品人妻一区二区三区视频| 久久欧美激情| 欧美呦呦性爱| 一区二区三区精品黑丝白丝酒店对鸡| 成人日本精品九区| 色狠狠一区二区三区香蕉| 黄片免费日韩| 色婷婷视频| 欧美伦乱爱| 香蕉99秘 一区精品蜜桃臀| 男人天堂黄片| oumeisetu综合| 麻豆区久久久久亚| 强被迫伦姧在线观看无码网站| 五月天婷精品激情| 欧美熟妇操操视频| 国产精品乱码久久久久| 久久免费精品视频免一| 大香蕉99热| 熟妇视频一区二区三区在线| 爱av免费| 中文字幕久久亚州无码| 88xx成人精品视频| 日日日日日| 精品无码一区二区三区| 26uuu偷拍亚洲欧洲综合| 五月天伊人| 怡红院亚洲怡春院av| 肏逼福利网站| 青青网三级视频| 精品视频一区二区| 欧美日韩国产高清在线一二三区 | 99热这里| 玖玖无码超碰| 国产三区免费在线观看| 98精品国产乱码久久久久久| 国产精品99999| 九九黄色网| 亚洲欧美91√| 亚洲无码久久久久久久| 精品中文日韩字幕视频| 亚洲图片日本AⅤ欧美在线| 国产精品女同| 天天综合97| 国产少妇与亚洲av| 亚洲人成在线放东京热| 久久久精品国产亚洲伊人| 91N综合网| 中文字幕在线免费观看视频| 草B在线| 在线性黄高清免费视频| 制服诱惑亚洲一区二区三区在线观看| 国产乱伦亚洲| 日产成人久久| 熟女突然公开看18禁影片 | 99人人干| 97精品在线视频| 天天插天天插| 校园春色综合网| 亚洲情色婷婷五月天| 国产精品人妻无码久久久互動交流 | 欧美午夜色妇色鬼| 国产黄色视频久久| 婷婷15月天青娱乐| www.av在线观看| 91美女视频直播| 一二三区在线| 日韩综合无码一区久久92| 情色av电影| 日韩欧美aⅴ综合网站发布| 色网综合网| 日本性爱少妇| 综合网 欧美| 久久25| 国产毛片久久久久久久| 狠狠干妹子| 色情综合网| 翔田千里A片一区二区| 91熟女综合| 日本3级一区二区免费| 91天美| 九一精品牛牛一区二区| 日本精品不卡一二三区| 亚洲天堂男人天堂网| 精品国产99| 国产精品久久伊人| 天美传媒婬乱| 男女性扦B| 男人的天堂啪啪啪啪啪蜜桃不卡| 亚洲欧洲日本精品中文a∨| 亭亭在线资源| 精品国产乱码久久久久久久久1 | 天美av在线观看| 无码精品久久久天天影视| 丝袜天堂网| 一二三四免费视频| 日韩欧美午夜一区二区| 亚洲欧美综合图片| 欧美高清性猛交| 国产超碰| 色哟哟综合| 免费在线视频97| 天天干美少妇一区| 天天草夜夜草高潮片| 亚洲 欧美综合| 96爱综合| 啊…啊…操我用力操我| 眼镜人妻101.com| 大香蕉伊人色偷偷在线| 精品久久久av无码免费| 免费超碰97久久| 久久久999网站| 亚洲无码久久久久久久| 亚洲AV成人无码一二三久久| 亚洲综人网| 99只有精品| 熟女人妻久久中文字幕一二区| 亚洲国产婷婷在线播放| 亚洲图片欧美色图| 变态综合色| 99精品丰满人妻无码| 亚洲综合码| 99热精品在线观看| 国产精品成人蜜臀AV在线| 熟妇乱伦一区二区| 亚洲资源站| 91狠狠狠| 天操天操夜操夜月操月年年操操| 久久超碰、| 视频在线观看一二三区| 婷婷五月综合在线| 国内精品伊人久久久久影院会| 日韩无码视频黄色| 蜜乳中文字幕a在线| 欧美天天干| 蜜臀久久99精品久久久久久成人小说 | 大粗鳼巴久久久久| 大屁股熟女一区二区三区| 久久大陆| 蜜臀久久久国产| 人妻社区男人天堂| 影音综合网| 久久9亚洲| 91neishe| 日韩精品三区四区| www.狠狠干.coom| 97中文超碰| 98一区二区精品| 91亚州日韩高清| 日日夜夜狠狠| 欧苏综合色综合| 人妻少妇久久久| 久久极品一区二区| 精品超碰中文在线| 白丝1区2区3区| 1956日韩精品| 欧美最婬乱婬爆婬性视频 | 伊香蕉综合久久久久久久噜噜噜 | 91春色| 网友自拍第一页| 国产拍偷精品网站| 三男一女不戴套的A片| 欧美v亚洲v综合v国产v妖精| 日韩免费簧片| 欧美一级久久久久久久大片动画| 岛国色情视频在线观看| 在线性黄高清免费视频| 911粉嫩人妻| 麻豆天美电影一区二区| 国产视频三区四区| 四季AV一区二区凹凸精品小说| 精品国产72| 亚洲午夜蜜臀| 日本精品性生活久久久| 久久精品无码熟妇一区二区三区视频导航 | 白丝1区2区3区| 偷拍伦理视频| 日本精品88888888| 日本最新1区2区3区| 精品国产乱码久久久影院| 午夜精品久久99蜜桃的功能章节| 懂色Av| 国产高清免费不卡av| 日韩av一级黄片| 嗯嗯啊在线视频| 国产视频一区二区三区久久亚洲天堂 | 9.1小视频| 国产精品午夜AV完会免费| 国产精品久久久久久高清无码免费看| 日本熟妇人妻中出视频| 五月天色综合| 中文字幕女同在线| 精品玖九九久| 国产精品美女在线一区| 五月天大香蕉| 97色涩| 久久香蕉国产线看观看亚洲女人 | 久久啊啊| 思思热在线cao| 亚洲天堂性爱| 亚洲欧美91√| 精品国产乱码| 啪啪一区| 91精品少妇搡搡搡| 91av熟女人妻| 久久婷婷五月| 大香蕉琪琪日本女优不卡| 亚洲色91| 欧美综合区| 亚洲国产成人精品久久久国产成人一区二区 | 国产精品日本无码A片| www色色色com| 九九九九九用不成了| 久久久天堂| 久久性爱网站| 大香蕉天天看妹子| 老熟女网站| 久久精品国内Av熟女高清| 精品久久久亚洲AV成人网站| 好屌色综合| 乱伦强奸区日韩| 久久精彩免费视频| 99热18这里只有精品| 国产高清自拍视频| 美国aaaaa一级黄片| 婷婷综合五月天| 超碰97综合网| 九九探花视频在线观看| 日韩99神马视频播放| 亚洲图片另类| 狠狠干狠狠色| 欧美午夜熟妇黑人精品91| av网站在线观看了| 性性久久| 国产综合在线视频网站| 久久综合精品一区二区三区| 97亚洲综合在线| 欧美色性爱| 精吧天堂| 久久精品中文字幕观看| 中文字幕久久精视频久久大全| 日日骚中文字幕| 亚州少妇| 嗯嗯啊啊操我| 99热亚洲天堂| 国产成人亚洲精品无| 欧美激情总合网| 欧美天天| 欧美色图亚洲色图成人在在线| 精品91| 亚洲s在线观看| 五月丁香黄色网| 综合网~91综合网| 欧美黄色片在线播放| 激情终合网| 日韩欧美tv一区二区在线观看| 97伪v| 亚洲色图殴美色图激情乱伦| 日本不卡免费二区| 三级片网站在线播放| JuliaAnnXXX888| 99∨VTV| 国产精品内射婷婷一级二| 大香蕉在线视频15| 黄片qw| AV色五月天| 欧美性爱视频免费一区一A | 日韩av不卡在线观看| 色狠狠一区二区三区香蕉| 亚洲av无码成人精品国产| 国产一区在线播放| 女同亚洲欧美一二三区久久电影| 欧美18 在线观看| 成人欧美日超碰| 麻豆啪啪啪视频| 99国产精品| 久草色悠悠在线视频| 国产网红精品| 色综合大香蕉| 欧美 亚洲 制服 精品| 精品少妇999| 一区二区三区蜜桃成人撸久久东京热| 欧美少妇性爱网站| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 大香蕉欧美| 国产无遮挡| 天天躁日日躁AAA片李宗瑞| 久久久97| 91精品久久久久久77777| 激情一区二区三区在线观看| 国产91av在线播放| 欧美亚洲特P| 99热导航| 操狠狠| 玖玖爱免费观看视频| 97超碰色情| 日韩精品一区,二区 九九...老司机| 久久久激情| 韩国午夜理伦三级好看| 热热色青青草| 欧美精品久久| 看黑丝美女操逼青青网站| 睡产熟女乱伦| 久久毛卡| 一区二区三区四区色图| 看黄片视频免费| 欧美亚洲国产91在线| 热G综合热G中文| 欧美亚洲影视| 99色在线| 激情五月天社区| 亚洲暴力强奸AV| 日本人妻最新在线中| 一卡二卡三卡| 狠狠2050在线观看| 国产精品色哟哟| av资源在线观看少妇| 强奸乱伦AV网址| 永久电影三级在线观看| 精品玖九九久| 欧美九一精品久久久熟妇| 天天享受天天看| 9热9热综合网| 91原创在线观看| 久久久com| 亚洲码专区| 欧美日日操| 欧 美 自 拍 偷 拍| 欧美一级AAAAAAA| 亚洲伊人久久综合97| 少妇干B| 日韩操啪| 日韩 国产 欧美自拍| 91 欧美| 青青草好吊色| 美女啊啊啊啊啊| 大鸡巴久久| 91亚洲图片| 国产AV中文| 欧美一区二区| 亚洲se91| 青青草福利视频| 国产精品白丝| 亚洲中文字幕在线视频一区二区| 999精品乱码| 91n欧美| 色香综合天天影视综合 | 超碰在线一区| 国产1024在线播放| 丁香七月婷婷| 国产偷拍网站| 91福利网在线观看| 牛牛AV人人夜夜澡人人爽| 国产日韩无码一区二区三区久久区| 91亚州| 欧美精品成人一区二区在线观看 | 乱伦熟女专区| 国内毛片国产欧美拍| 尤物网址| 亚洲成人无码影院| 亚洲AV秘 精品久久老牛影视| 激情综合网五月婷婷五月天| 免费在线观看国内色片网站网址| 人妻人人做人人澡人人爽欧美一区| 欧美日韩插逼视频| 强被迫伦姧在线观看无码网站| 精品三级在线专区| 尤物视频一区| 亚洲一区二区精品福利| 在线色导航| 午夜精品视频777| 另类视频在线| 日韩丝袜人妻AV| 美女黄码视频午夜| www.久久超碰| 成年人黄色| 国产Aα| 九九综合久久| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 男人兔费天堂| 插欧洲美女欧美精品| 凹凸久久人人| 自偷自拍的亚洲视频| 国产深喉视频一区二区| 久久精品天美| 中文97国产| 亚爽爽爽爽爽爽爽爽| 亚洲春色欧美| 97视频免费| 国产女性无套 免费观看| 欧洲亚洲国产综合在线| 天堂中文资源在线bt| 99热精品在线在线| 亚射在线| 中文字幕日本久久| 91在线欧色| 亚洲综合99999| 久久精品国产精品| 亚洲影视综合| 99天堂网| 超碰免费欧美7| 久久亚洲中文字幕视频| 国产AV久久野战精品| 六十路日本| 亚洲AV不卡在线观看尤物| 国产一区二区在线看| 欧美大波激情xxxx| 操逼网站地址| 青青草字幕AV| 成人毛片免费| 久操B网| 亚洲日韩黑丝| 欧美性爱日韩高清| 免费看污网站| 九九九九热只有精品| 久综合国内精品自在自线| 国产性感骚丝袜在线| 亚洲美腿丝袜香蕉影视欧美成人| 狠狠色噜噜狠狠狠狠2018| 99热精品青草在线| 超碰导航97| 午夜男人av| 欧美精品,四区。五区| 隔壁邻居波多野结衣中文字幕 | 久操电影网| 国产精品一二三区福利| 欧美日韩亚洲天堂| 成人精品在线| 国产乱子伦久久精品综合一区二区三| 激情综合久久| 国产成年女黄特黄| www.男人天堂| 激情综合久久| 久久性爱视频99| 欧美成人国产精品| 日本91白丝| 日韩人妻有码免费视频| se,,,亚洲欧美| 九热视频| 91东京热男人的天堂| 粉嫩av一区二区三区四季| 色色国产| 国产性爱在线视频一区二区| 成人性交免费视屏| 91精品国久久久久久无码| 五月婷丁香| 国产野战露脸在线播放| 蜜桃AV天堂| 欧洲乱码视频| 激情久久久| 国产无码一二三区| 亚洲精品一二牛牛| 久久綜合很很很| 伊人97色天使| 五月天婷婷成人网| 亚洲女毛多水多21P| 我要去看2个日本美女.com曹逼| 嗯嗯嗯啊啊啊操的我好爽| 中文字幕交换人妻| 亚洲成aⅴ人片不卡无码| 色色97爱| 国模久久在线| 熟女91网| 激情婷婷丁香| 久久久av爱| 天天综合色电影| 国产中文精品一区二区在线观看| 熟女熟妇一区二区三四区| 素人伊尹大香蕉免费下载视频| 国产传媒一区日韩| 天天日天天操VV| 九九九热精品| 欧美综合网站999| 欧美姓爱综合网| 亚州男人天堂| 日韩欧美性吧婷婷乱伦大香蕉| 婷婷色香伊人| 欧美呦呦性爱| 日本熟女免费視颖| 国产亲戚伦亲在线| 久久精品店| 97人肏| 精品9区| 亚洲丝袜诱惑| 三男一女不戴套的A片| 免费在线黄片视频| 一区二区激情国产熟女 | 上床不卡网站| 97国产精品在线观看| 999久久久免费精品国产牛牛| 13小男生GAY自慰脱裤子| 无码丰满熟妇一区二区浪潮AV| 欧美日韩性爱视屏免费看了| 日本 欧美 国产一区| 亚洲av热热色| 粉嫩AV输入| 欧美男人天堂| 欧美性爱1080p| 亚洲不卡不卡中文字幕不卡| 少妇久久久免费| 亚洲另类小说卡通动漫| 一块操欧美性爱| 夜精品久无码| 97免费在线观看| 桃花色涩综合影院| 精品对白久久不卡| 欧美激情性爱视频网站| 97干在线看| 亚洲欧美色图片| 超碰99在线观看| 韩国毛片一区二区三区| 91在线秘 男同| 肥臀熟女福利视频一区二区| 91四海无码日韩欧美| 日欧操屄视频| 色哟哟精品1精品2| 精品黑人一区二区| 色妇91| 深夜激情| 国产亚洲99久久精品| 自拍欧美| 中日韩久久久| 亚洲 图片 综合91| 久久大| 九九黄色网| 久久97| 去干网最新版| 亚洲在线欧美| 嗯嗯,好大,好爽,好骚| 欧美性爱无码一区二区三区| 99只有精品| 黄色一级视| 在线日韩精品一区二区三区| 亚洲国产综合久久天堂| 亚洲电影中字一区二区| 天天草AV| 嗯阿好爽好紧| 青青操狠狠撩| 男人天堂电影院| 国产风韵犹存熟妇三区| 91欧美高清| 免费伦费视频在线观看| 91色插| 中文字幕AV片| 偷拍 精品 另类 四区| 93人人操人人| 中日韩一区二区三区欧美| 久操视频免费在线观看| 日本操BAV| 久操网址| 亚洲精品久久久久毛片A片拉屎| 屁股久久久久久久久| 国产精品亚洲免费| 日韩精品一区二区高清| 久操视频这里只有精品| 99福利社| 久久久久人| 亚洲偷91色| 日韩美女,国产传媒,视频一区| 强奸乱伦资源| 在线观看A啊啊啊| 亚洲天堂另类美腿| 四虎影视在线|