91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何擴(kuò)展自定義功能塊,以及代碼生成器的用法

AGk5_ZLG_zhiyua ? 來(lái)源:ZLG致遠(yuǎn)電子 ? 作者:ZLG致遠(yuǎn)電子 ? 2022-11-02 13:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AWPLC 是 ZLG 自主研發(fā)的 PLC 系統(tǒng)(兼容 IEC61131-3),本文以定時(shí)器為例介紹一下如何擴(kuò)展自定義功能塊,以及代碼生成器的用法。

70e5e40e-5a63-11ed-a3b6-dac502259ad0.jpg背景

AWTK全稱 Toolkit AnyWhere,是 ZLG 開(kāi)發(fā)的開(kāi)源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造的通用 GUI 引擎,為用戶提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用、可輕松做出炫酷效果的 GUI 引擎。

AWPLC是 ZLG 自主研發(fā)的 PLC 系統(tǒng)(兼容 IEC61131-3),其中 AWPLC 的運(yùn)行時(shí)庫(kù)(Runtime)基于 ZLG TKC 開(kāi)發(fā),可以移植到到任何主流 RTOS嵌入式系統(tǒng)。AWPLC 的集成開(kāi)發(fā)環(huán)境(IDE)基于 AWTK 開(kāi)發(fā),可以運(yùn)行在 Windows、MacOS 和 Linux 系統(tǒng)之上。AWPLC 的主要目標(biāo)之一是把 PLC 中低代碼開(kāi)發(fā)方法引入到嵌入式軟件,從而提高嵌入式軟件的開(kāi)發(fā)效率和可靠性。

70e5e40e-5a63-11ed-a3b6-dac502259ad0.jpg簡(jiǎn)介

在前一篇文章中,我們介紹了自定義 AWPLC 功能塊的基本方法,但是有些部分的內(nèi)容并沒(méi)有提到,比如:

1. 功能塊的部分虛函數(shù)的實(shí)現(xiàn)。這些函數(shù)在不同功能塊中的實(shí)現(xiàn)是不同的,所以要做成虛函數(shù),但是在各個(gè)功能塊中的實(shí)現(xiàn)又是相似的,不得不去寫(xiě)一遍。比如 get_prop 這個(gè)函數(shù),它在 ZTIMER 中的實(shí)現(xiàn)如下:

staticret_taw_plc_fb_ztimer_get_prop(aw_plc_fb_t*fb,constchar*name,value_t*v){
aw_plc_fb_ztimer_t*ztimer=AW_PLC_FB_ZTIMER(fb);

if(tk_str_eq(name,AW_PLC_FB_ZTIMER_PROP_IN)){
value_set_bool(v,ztimer->in);
returnRET_OK;
}

if(tk_str_eq(name,AW_PLC_FB_ZTIMER_PROP_PT)){
value_set_uint64(v,ztimer->pt);
returnRET_OK;
}

if(tk_str_eq(name,AW_PLC_FB_ZTIMER_PROP_Q)){
value_set_bool(v,ztimer->q);
returnRET_OK;
}

if(tk_str_eq(name,AW_PLC_FB_ZTIMER_PROP_ET)){
value_set_uint64(v,ztimer->et);
returnRET_OK;
}

if(tk_str_eq(name,AW_PLC_FB_ZTIMER_PROP_COUNT)){
value_set_uint32(v,ztimer->count);
returnRET_OK;
}

returnRET_NOT_FOUND;

}

*這樣的代碼看起來(lái)很簡(jiǎn)單,但是恰恰容易出錯(cuò),更容易讓人厭倦,沒(méi)有什么樂(lè)趣。

2. API 和結(jié)構(gòu)的注釋。我們來(lái)看看 ZTIMER 的結(jié)構(gòu)注釋?zhuān)?/span>

/**
*@classaw_plc_fb_ztimer_t
*@parentaw_plc_fb_t
*@annotation["fb"]
*循環(huán)定時(shí)器。
*
*>當(dāng)輸入 IN 為 TRUE 時(shí),開(kāi)始計(jì)時(shí),輸出 Q 為 FALSE,ET 開(kāi)始記錄過(guò)去的時(shí)間。
*>定時(shí)時(shí)間到時(shí),COUNT 增加 1,輸出 Q 在本次循環(huán)為 TRUE,ET 重置為0。
*>輸入 IN 為 FALSE 時(shí)重置定時(shí)器。
*/
typedefstruct_aw_plc_fb_ztimer_t{
aw_plc_fb_tfb;

/**
*@property{bool_t}in
*@annotation["in"]
*為 TRUE 開(kāi)始計(jì)時(shí),為 FALSE 時(shí)重置定時(shí)器。
*/
bool_tin:1;

/**
*@property{iec_time_t}pt
*@annotation["in"]
*預(yù)設(shè)時(shí)間(ms)。
*/
iec_time_tpt;

/**
*@property{bool_t}q
*@annotation["default","out"]
*定時(shí)時(shí)間是否到(僅在時(shí)間到的當(dāng)次循環(huán)為 TRUE)。
*/
bool_tq:1;

/**
*@property{iec_time_t}et
*@annotation["out"]
*過(guò)去時(shí)間(ms)。
*/
iec_time_tet;

/**
*@property{uint32_t}count
*@annotation["out"]
*定時(shí)器時(shí)間到的次數(shù)。
*/
uint32_tcount;

/**
*@property{bool_t}prev_in
*@annotation["private"]
*前一次的輸入。
*/
bool_tprev_in:1;

/**
*@property{uint8_t}state
*@annotation["private"]
*狀態(tài)。
*/
uint8_tstate;

/**
*@property{iec_time_t}current_time
*@annotation["private"]
*當(dāng)前時(shí)間(ms)。
*/
iec_time_tcurrent_time;

/**
*@property{iec_time_t}start_time
*@annotation["private"]
*開(kāi)始時(shí)間(ms)。
*/
iec_time_tstart_time;

}aw_plc_fb_ztimer_t;

*上面的代碼看起來(lái)很美觀,讀起來(lái)很舒服,但是寫(xiě)起來(lái)卻是有些費(fèi)勁。3. IDE 需要功能塊的描述信息,以方便把它呈現(xiàn)到界面上。比如 ZTIMER 的描述信息如下:

{
"type":"fb_zlg_misc.ztimer",
"real_type":"ZTIMER",
"helpUrl":"https://developer.zlg.cn",
"style":"fb",
"desc":"循環(huán)定時(shí)器。 >當(dāng)輸入 IN 為 TRUE 時(shí),開(kāi)始計(jì)時(shí),輸出 Q 為 FALSE,ET 開(kāi)始記錄過(guò)去的時(shí)間。
>定時(shí)時(shí)間到時(shí),COUNT 增加 1,輸出 Q 在本次循環(huán)為 TRUE,ET 重置為0。 >輸入 IN 為 FALSE 時(shí)重置定時(shí)器。",
"ins":[
{
"name":"IN",
"desc":"為 TRUE 開(kāi)始計(jì)時(shí),為 FALSE 時(shí)重置定時(shí)器。",
"min_connections":1,
"max_connections":1,
"data_type":"BOOL"
},
{
"name":"PT",
"desc":"預(yù)設(shè)時(shí)間(ms)。",
"min_connections":1,
"max_connections":1,
"data_type":"TIME"
}
],
"outs":[
{
"name":"Q",
"desc":"定時(shí)時(shí)間是否到(僅在時(shí)間到的當(dāng)次循環(huán)為 TRUE)。",
"data_type":"BOOL"
},
{
"name":"ET",
"desc":"過(guò)去時(shí)間(ms)。",
"data_type":"TIME"
},
{
"name":"COUNT",
"desc":"定時(shí)器時(shí)間到的次數(shù)。",
"data_type":"DWORD"
}
]

}

*這個(gè) JSON 文件中的內(nèi)容,和前面結(jié)構(gòu)的注釋很相似,除了呈現(xiàn)的格式不同,同時(shí)還加了一些新內(nèi)容。4. IDE 需要的文檔。功能塊需要提供一個(gè) markdown 文檔,這個(gè)文檔會(huì)被轉(zhuǎn)換成 html,在用戶查看幫助時(shí)顯示給用戶。ZTIMER 的文檔內(nèi)容如下:

#ZTIMER

##功能

循環(huán)定時(shí)器。

>當(dāng)輸入 IN 為 TRUE 時(shí),開(kāi)始計(jì)時(shí),輸出 Q 為 FALSE,ET 開(kāi)始記錄過(guò)去的時(shí)間。
>定時(shí)時(shí)間到時(shí),COUNT 增加 1,輸出 Q 在本次循環(huán)為 TRUE,ET 重置為0。
>輸入 IN 為 FALSE 時(shí)重置定時(shí)器。

##輸入

* IN **BOOL**為 TRUE 開(kāi)始計(jì)時(shí),為 FALSE 時(shí)重置定時(shí)器。
* PT **TIME**預(yù)設(shè)時(shí)間(ms)。

##輸出

* Q **BOOL**定時(shí)時(shí)間是否到(僅在時(shí)間到的當(dāng)次循環(huán)為 TRUE)。
* ET **TIME**過(guò)去時(shí)間(ms)。

* COUNT **DWORD**定時(shí)器時(shí)間到的次數(shù)。 *這個(gè)文檔的內(nèi)容和前面結(jié)構(gòu)的注釋?zhuān)诵问讲煌?,?nèi)容是差不多的。很抱歉貼了這么代碼,希望您并沒(méi)仔細(xì)去讀它們。不要被這些代碼嚇到,它們都是自動(dòng)生成的。如果手工去寫(xiě)這些代碼,一天能寫(xiě)一個(gè)功能塊就不錯(cuò)了,不但辛苦而且容易出錯(cuò)。這些工作必須自動(dòng)完成!所以 AWPLC 中提供了一個(gè)代碼生成器,實(shí)測(cè)這個(gè)代碼生成器讓工作效率提高 10倍,幸福指數(shù)提高 10倍。

在進(jìn)入正題前,我們先聊一下代碼生成器的基本知識(shí)。

70e5e40e-5a63-11ed-a3b6-dac502259ad0.jpg代碼生成器基本知識(shí)

* 編寫(xiě)能編寫(xiě)代碼的代碼。-- 《程序員修煉之道》

代碼生成器是一個(gè)普通程序,它能夠生成另外的目標(biāo)代碼??梢圆灰a生成器,直接編寫(xiě)目標(biāo)代碼嗎?通常情況下是可以的,但是這違背了優(yōu)秀程序員的第一美德-懶惰。因?yàn)閼卸?,所以能讓?jì)算機(jī)做的事,優(yōu)秀程序員是不會(huì)自己去做的。

這里所說(shuō)的目標(biāo)代碼,也并非一定是嚴(yán)格意義上的代碼,也可能是另外一些數(shù)據(jù)。當(dāng)然,有時(shí)候要嚴(yán)格區(qū)分?jǐn)?shù)據(jù)和代碼,本身就是一件困難的事情。不過(guò),這不是我們要說(shuō)的重點(diǎn),重點(diǎn)是通過(guò)代碼生成器提升我們的工作效率。*一個(gè)人的數(shù)據(jù)就是另外一個(gè)人的代碼。--《編程珠璣 II》1.代碼生成器的分類(lèi)要說(shuō)分類(lèi),就要先說(shuō)分類(lèi)的標(biāo)準(zhǔn),在不同的分類(lèi)標(biāo)準(zhǔn)和分類(lèi)依據(jù)下,分出的類(lèi)別迥異?!冻绦騿T修煉之道》里提到的一個(gè)分類(lèi)標(biāo)準(zhǔn)具有極強(qiáng)的實(shí)用意義,這里我們重點(diǎn)介紹一下。它根據(jù)生成的目標(biāo)代碼是否需要二次修改來(lái)分類(lèi),將代碼生成器分為兩類(lèi):
  • 被動(dòng)代碼生成器目標(biāo)代碼生成之后,需要進(jìn)行修改和完善,然后獨(dú)立發(fā)展和維護(hù),與代碼生成器再與關(guān)系。比如 IDE 的 Wizard 就是此例。前面提到的自定義控件生成器,代碼生成之后,你需要在上面添加需要的功能。如果過(guò)了一段時(shí)間,你想為控件添加一個(gè)新的屬性,可能會(huì)遇到一點(diǎn)麻煩,要么手工添加;要么重新生成代碼,然后把之前修改的代碼重新加上,無(wú)論哪種方式都不是愉快的方式。被動(dòng)代碼生成器雖然有它的缺陷,但是仍然可以給我們帶來(lái)很大幫助。

  • 主動(dòng)代碼生成器目標(biāo)代碼生成之后,不需要進(jìn)行修改和完善,每次都重新生成,如果需要修改,修改元數(shù)據(jù)和代碼生成器。比如編譯器就是此例。前面提到的 MVVM 的 ViewModel 和 AWFlow 應(yīng)用代碼生成也屬于此類(lèi)。如果可以,優(yōu)先使用主動(dòng)代碼生成器。

2.基本形式71186a28-5a63-11ed-a3b6-dac502259ad0.png

這是代碼生成器的基本形式:代碼生成器讀取元數(shù)據(jù),生成目標(biāo)代碼。元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),這里是描述目標(biāo)代碼的數(shù)據(jù),也就是控制目標(biāo)代碼的參數(shù)。一般情況下,目標(biāo)代碼整體結(jié)構(gòu)由代碼生成器決定,而變化的部分由元數(shù)據(jù)決定。

代碼生成器本身一個(gè)很有意思的話題,有機(jī)會(huì)可以專(zhuān)門(mén)來(lái)聊聊,本文就不扯遠(yuǎn)了。

70e5e40e-5a63-11ed-a3b6-dac502259ad0.jpgAWPLC中的代碼生成器

按前面代碼生成器的分類(lèi)方式,AWPLC 里實(shí)現(xiàn)了一個(gè)主動(dòng)代碼生成器,實(shí)現(xiàn)成主動(dòng)代碼生成器是很重要的,AWPLC 還在快速迭代中,有些接口可能會(huì)變化,主動(dòng)代碼生成器保證,即使接口有變化,也只需要運(yùn)行一些腳本,重新生成目標(biāo)文件即可。

1.基本架構(gòu)

AWPLC 功能塊代碼生成器架構(gòu)如下圖所示。其中功能塊描述文件就是前面所說(shuō)的元數(shù)據(jù),代碼生成器用它生成前面介紹的各種代碼和數(shù)據(jù)。713afc82-5a63-11ed-a3b6-dac502259ad0.png

2.功能塊描述文件格式

描述文件用標(biāo)準(zhǔn)的 JSON 格式,其內(nèi)容包括兩個(gè)部分:

2.1基本信息

基本信息包括:

  • name 功能塊的名稱。英文小寫(xiě),必須是合格的 C 語(yǔ)言變量名;
  • category 功能塊所屬的分類(lèi)。各層級(jí)之間用/分隔,它決定了生成文件的位置;
  • is_function_block true 表示功能塊,false 表示函數(shù);
  • impl 具體實(shí)現(xiàn)的源文件;
  • author 作者聯(lián)系方式;
  • version 版本號(hào);;
  • date 更新時(shí)間;
  • desc 功能描述;
  • properties 屬性列表。具體定義如下。

示例:

"name":"ztimer",
"category":"zlg/misc",
"is_function_block":true,
"impl":"input/zlg/misc/ztimer.c",
"author":"LiXianJing",
"desc":"循環(huán)定時(shí)器。 >當(dāng)輸入 IN 為 TRUE 時(shí),開(kāi)始計(jì)時(shí),輸出 Q 為 FALSE,ET 開(kāi)始記錄過(guò)去的時(shí)間>。 >定時(shí)時(shí)間到時(shí),COUNT 增加 1,輸出 Q 在本次循環(huán)為 TRUE,ET 重置為0。 >輸入 IN 為 FALSE 時(shí)重
置定時(shí)器。",

2.2屬性描述對(duì)于每個(gè)屬性,又包括下列信息:
  • name 屬性名;
  • desc 屬性描述;
  • type 實(shí)際的數(shù)據(jù)類(lèi)型;
  • data_type(可選)用于在 IDE 中時(shí)類(lèi)型檢查,缺省為 type 對(duì)應(yīng)的 IEC 的數(shù)據(jù)類(lèi)型,但是有時(shí)可用 ANY_INT 和 ANY_NUM 等來(lái)放寬類(lèi)型檢查;
  • annotation 用于額外的標(biāo)識(shí)。目前主要用于指定輸入輸出等特性。
示例:

{
"name":"count",
"desc":"定時(shí)器時(shí)間到的次數(shù)。",
"type":"uint32_t",
"annotation":{
"out":true
}

},

2.3使用方法

代碼生成器用 nodejs 編寫(xiě),需要安裝 nodejs。具體用法如下:

node gen.js 描述文件名。

如:

nodegen.jsinput/zlg/misc/ztimer.json

上面介紹了用 C 語(yǔ)言開(kāi)發(fā)原生功能塊的方法。當(dāng)然,也可以用 IEC 61131-3 中一些語(yǔ)言開(kāi)發(fā)功能塊,除此之外,AWPLC 還會(huì)支持用 AWBlock 開(kāi)發(fā)功能塊,在后續(xù)文章中,我們將一一介紹,敬請(qǐng)關(guān)注。AWPLC 目前還處于開(kāi)發(fā)階段的早期,寫(xiě)這個(gè)系列文章的目的,除了用來(lái)驗(yàn)證目前所做的工作外,還希望得到大家的指點(diǎn)和反饋。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20435

    瀏覽量

    333901
  • plc
    plc
    +關(guān)注

    關(guān)注

    5051

    文章

    14587

    瀏覽量

    486786
  • 生成器
    +關(guān)注

    關(guān)注

    7

    文章

    322

    瀏覽量

    22702

原文標(biāo)題:【產(chǎn)品應(yīng)用】用 AWTK 和 AWPLC 快速開(kāi)發(fā)嵌入式應(yīng)用程序 (5)- 自定義功能塊(下)

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    電能質(zhì)量在線監(jiān)測(cè)裝置的自定義監(jiān)測(cè)時(shí)段功能有哪些應(yīng)用場(chǎng)景?

    電能質(zhì)量在線監(jiān)測(cè)裝置的 自定義監(jiān)測(cè)時(shí)段功能 ,核心價(jià)值是通過(guò) “按需配置監(jiān)測(cè)時(shí)間、采樣頻率和數(shù)據(jù)策略”,實(shí)現(xiàn)精準(zhǔn)監(jiān)測(cè)、資源優(yōu)化與數(shù)據(jù)針對(duì)性分析,其應(yīng)用場(chǎng)景覆蓋工業(yè)生產(chǎn)、商業(yè)運(yùn)營(yíng)、電網(wǎng)運(yùn)維、特殊保障等
    的頭像 發(fā)表于 12-10 14:01 ?402次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置的<b class='flag-5'>自定義</b>監(jiān)測(cè)時(shí)段<b class='flag-5'>功能</b>有哪些應(yīng)用場(chǎng)景?

    電能質(zhì)量在線監(jiān)測(cè)裝置的自定義監(jiān)測(cè)時(shí)段功能與離線監(jiān)測(cè)有什么區(qū)別?

    電能質(zhì)量在線監(jiān)測(cè)裝置的 自定義監(jiān)測(cè)時(shí)段功能 與 離線監(jiān)測(cè) 是兩個(gè)不同維度的功能,核心區(qū)別在于 設(shè)計(jì)目標(biāo)、網(wǎng)絡(luò)依賴、數(shù)據(jù)流轉(zhuǎn)方式 及 應(yīng)用場(chǎng)景 ,具體差異可從以下多維度展開(kāi): 一、核心定義
    的頭像 發(fā)表于 12-10 14:00 ?465次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置的<b class='flag-5'>自定義</b>監(jiān)測(cè)時(shí)段<b class='flag-5'>功能</b>與離線監(jiān)測(cè)有什么區(qū)別?

    無(wú)圖形界面模式下自定義檢查工具的應(yīng)用

    此前文章已介紹 ANSA 中的自定義檢查工具。本文將探討該功能在無(wú)圖形界面(No-GUI)模式下的應(yīng)用,旨在滿足標(biāo)準(zhǔn)化工作流程的需求,適用于需要高度自動(dòng)化的前處理場(chǎng)景。通過(guò)集成自定義檢查,用戶可實(shí)現(xiàn)工作流程的高效自動(dòng)化運(yùn)行。
    的頭像 發(fā)表于 11-30 14:13 ?577次閱讀
    無(wú)圖形界面模式下<b class='flag-5'>自定義</b>檢查工具的應(yīng)用

    采用匯編指示符來(lái)使用自定義指令

    * 使用riscv-nuclei-elf-objdump -d a.out &gt; main.dump命令查看反匯編代碼,結(jié)果如下所示 如圖所示,在指定位置插入了自定義的指令數(shù)據(jù)。 2
    發(fā)表于 10-28 06:02

    NucleiStudio如何生成.verilog文件和.dasm文件,以及對(duì).dasm文件中自定義指令反匯編結(jié)果分析

    文件,以及對(duì).dasm文件中自定義指令反匯編結(jié)果分析。 一、如何生成.verilog和.dasm文件文件 項(xiàng)目右鍵選擇Properties 選擇C/C++ Build下面的Setting 更改
    發(fā)表于 10-24 06:33

    如何使用SDK進(jìn)行自定義音頻播放功能

    在上一篇文章安信可離線語(yǔ)音模組 VC-01、VC-02 系列教程 【二次開(kāi)發(fā)篇】自定義音頻替換失敗過(guò)程中,簡(jiǎn)要概述了res_build_tool.py 文件, 其主要的作用就是將音頻文件進(jìn)行轉(zhuǎn)換,從而使編譯固件的時(shí)候能夠?qū)⒁纛l文件編譯到BIN中,然后在各項(xiàng)事件觸發(fā)的時(shí)候?qū)崿F(xiàn)播放。
    的頭像 發(fā)表于 09-25 15:52 ?3675次閱讀
    如何使用SDK進(jìn)行<b class='flag-5'>自定義</b>音頻播放<b class='flag-5'>功能</b>

    LOTO示波器自定義解碼功能—CANFD解碼

    /?spm_id_from=333.1365.list.card_archive.click 。 視頻中僅對(duì)串口進(jìn)行解碼演示,正好我們從客戶手中拿到了一USB轉(zhuǎn)CAN/CANFD模塊,如下圖所示, 本文借此對(duì)自定義解碼功能
    的頭像 發(fā)表于 07-11 10:34 ?1048次閱讀
    LOTO示波器<b class='flag-5'>自定義</b>解碼<b class='flag-5'>功能</b>—CANFD解碼

    大彩講堂:VisualTFT軟件如何自定義圓形進(jìn)度條

    VisualTFT軟件如何自定義圓形進(jìn)度條
    的頭像 發(fā)表于 07-07 17:10 ?1614次閱讀
    大彩講堂:VisualTFT軟件如何<b class='flag-5'>自定義</b>圓形進(jìn)度條

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細(xì)講解了自定義規(guī)則的設(shè)計(jì)與實(shí)例。? ” ? 演講主要圍繞 加強(qiáng) KiCad 中的自定義
    的頭像 發(fā)表于 06-16 11:17 ?2108次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤(pán)解決方案

    自定義鍵盤(pán)是一種替換系統(tǒng)默認(rèn)鍵盤(pán)的解決方案,可實(shí)現(xiàn)鍵盤(pán)個(gè)性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對(duì)按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤(pán)可以
    的頭像 發(fā)表于 06-05 14:19 ?2386次閱讀

    SOLIDWORKS 2025支持電氣元件庫(kù)的自定義擴(kuò)展

    在快速發(fā)展的電氣設(shè)計(jì)領(lǐng)域,擁有一款能夠靈活應(yīng)對(duì)各種設(shè)計(jì)需求的CAD軟件至關(guān)重要。SOLIDWORKS?2025作為CAD軟件領(lǐng)域的佼佼者,通過(guò)引入對(duì)電氣元件庫(kù)自定義擴(kuò)展的支持,為用戶帶來(lái)
    的頭像 發(fā)表于 05-30 13:42 ?796次閱讀
    SOLIDWORKS 2025支持電氣元件庫(kù)的<b class='flag-5'>自定義</b>和<b class='flag-5'>擴(kuò)展</b>

    LabVIEW運(yùn)動(dòng)控制(三):EtherCAT運(yùn)動(dòng)控制器的高效加工指令自定義封裝

    LabVIEW高效加工指令自定義封裝
    的頭像 發(fā)表于 04-08 13:49 ?3621次閱讀
    LabVIEW運(yùn)動(dòng)控制(三):EtherCAT運(yùn)動(dòng)控制器的高效加工指令<b class='flag-5'>自定義</b>封裝

    custom.c中自定義代碼無(wú)法自動(dòng)保存怎么解決?

    我在custom.c中插入自定義代碼,當(dāng)我不保存就切換到其他文件時(shí),custom.c中的自定義代碼就會(huì)消失。我該如何解決這個(gè)問(wèn)題
    發(fā)表于 04-08 06:00

    EB Tresos狀態(tài)顯示無(wú)法運(yùn)行生成器是什么原因?qū)е碌模?/a>

    我正在嘗試集成 MCAL 包,但在生成過(guò)程中收到如下驗(yàn)證錯(cuò)誤:“無(wú)法為模塊”Dio_TS_T40D2M20I0R0“運(yùn)行生成器
    發(fā)表于 04-02 08:06

    如何添加自定義單板

    在開(kāi)發(fā)過(guò)程中,用戶有時(shí)需要?jiǎng)?chuàng)建自定義板配置。本節(jié)將通過(guò)一個(gè)實(shí)例講解用戶如何創(chuàng)建屬于自己的machine,下面以g2l-test.conf為例進(jìn)行說(shuō)明。
    的頭像 發(fā)表于 03-12 14:43 ?1343次閱讀