時(shÃ)間:2024-09-10 16:29:11來(lái)æºï¼šæ·±åœ³å¸‚æ£é‹(yùn)å‹•(dòng)技術(shù)有é™å…¬å¸
  上節(jié)課程我們講述了如何通éŽUbuntu+Qt進(jìn)è¡ŒæŒ¯é¡æ ¡æ£(詳情點(diÇŽn)æ“Šâ†’é–‹æ”¾å¼æ¿€å…‰æŒ¯é¡é‹(yùn)å‹•(dòng)控制器在Ubuntu+Qtä¸‹çš„æ¿€å…‰æŒ¯é¡æ ¡æ£),本節(jié)文本標(biÄo)åˆ»æ˜¯åœ¨æŒ¯é¡æ ¡æ£çš„剿䏋坦(shÃ)ç¾(xià n)的。
  在æ£å¼å¸(xué)ç¿’(xÃ)之å‰ï¼Œæˆ‘們先了解一下æ£é‹(yùn)å‹•(dòng)技術(shù)çš„ZMC408SCAN-V22é‹(yùn)å‹•(dòng)控制器,ZMC408SCAN-V22支æŒåœ¨Linuxç’°(huán)境進(jìn)行開發(fÄ)使用。
  01ZMC408SCAN-V22硬件介紹
  ZMC408SCAN-V22是æ£é‹(yùn)å‹•(dòng)技術(shù)推出的高性能雙振é¡é‹(yùn)å‹•(dòng)控制器,集æˆäº†2個(gè)百兆以太網(wÇŽng)å£ï¼Œæ”¯æŒEtherCATã€EtherNETã€CANã€RS232ã€RS485ã€24路通用數(shù)å—輸入ã€20路通用數(shù)å—輸出ã€2路通用模擬é‡è¼¸å‡ºã€2路通用模擬é‡è¼¸å…¥ã€4個(gè)本地差分脈沖軸接å£ã€1個(gè)MPG手輪編碼器接å£ã€2個(gè)帶åé¥‹æŒ¯é¡æŽ¥å£ã€1個(gè)LASER激光專用接å£ã€1個(gè)FIBER激光器接å£ã€‚開放å¼ç³»çµ±(tÇ’ng)框圖如下所示:
  ZMC408SCAN-V22總線控制器支æŒEtherCATç¸½ç·šé€£æŽ¥ï¼Œæ”¯æŒæœ€å¿«500μsçš„åˆ·æ–°å‘¨æœŸï¼Œæ”¯æŒæœ€å¤šé”(dá)16軸é‹(yùn)å‹•(dòng)控制,支æŒç›´ç·šæ’補(bÇ”)ã€ä»»æ„圓弧æ’補(bÇ”)ã€ç©ºé–“圓弧ã€èžºæ—‹æ’補(bÇ”)ã€é›»å凸輪ã€é›»å齒輪ã€åŒæ¥è·Ÿéš¨ã€è™›æ“¬è»¸è¨(shè)ç½®ç‰;采用優(yÅu)化的網(wÇŽng)絡(luò)通訊å”(xié)è°å¯ä»¥å¯¦(shÃ)ç¾(xià n)實(shÃ)時(shÃ)çš„é‹(yùn)å‹•(dòng)控制。
  ZMC408SCAN-V22支æŒETHERNETã€EtherCATã€USBã€CANã€RS485ã€RS232ç‰é€šè¨ŠæŽ¥å£ï¼Œé€šéŽCANã€EtherCAT總線å¯ä»¥é€£æŽ¥å„個(gè)æ“´(kuò)展模塊,從而擴(kuò)展數(shù)å—é‡ã€æ¨¡æ“¬é‡æˆ–é‹(yùn)å‹•(dòng)軸。å¯ä»¥åœ¨windows,linux,Mac,Android,winceå„種æ“作系統(tÇ’ng)下開發(fÄ),æä¾›vc,c#,vb.net,labviewç‰å„種環(huán)境的dll庫(kù)ï¼Œå¦‚ä¸‹åœ–ã€‚ä¸Šä½æ©Ÿ(jÄ«)軟件編程åƒè€ƒã€ŠZMotion PC函數(shù)庫(kù)編程手冊(cè)》。
  02Ubuntu+Qt進(jìn)行文本標(biÄo)åˆ»é …(xià ng)目的開發(fÄ)
  (一)新建Qté …(xià ng)ç›®å¹¶æ·»åŠ å‡½æ•¸(shù)庫(kù)1.在Qt Creatorèœå–®é¸æ“‡â€œæ–‡ä»¶â€â†’â€œæ–°å»ºæ–‡ä»¶æˆ–é …(xià ng)ç›®...â€ï¼Œæ‰“開創(chuà ng)å»ºé …(xià ng)ç›®å‘?qÅ«)Ð_x擇Applicationé …(xià ng)目集,創(chuà ng)建Qt Widgets Applicationé …(xià ng)目,è¨(shè)ç½®é …(xià ng)ç›®å稱和ä¿å˜ä½ç½®ã€‚
  2.å°Ž(dÇŽo)å…¥å» å®¶æä¾›çš„相關(guÄn)函數(shù)庫(kù)åŠé 文件。
  (1)å°‡zmotion.hå’Œzmcaux.hã€zmcaux.cpp以åŠl(fÄ)ibzmotion.so庫(kù)復(fù)åˆ¶åˆ°æ–°å»ºçš„é …(xià ng)目文件夾ä¸ã€‚
  (2)在Qt Creator鏿“‡æ–°å»ºçš„Qté …(xià ng)ç›®å³æ“Šé¸æ“‡â€œæ·»åŠ åº«(kù)...â€â†’“外部庫(kù)â€é»ž(diÇŽn)擊下一æ¥ï¼Œå°‡å‰›æ‰å¾©(fù)åˆ¶åˆ°é …(xià ng)目文件夾上的libzmotion.so庫(kù)文件導(dÇŽo)å…¥åˆ°é …(xià ng)ç›®ä¸ã€‚
  (3)在Qt Creator䏋峿“Šæ–°å»ºçš„Qté …(xià ng)ç›®ï¼Œé¸æ“‡â€œæ·»åŠ ç¾(xià n)有文件...â€ï¼Œå°‡ä¹‹å‰å¾©(fù)åˆ¶åˆ°é …(xià ng)目文件下的libzmotion.soã€zmotion.hã€zmcaux.cpp以åŠzmcaux.hæ·»åŠ åˆ°é …(xià ng)ç›®ä¸ã€‚
  (4)函數(shù)庫(kù)æ·»åŠ æˆåŠŸåŽï¼Œæ‰“é–‹pro文件å¯ä»¥çœ‹åˆ°ç›¸é—œ(guÄn)的函數(shù)庫(kù)å’Œé æ–‡ä»¶ä¿¡æ¯ã€‚æ¤æ™‚(shÃ)已經(jÄ«ng)將例程需è¦ç”¨åˆ°çš„函數(shù)庫(kù)å’Œé æ–‡ä»¶éƒ½åŠ å…¥åˆ°é …(xià ng)ç›®ä¸äº†ï¼ŒæŽ¥ä¸‹ä¾†(lái)開始實(shÃ)ç¾(xià n)例程。
  (二)安è£Linux下å—體引擎庫(kù)
  1.FreeTypeå—體引擎庫(kù)的安è£
  å—體引擎庫(kù)æœ‰å¾ˆå¤šï¼Œåœ¨ä¾‹ç¨‹ä¸æˆ‘們鏿“‡ä½¿ç”¨FreeTypeå—體引擎庫(kù)來(lái)進(jìn)行å—符輪廓解æžã€‚首先我們需è¦åœ¨Ubuntuç’°(huán)境ä¸ä¸‹è¼‰FreeType庫(kù),在終端命令行ä¸è¼¸å…¥sudo apt-get updateå’Œsudo apt-get install libfreetype6 libfreetype6-dev命令在線安è£FreeType庫(kù),如下圖所示:
  安è£å®ŒæˆåŽåªéœ€è¦åœ¨ä½¿ç”¨æ™‚(shÃ)引入#include é æ–‡ä»¶å³å¯ã€‚實(shÃ)ç¾(xià n)文本標(biÄo)åˆ»çš„ä¾‹ç¨‹å¿…é ˆå®‰è£å—體引擎庫(kù)來(lái)è§£æžå—符,å¦å‰‡ç„¡(wú)法得到å—符的關(guÄn)éµé»ž(diÇŽn)忍™(biÄo),就無(wú)æ³•å®Œæˆæ¨™(biÄo)刻和繪制。
  2.è¨(shè)ç½®å—體文件
  FreeType庫(kù)沒有掃æç³»çµ±(tÇ’ng)å—體庫(kù)文件的功能,在進(jìn)è¡Œè¼ªå»“è§£æžæ™‚(shÃ),需è¦å°‡å—體文件傳入。所以在æ£å¼é–‹å§‹ä¾‹ç¨‹å‰ï¼Œéœ€è¦æŠŠæå‰ä¸‹è¼‰å¥½çš„å—é«”æ–‡ä»¶æ”¾åœ¨é …(xià ng)目文件下,方便解æžå—體時(shÃ)直接使用。在當(dÄng)å‰é …(xià ng)目下新建一個(gè)å—體文件夾,將æå‰ä¸‹è¼‰å¥½çš„å—體復(fù)制到文件夾ä¸ï¼Œå¦‚下圖所示:
  03文本標(biÄo)刻æµç¨‹ä»¥åŠç›¸é—œ(guÄn)函數(shù)介紹
  1.文本繪制æµç¨‹
  文本的處ç†é¦–先是需è¦å°‡æ–‡æœ¬è¼ªå»“進(jìn)行解æžï¼Œå°(duì)輪廓信æ¯é€²(jìn)行分解,輪廓信æ¯ä¸åŒ…å«è¼ªå»“的類型,文本輪廓分為線段ã€äºŒæ¬¡è²å¡žçˆ¾æ›²ç·šã€ä¸‰æ¬¡è²å¡žçˆ¾æ›²ç·šï¼Œå°(duì)于è²å¡žçˆ¾æ›²ç·šé¡žåž‹éœ€è¦å°‡æ›²ç·šåˆ†è§£ç‚ºå°ç·šæ®µé€²(jìn)行處ç†ï¼Œå¯ä»¥æŽ§åˆ¶åˆ†è§£çš„精度,將所有的輪廓線處ç†å®Œå³ä»£è¡¨å·²ç¶“(jÄ«ng)完æˆç•¶(dÄng)å‰å—符的繪制。
  2.相關(guÄn)函數(shù)接å£ä»‹ç´¹
(1)åŠ è¼‰å’Œåˆå§‹åŒ–å—體文件
  (2)計(jì)ç®—è²å¡žçˆ¾æ›²ç·šçš„äºŒæ¬¡é …(xià ng)系數(shù)
  è²å¡žçˆ¾æ›²ç·šæ˜¯é€šéŽæŽ§åˆ¶é»ž(diÇŽn)來(lái)定義的一種曲線形狀,è²å¡žçˆ¾æ›²ç·šçš„一個(gè)é—œ(guÄn)鵿€§è³ª(zhì)是它是由一組控制點(diÇŽn)å’ŒäºŒé …(xià ng)å¼åŸºå‡½æ•¸(shù)組åˆè€Œæˆçš„ã€‚äºŒé …(xià ng)å¼ç³»æ•¸(shù)確定了æ¯å€‹(gè)控制點(diÇŽn)在è²å¡žçˆ¾æ›²ç·šä¸çš„æ¬Š(quán)é‡ã€‚在計(jì)ç®—è²å¡žçˆ¾æ›²ç·šä¸Šçš„點(diÇŽn)時(shÃ),æ¯å€‹(gè)控制點(diÇŽn)的貢ç»(xià n)由其å°(duì)應(yÄ«ng)çš„äºŒé …(xià ng)å¼ç³»æ•¸(shù)乘以相應(yÄ«ng)的基函數(shù)得出。è²å¡žçˆ¾æ›²ç·šé€šéŽèª¿(dià o)整控制點(diÇŽn)çš„ä½ç½®å’ŒäºŒé …(xià ng)å¼ç³»æ•¸(shù)來(lái)實(shÃ)ç¾(xià n)å„種復(fù)雜的曲線形狀。
  (3)ç²å–è²å¡žçˆ¾æ›²ç·šçš„點(diÇŽn)忍™(biÄo)
  (4)三次文件åˆå§‹åŒ–
  (5)生æˆç©ºç§»å—符串
  (6)生æˆé–‹å…‰å—符串
  (7)生æˆé—œ(guÄn)å…‰å—符串
  (8)ç”Ÿæˆæ¨™(biÄo)刻點(diÇŽn)å—符串
  (9)下載三次文件
  (10)通用命令執(zhÃ)行接å£
  04文本標(biÄo)刻的實(shÃ)ç¾(xià n)例程
  文本標(biÄo)刻例程首先需è¦ç²å–到文本數(shù)據(jù),ç²å–到外部輸入文本åŽï¼Œå°‡æ–‡æœ¬é€²(jìn)行單個(gè)è§£æžï¼Œç”Ÿæˆå—符輪廓數(shù)據(jù),接下來(lái)的處ç†å°±æ˜¯å°(duì)輪廓數(shù)據(jù)進(jìn)行轉(zhuÇŽn)æ›ï¼Œå°‡è²å¡žçˆ¾æ›²ç·šæ•¸(shù)據(jù)全部轉(zhuÇŽn)æ›ç‚ºå°ç·šæ®µä¾†(lái)處ç†ï¼Œæœ€åŽå°‡å°ç·šæ®µç›¸é€£æŽ¥ï¼Œç”Ÿæˆä¸‰æ¬¡æ–‡ä»¶å—符串,下載到控制器ä¸ï¼ŒåŸ·(zhÃ)行標(biÄo)刻命令å³å¯å®Œæˆæ–‡æœ¬çš„æ¨™(biÄo)刻。
  (1)將文本解æžç‚ºè¼ªå»“數(shù)據(jù),F(xià n)reeType庫(kù)è§£æžæ–‡æœ¬æ™‚(shÃ)需è¦å°(duì)å—符進(jìn)行單個(gè)處ç†ï¼Œå°‡æ¯å€‹(gè)å—符都進(jìn)行解æžè¼ªå»“。
  ·
  //åˆå§‹åŒ–輪廓數(shù)據(jù)FT_Init_FreeType(&library);const char* fontFilePath = gainFontFilePath(text_data.type);FT_New_Face(library, fontFilePath, 0, &face);// ç²å–å—符的索引FT_UInt glyphIndex = FT_Get_Char_Index(face, charCode);// åŠ è¼‰å—符的輪廓信æ¯FT_Int32 loadFlags = FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP;FT_Load_Glyph(face, glyphIndex, loadFlags);// ç²å–å—形槽FT_GlyphSlot glyphSlot = face->glyph;// ç²å–å—形的輪廓信æ¯FT_Outline* outline = &glyphSlot->outline;
  (2)將輪廓數(shù)據(jù)轉(zhuÇŽn)æ›ç‚ºå°ç·šæ®µç”Ÿæˆä¸‰æ¬¡æ–‡ä»¶å—符串,å°(duì)于線段數(shù)據(jù)å¯ä»¥ç›´æŽ¥é€šéŽå標(biÄo)ä½ç½®ç”Ÿæˆä¸‰æ¬¡æ–‡ä»¶å—符串,å°(duì)于è²å¡žçˆ¾æ›²ç·šæ•¸(shù)據(jù),需è¦å¾ªç’°(huán)éæ·ï¼Œå°‡æ‰€æœ‰æ›²ç·šæ•¸(shù)據(jù)轉(zhuÇŽn)æ›ç‚ºå°ç·šæ®µæ•¸(shù)據(jù),最åŽç”Ÿæˆä¸‰æ¬¡æ–‡ä»¶å—符串。
  ·
  //將所有輪廓數(shù)據(jù)éæ·ï¼Œå°(duì)ä¸åŒé¡žåž‹çš„æ•¸(shù)據(jù)進(jìn)行ä¸åŒçš„處ç†for(int n=0;n < outline->n_contours;n++){ LaserScan_z3p_EmptyMove(strFile3,startX,startY,markPara.JumpSpeed,corrJumpDelay);//空移到起點(diÇŽn) LaserScan_z3p_OpenLight(strFile3,markPara.Io_value.emit_io,markPara.OpenDelay,markPara.MarkSpeed);//é–‹å…‰ tag = FT_CURVE_TAG(tags[0]); //判斷當(dÄng)å‰è¼ªå»“數(shù)據(jù)的類型 switch(tag) { case FT_CURVE_TAG_ON: //線段 { LaserScan_z3p_Mark(strFile3,markPara.CorDelay,line,2); } case FT_CURVE_TAG_CONIC: //兩次è²å¡žçˆ¾æ›²ç·š { ZPointF *pointData = new ZPointF[myVector.size()]; for (unsigned long i = 0; i <= myVector.size() - 1; ++i) { pointData[i] = myVector[i]; } LaserScan_z3p_Mark(strFile3,markPara.CorDelay,pointData,myVector.size());//標(biÄo)刻 } default: //三次è²å¡žçˆ¾æ›²ç·š { ZPointF *pointData = new ZPointF[myVector.size()]; for (unsigned long i = 0; i <= myVector.size() - 1; ++i) { pointData[i] = myVector[i]; } LaserScan_z3p_Mark(strFile3,markPara.CorDelay,pointData,myVector.size());//標(biÄo)刻 } } LaserScan_z3p_CloseLight(strFile3,markPara.Io_value.emit_io,markPara.CloseDelay,corrJumpDelay);//é—œ(guÄn)å…‰}
  (3)使用Free Type庫(kù)è§£æžç”Ÿæˆçš„è¼ªå»“åæ¨™(biÄo)點(diÇŽn),是按照內(nèi)部矩陣的åƒç´ ä½ç½®æ±ºå®šï¼Œæš«æ™‚(shÃ)沒有相關(guÄn)的函數(shù)來(lái)調(dià o)整起始點(diÇŽn)忍™(biÄo)ä½ç½®ï¼Œä½†æ˜¯åœ¨ä½¿ç”¨æ–‡æœ¬æ¨™(biÄo)刻時(shÃ)ï¼Œå¿…é ˆè¦ç¢ºå®šæ¨™(biÄo)刻的起點(diÇŽn)ä½ç½®ï¼Œæ‰€ä»¥åœ¨ä¾‹ç¨‹ä¸çš„實(shÃ)ç¾(xià n)方法是將解æžå‡ºçš„çš„åæ¨™(biÄo)ä½ç½®é€²(jìn)行比較,得到最å°çš„Xå’ŒY忍™(biÄo)ï¼Œå°‡æ‰€æœ‰çš„è¼ªå»“åæ¨™(biÄo)å移最å°å標(biÄo)ä½ç½®ï¼Œä¿è‰èµ·å§‹é»ž(diÇŽn)是在原點(diÇŽn)ä½ç½®é–‹å§‹ï¼ŒåŽçºŒ(xù)å¯ä»¥é€šéŽæ›´æ”¹èµ·é»ž(diÇŽn)ä½ç½®ä¾†(lái)確定相å°(duì)ä½ç½®ã€‚
  (4)三次文件å—ç¬¦ä¸²è¿½åŠ å®ŒæˆåŽï¼Œå°‡ä¸‰æ¬¡æ–‡ä»¶ä¸‹è¼‰åˆ°æŽ§åˆ¶å™¨ä¸ï¼Œé€²(jìn)行文本標(biÄo)刻。
  ·
  //åˆå§‹åŒ–三次文件å—符串LaserScan_z3p_Init();//ç”Ÿæˆæ–‡æœ¬æ¨™(biÄo)刻å—符串Z3p_process();//回原點(diÇŽn),打開急åœä¿¡è™Ÿ(hà o),關(guÄn)閉激光器使能LaserScan_z3p_EmptyMove(strFile3,0,0,markPara.JumpSpeed,corrJumpDelay);//空移到原點(diÇŽn)//將三次文件å—符串下載到控制器ä¸ZMC_DownMem3File(g_handle,strFile3.toLatin1().data(),strFile3.length(),"Zmc_text.z3p");QString filePath = "Zmc_text.z3p";QFile file(filePath);//在當(dÄng)å‰é …(xià ng)目下生æˆä¸‰æ¬¡æ–‡ä»¶if (file.open(QIODevice::WriteOnly | QIODevice::Text)){ QTextStream stream(&file); stream << strFile3; file.close(); QMessageBox::warning(this,"æç¤º","3æ¬¡æ–‡ä»¶ç”ŸæˆæˆåŠŸ!");}
  05文本標(biÄo)刻的實(shÃ)ç¾(xià n)效果
  1.建立控制器連接,è¨(shè)ç½®æ¿€å…‰å™¨åƒæ•¸(shù)和工è—åƒæ•¸(shù)。
  2.è¼¸å…¥éœ€è¦æ¨™(biÄo)刻的文本,å¯ä»¥æ ¹æ“š(jù)需è¦è¨(shè)置相關(guÄn)的文å—å±¬æ€§ï¼Œä¸‹é¢æ˜¯è¼¸å…¥æ–‡å—通éŽQPaint繪制的文本。
3.å¯ä»¥æ›´æ”¹å—體,文本開始ä½ç½®ä»¥åŠè¨(shè)ç½®å‚¾æ–œå±¬æ€§ï¼Œä¸‹é¢æ˜¯è¨(shè)ç½®åŽçš„æ•ˆæžœã€‚
4.點(diÇŽn)擊生æˆä¸‰æ¬¡æ–‡ä»¶ï¼Œé¸æ“‡æ¨™(biÄo)刻圖形,下圖是通éŽç¤ºæ³¢å™¨æŠ“å–的標(biÄo)刻數(shù)據(jù)。
完整代碼ç²å–地å€
â–¼
  本次,æ£é‹(yùn)å‹•(dòng)技術(shù)é–‹æ”¾å¼æ¿€å…‰æŒ¯é¡é‹(yùn)å‹•(dòng)控制器在Ubuntu+Qt下的文本標(biÄo)刻,就分享到這里。
  更多精彩內(nèi)容請(qÇng)é—œ(guÄn)注“æ£é‹(yùn)å‹•(dòng)å°åŠ©æ‰‹â€å…¬çœ¾è™Ÿ(hà o),需è¦ç›¸é—œ(guÄn)開發(fÄ)ç’°(huán)境與例程代碼,請(qÇng)咨詢æ£é‹(yùn)å‹•(dòng)技術(shù)銷售工程師:400-089-8936。
  本文由æ£é‹(yùn)å‹•(dòng)技術(shù)原創(chuà ng),æ¡è¿Žå¤§å®¶è½‰(zhuÇŽn)載,共åŒå¸(xué)ç¿’(xÃ),一起æé«˜ä¸åœ‹(guó)æ™ºèƒ½åˆ¶é€ æ°´å¹³ã€‚æ–‡ç« ç‰ˆæ¬Š(quán)æ¸æ£é‹(yùn)å‹•(dòng)技術(shù)所有,如有轉(zhuÇŽn)載請(qÇng)æ³¨æ˜Žæ–‡ç« ä¾†(lái)æºã€‚
ä¸Šä¸€ç¯‡ï¼šé‹°é›»æ± é˜²æ°´é˜²å¡µæ¸¬(cè)試辦法
下一篇:如何為應(yÄ«ng)用è¨(shè)計(jì)鏿“‡åˆé©çš„é›»...
ä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)版權(quán)與å…責(zé)è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來(lái)æºï¼šä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)(www.hysjfh.com)ç¨(dú)家所有。如需轉(zhuÇŽn)載請(qÇng)與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個(gè)人轉(zhuÇŽn)載使用時(shÃ)é ˆæ³¨æ˜Žä¾†(lái)æºâ€œä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責(zé)任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來(lái)æºçš„稿件,å‡ä¾†(lái)自互è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請(qÇng)ä¿ç•™ç¨¿ä»¶ä¾†(lái)æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² (fù)版權(quán)法律責(zé)任。
相關(guÄn)資訊