RM新时代网站-首页

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

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

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

AWTK控件serial_widget的使用方法

AGk5_ZLG_zhiyua ? 來源:ZLG致遠(yuǎn)電子 ? 作者:ZLG開發(fā)者社區(qū) ? 2022-08-05 12:09 ? 次閱讀

把串口做成一個(gè)控件并不新鮮,在VB里有個(gè)通信組件,就是用來簡(jiǎn)化串口編程的。最近AWTK也提供了這樣一個(gè)控件serial_widget,本文介紹一下它的使用方法。


基本功能

我們編寫一個(gè)簡(jiǎn)單的應(yīng)用程序,它有兩個(gè)功能:
  • 把收到的數(shù)據(jù)顯示出來。
  • 把界面輸入的數(shù)據(jù)發(fā)送給對(duì)方。


UI界面描述文件d524a6a4-1471-11ed-ba43-dac502259ad0.png
  "open" text="Open Device" x="10" y="100" w="160" h="36" />  "device"x="180"y="100"w="-200"h="36"text="/dev/ttys032"/>"send"text="SendMessage"x="10"y="150"w="160"h="36"/>  "send_msg"x="180"y="150"w="-200"h="36"text="helloserial"/>  "recv_msg"x="c"y="b:100"w="90%"h="100"/>  "serial"/>

接收數(shù)據(jù)

?先注冊(cè)數(shù)據(jù)事件的處理函數(shù)。

widget_child_on(win, "serial", EVT_DATA, on_data, win);

?在處理函數(shù)中讀取數(shù)據(jù)并顯示到界面上。


static ret_t on_data(void* ctx, event_t* e) { char text[128] = {0}; widget_t* win = WIDGET(ctx); serial_widget_t* serial = SERIAL_WIDGET(e->target); widget_t* label = widget_lookup(win, "recv_msg", TRUE); int32_t len = tk_istream_read(serial->istream, text, sizeof(text)-1); if(len > 0) {    text[len] = '0';    widget_set_text_utf8(label, text);  }returnRET_OK;}

發(fā)送數(shù)據(jù)

從界面讀取數(shù)據(jù),并發(fā)送到串口。


static ret_t on_send(void* ctx, event_t* e) { char text[128] = {0}; widget_t* win = WIDGET(ctx); serial_widget_t* serial = SERIAL_WIDGET(widget_lookup(win, "serial", TRUE)); widget_t* edit = widget_lookup(win, "send_msg", TRUE);  widget_get_text_utf8(edit, text, sizeof(text)-1);  tk_ostream_write_len(serial->ostream, text, strlen(text), 3000); return RET_OK;}

完整代碼請(qǐng)參考 serial 可以下載 awtk-c-demos 編譯運(yùn)行。


./bin/demo_serial


測(cè)試

下面操作是在 Linux/MacOS 上測(cè)試的,Windows 下需要安裝虛擬串口軟件,具體做法有些不同,請(qǐng)自行調(diào)整。

?使用socat創(chuàng)建虛擬串口


socat -d -d pty,raw,echo=0 pty,raw,echo=0

該命令會(huì)生成兩個(gè)設(shè)備文件,對(duì)應(yīng)串口的兩端(每次生成的設(shè)備名可能不同)。


2022/07/08 16:32:33 socat[1879] N PTY is /dev/ttys0322022/07/08 16:32:33 socat[1879] N PTY is /dev/ttys0332022/07/08 16:32:33 socat[1879] N starting data transfer loop with FDs [5,5] and [7,7]
?在AWTK 這端我們使用設(shè)備/dev/ttys032
?在另外一端讀取數(shù)據(jù)
打開一個(gè)新的終端,并運(yùn)行下面的命令(有數(shù)據(jù)時(shí)自動(dòng)顯示出來):

cat /dev/ttys033
?在另外一端發(fā)送數(shù)據(jù)

打開一個(gè)新的終端,并運(yùn)行下面的命令(發(fā)送當(dāng)前時(shí)間字符串):


date >/dev/ttys033


使用fscript進(jìn)行串口編程

也可以使用 fscript 進(jìn)行串口編程(配合 AWBlock 就簡(jiǎn)單了)。AWTK 里提供一個(gè)與前面功能相同的例子,總體來看要簡(jiǎn)潔不少。

  "打開設(shè)備" x="16" y="15" w="76" h="34" >    "on:click">      var device = widget_get('device', 'text')      widget_set('serial','device', device)        "device" x="119" y="13" w="178" h="38" text="/dev/ttys028" />  "recv" x="5" y="123" w="303" h="101" />  "send" text="hello serial" x="5" y="273" w="200" h="34" />  "button" tr_text="send" x="220" y="274" w="81" h="34" >    "on:click">      var os = widget_get('serial','ostream')      var msg = widget_get('send', 'text')      ostream_write_string(os, msg)        "serial">    "on:data">      var is = widget_get('self','istream')      var msg = istream_read_string(is, 100, 0)      widget_set('recv', 'text', msg)      

在 AWTK 根目錄下可以運(yùn)行該例子,測(cè)試方法與前面相同。


./bin/preview_ui design/default/ui/serial.xml


移植

目前串口只實(shí)現(xiàn)了Windows, Linux, MacOS, Android 和 AWorks 等平臺(tái),其它平臺(tái)需要自己移植。

請(qǐng)參考AWorks平臺(tái)的移植:

src/platforms/aworkslp/serial_helper.c

審核編輯:湯梓紅

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

    關(guān)注

    18

    文章

    6024

    瀏覽量

    135949
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1551

    瀏覽量

    76421

原文標(biāo)題:【Z站推薦】AWTK最新動(dòng)態(tài):使用serial_widget簡(jiǎn)化串口編程

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    急求labview中表格控件使用方法

    請(qǐng)問誰有l(wèi)abview中表格控件使用方法的教程最后走再有寫例子,可以發(fā)給我一份嗎?謝謝
    發(fā)表于 08-22 10:46

    emWin實(shí)例速成教程007_Graph波形曲線圖形控件使用方法

    emWin實(shí)例速成教程007_Graph波形曲線圖形控件使用方法
    發(fā)表于 11-09 12:37

    emWin實(shí)例速成教程008_IconView圖標(biāo)控件使用方法

    emWin實(shí)例速成教程008_IconView圖標(biāo)控件使用方法
    發(fā)表于 11-09 12:39

    emWin實(shí)例速成教程009_ListView列表框控件使用方法

    emWin實(shí)例速成教程009_ListView列表框控件使用方法
    發(fā)表于 11-09 12:40

    emWin實(shí)例速成教程010_Menu標(biāo)題菜單控件使用方法

    emWin實(shí)例速成教程010_Menu標(biāo)題菜單控件使用方法
    發(fā)表于 11-09 12:42

    emWin實(shí)例速成教程011_Multipage多頁控件使用方法

    emWin實(shí)例速成教程011_Multipage多頁控件使用方法
    發(fā)表于 11-09 12:44

    關(guān)于表格控件的一些使用方法

    關(guān)于表格控件的一些使用方法,里面有源程序,說明文檔,不足之處,希望指點(diǎn)指點(diǎn)
    發(fā)表于 09-20 22:57

    實(shí)現(xiàn)iOS-Widget方法詳解

    一、Widget總覽 Widget 是 iOS8 推出第一版,在iOS 10 進(jìn)行大幅度的優(yōu)化 Widget可以讓用戶更快地訪問到其感興趣的內(nèi)容,官方的說法是用來呈現(xiàn)功能比較簡(jiǎn)單的,交互性不強(qiáng)的東西
    發(fā)表于 09-25 17:20 ?0次下載
    實(shí)現(xiàn)iOS-<b class='flag-5'>Widget</b>的<b class='flag-5'>方法</b>詳解

    AWTK基本性能測(cè)試及在Linux下AWTK與Qt的性能對(duì)比

    先在AWorks系統(tǒng)下分別測(cè)試AWTK的Debug版本和Release版本,進(jìn)行AWTK自身對(duì)比,然后在Linux系統(tǒng)下測(cè)試AWTK,與AWorks平臺(tái)進(jìn)行簡(jiǎn)單對(duì)比,對(duì)比AWTK跨平臺(tái)
    發(fā)表于 03-09 09:53 ?7051次閱讀
    <b class='flag-5'>AWTK</b>基本性能測(cè)試及在Linux下<b class='flag-5'>AWTK</b>與Qt的性能對(duì)比

    【Z站推薦】AWTK最新動(dòng)態(tài):使用serial_widget簡(jiǎn)化串口編程

    把串口做成一個(gè)控件并不新鮮,在VB里有個(gè)通信組件,就是用來簡(jiǎn)化串口編程的。最近AWTK也提供了這樣一個(gè)控件serial_widget,本文介紹一下它的
    的頭像 發(fā)表于 08-08 10:06 ?858次閱讀
    【Z站推薦】<b class='flag-5'>AWTK</b>最新動(dòng)態(tài):使用<b class='flag-5'>serial_widget</b>簡(jiǎn)化串口編程

    AWTK使用經(jīng)驗(yàn)】如何播放視頻或攝像頭畫面

    目前想在ZTP800示教器的AWTK程序中實(shí)現(xiàn)播放視頻或者播放攝像頭畫面的效果,可以借助AWTK的mutable_image控件或usb_camera控件來顯示畫
    的頭像 發(fā)表于 07-04 08:25 ?608次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗(yàn)】如何播放視頻或攝像頭畫面

    AWTK使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

    目前想在AWTK中顯示炫酷流暢的圖片動(dòng)畫,此時(shí)可以用video_image控件來播放序列幀動(dòng)畫。本篇文章將介紹該控件的原理和使用方法。圖1ZTP800示教器運(yùn)行v
    的頭像 發(fā)表于 07-18 08:25 ?413次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

    圖片動(dòng)畫控件和Video image控件使用方法

    在UI開發(fā)過程中,序列幀基本是繞不開的,AWTK 支持多種方法實(shí)現(xiàn)序列幀顯示,本文介紹圖片動(dòng)畫控件和Video image控件使用方法。
    的頭像 發(fā)表于 08-06 16:44 ?851次閱讀
    圖片動(dòng)畫<b class='flag-5'>控件</b>和Video image<b class='flag-5'>控件</b>的<b class='flag-5'>使用方法</b>

    AWTK最新動(dòng)態(tài)】AWTK 1.8版本發(fā)布

    AWTK是一套基于C語言開發(fā)的跨平臺(tái)GUI框架,目前正式推出1.8版本。本次更新不僅對(duì)許多細(xì)節(jié)進(jìn)行了優(yōu)化,還增添了眾多重要特性和文檔資料。此外,還引入了三款創(chuàng)新控件和兩個(gè)與AWTK相關(guān)項(xiàng)目。A
    的頭像 發(fā)表于 08-30 12:48 ?429次閱讀
    【<b class='flag-5'>AWTK</b>最新動(dòng)態(tài)】<b class='flag-5'>AWTK</b> 1.8版本發(fā)布

    AWTK 最新動(dòng)態(tài):支持瀏覽器控件

    導(dǎo)讀AWTK瀏覽器控件,基于webview項(xiàng)目實(shí)現(xiàn),將瀏覽器嵌入到AWTK應(yīng)用程序中,讓開發(fā)者可以方便的集成在線幫助和調(diào)用地圖等功能。awtk-widget-web-view是基于we
    的頭像 發(fā)表于 11-20 01:05 ?187次閱讀
    <b class='flag-5'>AWTK</b> 最新動(dòng)態(tài):支持瀏覽器<b class='flag-5'>控件</b>
    RM新时代网站-首页