熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 開放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下的文本標(biāo)刻

開放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下的文本標(biāo)刻

時(shí)間:2024-09-10 16:29:11來(lái)源:深圳市正運(yùn)動(dòng)技術(shù)有限公司

導(dǎo)語(yǔ):?上節(jié)課程我們講述了如何通過Ubuntu+Qt進(jìn)行振鏡校正(詳情點(diǎn)擊→開放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下的激光振鏡校正),本節(jié)文本標(biāo)刻是在振鏡校正的前提下實(shí)現(xiàn)的。

  上節(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)框圖如下所示:

正運(yùn)動(dò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)控制。

正運(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è)》。

正運(yùn)動(dòng)

  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)目名稱和保存位置。

正運(yùn)動(dòng)

  2.導(dǎo)入廠家提供的相關(guān)函數(shù)庫(kù)及頭文件。

  (1)將zmotion.h和zmcaux.h、zmcaux.cpp以及l(fā)ibzmotion.so庫(kù)復(fù)制到新建的項(xiàng)目文件夾中。

正運(yùn)動(dòng)

  (2)在Qt Creator選擇新建的Qt項(xiàng)目右擊選擇“添加庫(kù)...”→“外部庫(kù)”點(diǎn)擊下一步,將剛才復(fù)制到項(xiàng)目文件夾上的libzmotion.so庫(kù)文件導(dǎo)入到項(xiàng)目中。

正運(yùn)動(dòng)

  (3)在Qt Creator下右擊新建的Qt項(xiàng)目,選擇“添加現(xiàn)有文件...”,將之前復(fù)制到項(xiàng)目文件下的libzmotion.so、zmotion.h、zmcaux.cpp以及zmcaux.h添加到項(xiàng)目中。

正運(yùn)動(dòng)

  (4)函數(shù)庫(kù)添加成功后,打開pro文件可以看到相關(guān)的函數(shù)庫(kù)和頭文件信息。此時(shí)已經(jīng)將例程需要用到的函數(shù)庫(kù)和頭文件都加入到項(xiàng)目中了,接下來(lái)開始實(shí)現(xiàn)例程。

正運(yùn)動(dòng)

  (二)安裝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ù),如下圖所示:

正運(yùn)動(dòng)

  安裝完成后只需要在使用時(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ù)制到文件夾中,如下圖所示:

正運(yùn)動(dòng)

  03文本標(biāo)刻流程以及相關(guān)函數(shù)介紹

  1.文本繪制流程

  文本的處理首先是需要將文本輪廓進(jìn)行解析,對(duì)輪廓信息進(jìn)行分解,輪廓信息中包含輪廓的類型,文本輪廓分為線段、二次貝塞爾曲線、三次貝塞爾曲線,對(duì)于貝塞爾曲線類型需要將曲線分解為小線段進(jìn)行處理,可以控制分解的精度,將所有的輪廓線處理完即代表已經(jīng)完成當(dāng)前字符的繪制。

正運(yùn)動(dòng)

  2.相關(guān)函數(shù)接口介紹

       (1)加載和初始化字體文件

正運(yùn)動(dòng)

  (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ù)雜的曲線形狀。

正運(yùn)動(dòng)

  (3)獲取貝塞爾曲線的點(diǎn)坐標(biāo)

正運(yùn)動(dòng)

  (4)三次文件初始化

正運(yùn)動(dòng)

  (5)生成空移字符串

正運(yùn)動(dòng)

  (6)生成開光字符串

正運(yùn)動(dòng)

  (7)生成關(guān)光字符串

正運(yùn)動(dòng)

  (8)生成標(biāo)刻點(diǎn)字符串

正運(yùn)動(dòng)

  (9)下載三次文件

正運(yùn)動(dòng)

  (10)通用命令執(zhí)行接口

正運(yùn)動(dòng)

  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ù)。

正運(yùn)動(dòng)

  2.輸入需要標(biāo)刻的文本,可以根據(jù)需要設(shè)置相關(guān)的文字屬性,下面是輸入文字通過QPaint繪制的文本。

正運(yùn)動(dòng)

       3.可以更改字體,文本開始位置以及設(shè)置傾斜屬性,下面是設(shè)置后的效果。

正運(yùn)動(dòng)

       4.點(diÇŽn)擊生成三次文件,選擇標(biāo)刻圖形,下圖是通過示波器抓取的標(biāo)刻數(shù)據(jù)。

正運(yùn)動(dòng)

完整代碼獲取地址

â–¼

正運(yùn)動(dòng)

  本次,正運(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)源。

標(biāo)簽: 正運(yùn)動(dòng)

點(diǎn)贊

分享到:

上一篇:鋰電池防水防塵測(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é)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)

主站蜘蛛池模板: 阿拉尔市| 手游| 武强县| 宜州市| 华池县| 济南市| 抚州市| 寻甸| 绥宁县| 宜黄县| 顺义区| 陵水| 赤水市| 砀山县| 边坝县| 黑河市| 平凉市| 安化县| 临沂市| 武城县| 乳山市| 丘北县| 思南县| 涟源市| 建湖县| 盐城市| 乌兰县| 莱阳市| 黄浦区| 呈贡县| 定南县| 固始县| 罗城| 宜黄县| 驻马店市| 南投市| 延安市| 民勤县| 大同市| 扶风县| 运城市|