




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
上海復旦微電子股份有限公司設計文件復旦微電子RF動態連接庫函數說明上海復旦微電子股份有限公司上海復旦微電子股份有限公司中國上海目錄TOC\o"1-4"\h\z1. 射頻卡介紹 42. M1兼容卡 42.1. 電氣特性 42.2. 存儲結構 42.3. 控制屬性 42.4. 工作原理 62.5. 提供操作函數 6 數據操作函數 6 值操作函數(錢包操作) 6 芯片操作函數 6 高級函數 63. TOKEN(籌碼型)卡介紹 73.1. 電氣特性 73.2. 提供操作函數 74. 非接觸CPU卡介紹 84.1. 電氣特性 84.2. 提供操作函數 85. 庫函數 85.1. Mifare1卡函數使用規則 95.2. TOKEN卡函數使用規則 105.3. 錢包操作的特殊指令(適用于以上兩種卡) 105.4. CPU卡函數使用規則 105.5. 函數返回信息代碼 105.6. RFDLL.dll庫函數詳細說明 115.6.1. rf_reset 115.6.2. rf_beep 115.6.3. rf_init 125.6.4. rf_exit 125.6.5. rf_cardtype 125.6.6. rf_request 125.6.7. rf_anticoll 135.6.8. rf_select 135.6.9. rf_load_key 135.6.10. rf_halt 145.6.11. rf_read 145.6.12. rf_write 145.6.13. rf_authentication 145.6.14. rf_initval 155.6.15. rf_readval 155.6.16. rf_increment 155.6.17. rf_decrement 165.6.18. rf_restore 165.6.19. rf_transfer 165.6.20. rf_HL_read 165.6.21. rf_HL_write 175.6.22. rf_HL_initval 175.6.23. rf_HL_increment 185.6.24. rf_HL_decrement 185.6.25. rf_token_read_noauth 185.6.26. rf_token_read 195.6.27. rf_token_write 195.6.28. rf_rats 195.6.29. rf_pps 205.6.30. rf_cpu_access 20射頻卡介紹射頻卡即為非接觸式IC卡,主要包括非接觸邏輯加密卡和非接觸CPU卡。按卡類型分類則有TYPEA卡、TYPEB卡、15693卡等類型,其中TYPEA卡應用比較廣泛,我公司的FM11RF32、FM11RF08、FM11RF005以及新研發成功的FM1208等芯片均是不同容量的TYPEA卡。其中FM1208為兼容邏輯加密卡的非接觸CPU卡。而FM11RF32、FM11RF08、FM11RF005為非接觸邏輯加密卡。它們中間容量為8K的FM11RF08是與Mifareone完全兼容的,512位的FM11RF005是一種小容量的籌碼卡(又叫做TOKEN卡)。下面分別介紹一下:M1兼容卡M1卡為8K位的非接觸式IC卡(典型產品:FM11RF08)。電氣特性容量為8K位EEPROM分為16個扇區,每個扇區為4塊,每塊16個字節,以塊為存取單位每個扇區有獨立的一組密碼及訪問控制每張卡有唯一序列號,為32位具有防沖突機制,支持多卡操作無電源,自帶天線,內含加密控制邏輯和通訊邏輯電路工作溫度:-20℃~50工作頻率:13.56MHZ通信速率:106KBPS讀寫距離:10c數據保存期為10年,可改寫10萬次,讀不限次存儲結構M1卡分為16個扇區,每個扇區4塊(塊0~3),共64塊,按塊號編址為0~63。第0扇區的塊0(即絕對地址0塊)用于存放廠商代碼,已經固化,不可更改。其他各扇區的塊0、塊1、塊2為數據塊,用于存貯數據;塊3為控制塊,存放密碼A、存取控制、密碼B,其結構如下:A0A1A2A3A4A5FF078069B0B1B2B3B4B5密碼A(6字節)存取控制(4字節)密碼B(6字節)控制屬性每個扇區的密碼和存取控制都是獨立的,可以根據實際需要設定各自的密碼及存取控制。在存取控制中每個塊都有相應的三個控制位,定義如下:0塊0:C10C20C301塊1:C11C21C312塊2:C12C22C323塊3:C13C23C33三個控制位以正和反兩種形式存在于存取控制字節中,決定了該塊的訪問權限(如進行減值操作必須驗證KEYA,進行加值操作必須驗證KEYB,等等)。三個控制位在存取控制字節中的位置如下(字節9為備用字節,默認值為0x69):bit76543210字節6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字節7C13C12C11C10C33_bC32_bC31_bC30_b字節8C33C32C31C30C23C22C21C20(注:_b表示取反)其中,黑色區控制塊3,藍色區控制塊2,綠色區控制塊1,紅色區控制塊0。數據塊(塊0、塊1、塊2)的存取控制如下:控制位(X=0..2)訪問條件(對塊0、1、2)C1XC2XC3XReadWriteIncrementDecrement、transfer、restore000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNeverNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(KeyA|B表示密碼A或密碼B,Never表示任何條件下不能實現)例如:當塊0的存取控制位C10C20C控制塊(塊3)的存取控制與數據塊(塊0、1、2)不同,它的存取控制如下:控制位密碼A存取控制密碼BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyA|BKeyA|BNeverKeyA|BKeyA|B010NeverNeverKeyA|BNeverKeyA|BNever100NeverKeyBKeyA|BNeverNeverKeyB110NeverNeverKeyA|BNeverNeverNever001NeverKeyA|BKeyA|BKeyA|BKeyA|BKeyA|B011NeverKeyBKeyA|BKeyBNeverKeyB101NeverNeverKeyA|BKeyBNeverNever111NeverNeverKeyA|BNeverNeverNever例如:當塊3的存取控制位C13C23C密碼A:不可讀,驗證KEYB正確后,可寫(更改)。存取控制:驗證KEYA或KEYB正確后,可讀不可寫。密碼B:不可讀,驗證KEYB正確后,可寫。工作原理卡片的電氣部分只由一個天線和ASIC組成。天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。ASIC:卡片的ASIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個8K位EEPROM組成。讀寫器向M1卡發一組固定頻率的電磁波,卡片內有一個LC串聯諧振電路,其頻率與讀寫器發射的頻率相同,在電磁波的激勵下,LC諧振電路產生共振,從而使電容內有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內的電荷送到另一個電容內儲存,當所積累的電荷達到2V時,此電容可作為電源為其它電路提供工作電壓,將卡內數據發射出去或接取讀寫器的數據。提供操作函數數據操作函數驗證密碼函數:rf_authentication()讀函數:rf_read()寫函數:rf_write()值操作函數(錢包操作)初始化值:rf_initval()讀值函數:rf_readval()增值函數:rf_increment()減值函數:rf_decrement()芯片操作函數回傳函數:rf_restore()傳送函數:rf_transfer()高級函數高級函數集成以下幾個函數:讀函數:rf_HL_read()寫函數:rf_HL_write()初始化值:rf_HL_initval()增值函數;rf_HL_increment()減值函數:rf_HL_decrement()TOKEN(籌碼型)卡介紹TOKEN卡為512位的非接觸式IC卡(典型產品:FM11RF005)。電氣特性容量為512位EEPROM分為3個區、16個BLOCK,每個BLOCK包括4個字節,32位106Kbit/s的高速通信波特率半雙工通信方式三重防偽認證、讀寫權限控制操作距離不小于6cm(籌碼直徑為300mm,厚度為2mm)符合ISO/IEC14443.2的TYPEA協議大于10萬次的數據擦寫測試超過10年數據保存期塊分區與讀寫權限表1:讀寫權限塊編號未認證認證后0~1只可讀只可讀2~7只可讀可讀/可寫8~15不可讀/不可寫可讀/可寫塊1和塊2為芯片標識,它由客戶代碼、制造商代碼和芯片序列號組成,見表2Block01230客戶代碼(CID)制造商(MID)1芯片序列號(SN)芯片的標識是唯一的,由芯片制造商固化在芯片內不能改變。提供操作函數數據操作函數在進行卡片操作前,應先執行:rf_cardtype指令未認證讀函數(可讀前8塊):rf_token_read_noauth進行密碼裝載rf_load_key指令后可執行:讀函數:rf_token_read寫函數:rf_token_write非接觸CPU卡介紹FM1208系列為支持電子錢包和兼容現有公交卡的低成本的非接觸CPU卡。它把現有用于公交卡的非接觸邏輯加密卡和符合銀行標準的CPU卡的功能合二為一。電氣特性通信協議:ISO14443-A兼容FM11RF08M、FM11RF08SH、FM11RF32M、FM11RF32SH系列非接觸卡芯片MCU指令兼容Turbo51支持106Kbps和212Kbps數據傳輸速率Triple-DES協處理器程序存儲器32Kx8bitROM(版本2為12Kx8bitEEPROM)數據存儲器8Kx8bitEEPROM128x8bitiRAM384x8bitxRAM低壓檢測復位高低頻檢測復位EEPROM滿足10萬次擦寫指標提供操作函數選擇應答請求: rf_rats協議和參數選擇請求: rf_pps發送COS命令: rf_cpu_access庫函數我公司提供WINDOWS32位動態庫供二次開發使用。設備操作函數復位:rf_reset蜂鳴:rf_beep通用函數串口初始化: rf_init關閉串口: rf_exit輪詢卡: rf_request防沖突: rf_anticoll選卡: rf_select裝載密鑰: rf_load_key置空閑: rf_halt讀塊: rf_read寫塊: rf_write選擇卡類型: rf_cardtypeM1卡密鑰認證: rf_authentication初始化值: rf_initval讀值: rf_readval增值: rf_increment減值: rf_decrement高級讀: rf_HL_read高級寫: rf_HL_write高級初始化值:rf_HL_initval高級增值: rf_HL_increment高級減值: rf_HL_decrementTOKEN卡未認證讀: rf_token_read_noauth讀: rf_token_read寫: rf_token_writeCPU卡選擇應答請求: rf_rats協議和參數選擇請求: rf_pps發送COS命令: rf_cpu_accessMifare1卡函數使用規則程序開始,調用rf_init函數初始化串口。調用rf_cardtype函數設置卡片類型;對扇區操作,順次執行A~C或順次執行D~H;選定要操作的扇區;裝載密碼,調用rf_load_key;直接調用高級函數rf_HL_read和rf_HL_write調用rf_request發送輪詢命令;調用rf_anticoll獲得卡序列號;調用rf_select選中卡片;驗證密碼,調用rf_authentication;進行操作,包括讀寫及值操作(rf_read和rf_write)。中止操作,調用rf_halt。關閉串口,調用rf_exit。程序正常退出或因錯誤退出之前,要使用函數;否則再次執行初始化串口時將出錯。TOKEN卡函數使用規則程序開始,調用rf_init函數初始化串口;調用rf_cardtype函數設置卡片類型;調用rf_token_read_noauth進行前8塊讀操作;裝載密碼,調用rf_load_key;調用rf_token_read、rf_token_write進行讀寫操作。中止操作,調用rf_halt。關閉串口,調用rf_exit。程序正常退出或因錯誤退出之前,要使用函數;否則再次執行初始化串口時將出錯。錢包操作的特殊指令(適用于以上兩種卡)由于存儲錢包的塊格式特殊,故若對錢包塊操作需要以下函數:rf_initval將一個塊初始化為錢包塊;rf_readval讀錢包值;rf_increment給錢包增值;rf_decrement給錢包減值。rf_HL_initval,rf_HL_increment,rf_HL_decrement與上面1)、3)、4)函數相同,只是使用它們底層程序自動完成輪詢、防沖突、選卡、密鑰認證操作,使用者不需再逐個調用。CPU卡函數使用規則程序開始,調用rf_init函數初始化串口。調用rf_cardtype函數設置卡片類型;調用rf_request發送輪詢命令;調用rf_anticoll獲得卡序列號;調用rf_select選中卡片;調用rf_rats發送選擇應答請求,進入CPU卡模式;調用rf_pps發送協議和參數選擇請求;調用rf_cpu_access可發送COS指令(COS指令結構參看FMCOS技術手冊)。函數返回信息代碼錯誤代碼含義0正確1無卡2卡片CRC校驗錯誤3數值溢出錯誤4驗證不成功5卡片奇偶校驗錯誤6通訊錯誤(BCC校驗錯)8卡片序列號錯誤(anticol錯誤)9卡片數據長度字節錯誤(SELECT錯誤)10卡片沒有通過驗證11從卡片接收到的位數錯誤12從卡片接收到的字節數錯誤(僅讀函數有效)13調用restore函數出錯14調用transfer函數出錯15調用write函數出錯16調用increment函數出錯17調用decrement函數出錯18調用read函數出錯19調用LOADKEY函數出錯20通訊幀錯誤21調用request函數出錯22調用select函數出錯23調用anticoll函數出錯24調用初始化函數出錯25調用高級讀塊值函數出錯42命令參數錯誤rf_init函數返回1串口初始化錯誤0串口初始化正確RFDLL.dll庫函數詳細說明rf_resetint rf_reset(unsignedint_Msec);功能:射頻讀寫模塊復位參數:_Msec:復位時間,0~250毫秒有效返回:成功則返回0例子:intst;st=rf_reset(60);rf_beepint__stdcallrf_beep(unsignedintMsec);功能:蜂鳴參數:_Msec蜂鳴時限單位是10毫秒返回:成功則返回0例:intst;st=rf_beep(10);rf_initintrf_init(intport,longbaud);功能:初始化串口參數:port:串口號,取值為1~4baud:為通訊波特率9600~115200返回:成功則返回0例:intst;st=rf_init(1,19200)rf_exitint rf_exit();功能:釋放串口參數:返回:若關閉成功則返回0例:rf_exit();rf_cardtypeintrf_cardtype(unsignedchar_Type);功能:選擇卡類別參數:_Type:卡類別編號0:TypeA卡1:TypeB卡2:上海標準卡返回:成功則返回0例:intst;st=rf_card(0);//選擇標準MIFARE卡rf_requestintrf_request(unsignedchar_Mode,unsignedint*TagType);功能:尋卡請求參數:_Mode:尋卡模式,保留Tagtype:卡類型值,0x0004為M1卡,0x0010為ML卡返回:成功則返回0例:intst;unsignedinttagtype;st=rf_request(0,&tagtype);rf_anticollintrf_anticoll(unsignedchar_Bcnt,unsignedlong*_Snr);功能:防止卡沖突,返回卡的序列號參數:_Bcnt:預選卡所用的位數,標準值為0(不考慮系列號)_Snr:返回的卡序列號地址返回:成功則返回0例:intst;Unsignedlong*snr;st=rf_anticoll(0,snr);注:request指令之后應立即調用anticoll,除非卡的序列號已知。rf_selectintrf_select(unsignedlong_Snr,unsignedchar*_Size);功能:從多個卡中選取一個給定序列號的卡參數:_Snr:卡序列號_Size:指向返回的卡容量的數據返回:成功則返回0例:intst;unsignedlongsnr=239474;unsignedchar*size;st=rf_select(snr,size);rf_load_keyintrf_load_key(unsignedchar_Mode,unsignedchar_SecNr,unsignedchar*_NKey);功能:將密碼裝入讀寫模塊RAM中參數:_Mode:裝入密碼模式,0~3KeyA,4~7KeyB_SecNr:扇區號(0~15)_Nkey:寫入讀寫器中的卡密碼返回:成功則返回0例:unsignedchartk[6]={0xa0,0xa1,0xa2,0xa3,0xa4,0xa5};/*裝入1扇區的0套A密碼*/if((rf_load_key(0,1,tk))!=0){printf("Loadkeyerror!");rf_exit()exit(1);}rf_haltintrf_halt();功能:中止卡操作參數:返回:成功則返回0例:st=rf_halt();rf_readintrf_read(unsignedchar_Adr,unsignedchar*_Data);功能:讀取卡中數據對于M1卡,一次讀一個塊的數據,為16個字節;對于ML卡,一次讀出相同屬性的兩頁(0和1,2和3,...),為8個字節參數:_Adr:塊號(0~63);_Data:讀出數據返回:成功則返回0例:intst;unsignedchardata[16];st=rf_read(1,data);//讀M1卡的塊1的數據 rf_writeintrf_write(unsingnedchar_Adr,unsignedchar*_Data);功能:向卡中寫入數據對于M1卡,一次必須寫一個塊,為16個字節;對于ML卡,一次必須寫一頁,為4個字節參數:_Adr:M1卡塊號(0~63);_Data:要寫入的數據返回:成功則返回0例:intst;unsignedchar*data=”234567890123456”st=rf_write(2,data);rf_authenticationintrf_authentication(unsignedchar_Mode,unsignedchar_SecNr);功能:驗證某一扇區密碼參數:_Mode:密碼驗證模式,0~3KeyA,4~7KeyB_SecNr:要驗證密碼的扇區號(0~15)返回:成功則返回0例:intst;st=rf_authentication(0,0);注:卡上每個扇區有A密碼和B密碼,可根據實際需要確定是否使用B密碼,這由該扇區的存取控制位來決定。此外,讀寫器中可以存放4套密碼,可用rf_load_key()來分別裝入,只有裝入后才能使用驗證密碼函數驗證。rf_initvalintrf_initval(unsignedchar_Adr,unsignedlong_Value);參數:_Adr:塊地址(0~63)_Value:初始值返回:成功則返回0例:intst;unsignedlongvalue;value=1000;/*給value賦值*/st=rf_initval(1,value);/*將塊1的值初始化為1000*/注:在進行值操作前時,必須已執行過一次初始化值操作,然后可以進行任意的讀、減、加的操作。rf_readvalrf_readval(unsignedchar_Adr,unsignedlong*_Value);功能:讀塊值參數:_Adr:塊地址(0~63)_Value:讀出值的地址返回:成功則返回0例:intst;unsignedlongvalue;st=rf_readval(1,&value);/*讀出塊1的值,放入value*/rf_incrementintrf_increment(unsignedchar_Adr,unsignedlong_Value);功能:塊加值參數:_Adr:塊地址(0~63)_Value:要增加的值返回:成功則返回0;例:intst;unsignedlongvalue;value=10;st=rf_increment(1,value);/*將塊1的值增加value*/rf_decrementintrf_decrement(unsignedchar_Adr,unsignedlong_Value);功能:塊減值參數:_Adr:塊地址(0~63)_Value:要減的值返回:成功則返回0例:intst;unsignedlongvalue;value=10;st=rf_decrement(1,value);/*將塊1的值減少value*/rf_restoreintrf_restore(unsignedchar_Adr);功能:回傳函數,將EEPROM中的內容傳入卡的內部寄存器參數:_Adr:要進行回傳的塊地址(0~63)返回:成功返回0例:intst;st=rf_restore(1);注:用此函數將某一塊中的數值傳入內部寄存器,然后用rf_transfer()函數將寄存器中數據再傳送到另一塊中去,實現塊與塊之間數值傳送。rf_transferintrf_transfer(unsignedchar_Adr);功能:傳送,將寄存器的內容傳送到EEPROM中參數:_Adr:要傳送的地址(0~63)返回:成功返回0例:intst;st=rf_transfer(1);注:該函數僅在increment、decrement和restore命令之后調用。rf_HL_readintrf_HL_read(unsignedchar_Mode,unsignedchar_Adr,unsignedlong_Snr,unsignedchar*_Data,unsignedlong*_NSnr);功能:高級讀函數參數:_Mode:密鑰認證模式_Adr:塊地址(0~63)_Snr:卡的序列號_Data:讀出的數據_NSnr:返回卡的序列號返回:成功則返回0例:if((rf_HL_read(1,2,snr,HLdata,&Rsnr))!=0){printf("readHLRvaluewrong");}rf_HL_writeintrf_HL_write(unsignedchar_Mode,unsignedchar_Adr,unsignedlong*_Snr,unsignedchar*_Data);功能:高級寫函數參數:_Mode:密鑰認證模式_Adr:塊地址(0~63)_Snr:卡的序列號地址_Data:寫入的數據返回:成功則返回0例:if((rf_HL_write(1,2,Snr,HLdata))!=0){printf("readHLRvaluewrong");}rf_HL_initvalintrf_HL_initval(unsignedchar_Mode,unsignedchar_Adr,unsignedlong_Value,unsignedlong*_Snr);功能:高級初始化值參數:_Mode:密鑰認證模式_Adr:塊地址(0~63)_Value:初始值_Snr:卡的序列號地址返回:成功則返回0例:if((rf_HL_initval(0x1,1,100L,&snr))!=0){ printf("initHLWvaluewrong");}printf("invalOK\n");printf("snr=%lx\n",snr);rf_HL_incrementintrf_HL_increment(unsignedchar_Mode,unsignedchar_Adr,unsignedlong_Value,unsignedlong_Snr,unsignedlong*_NValue,unsignedlong*_NSnr);功能:高級增值操作參數:_Mode:密鑰認證模式_Adr:塊地址(0~63)_Value:要加的值_Snr:卡的序列號_NValue:加后的值_NSnr:返回卡的序列號地址返回:成功則返回0例:if((rf_HL_increment(1,1,1L,snr,&Rvalue,&Rsnr))!=0){ printf("HL_incrementwrong"); continue;} printf("newValue=%lx\n",Rvalue);rf_HL_decrementintrf_HL_decrement(unsignedchar_Mode,unsignedchar_Adr,unsignedlong_Value,unsignedlong_Snr,unsignedlong*_NValue,unsignedlong*_NSnr);功能:高級減值操作參數:_Mode:密鑰認證模式_Adr:塊地址(0~63)_Value:要減的值_Snr:卡的序列號_NValue:減后的值unsignedlong*_NSnr:返回卡的序列號地址返回:成功則返回0例:if((rf_HL_decrement(1,1,1L,snr,&Rvalue,&Rsnr))!=0){printf("HL_decrementwrong");continue;}printf("newValue=%lx\n",Rvalue);rf_token_read_noauthintrf_token_read_noauth(unsignedchar_Adr,unsignedchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人培訓總結報告
- 城市交通規劃合同管理數據庫咨詢重點基礎知識點
- 地下展覽館規劃重點基礎知識點
- 【課件】新《稅收法》培訓講義
- 《新大學英語·綜合教程3 》課件-B3U5 Cultural Heritage
- 《銀行業務課件之高端客戶戰略 - 中國銀行內部培訓模板》
- 車貸合同狀態未簽署協議
- 澳門婚前協議書
- 軟件服務費合同協議
- 旅游退團協議書
- 市政道路工程關鍵施工技術工藝及工程項目實施的重點難點和解決方案
- T-CSES 144-2024 城市大氣污染源排放清單編制技術指南
- 專題12 數列-【好題匯編】五年(2020-2024)高考數學真題分類匯編(含答案解析)
- 2024年中國人民幣收藏品市場調查研究報告
- 小學家長會-做好孩子手機管理主題班會課件
- 2022年焊接技術賽項評分標準
- 內蒙古林業和草原局事業單位筆試真題2024
- 湖南中醫藥大學學位英語歷年真題及答案
- DL-T+1860-2018自動電壓控制試驗技術導則
- 單螺桿泵說明書
- JT-T-1213-2018陸港設施設備配置和運營技術規范
評論
0/150
提交評論