精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AWTK控件serial_widget的使用方法

AGk5_ZLG_zhiyua ? 來源:ZLG致遠電子 ? 作者:ZLG開發者社區 ? 2022-08-05 12:09 ? 次閱讀

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


基本功能

我們編寫一個簡單的應用程序,它有兩個功能:
  • 把收到的數據顯示出來。
  • 把界面輸入的數據發送給對方。


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"/>

接收數據

?先注冊數據事件的處理函數。

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

?在處理函數中讀取數據并顯示到界面上。


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;}

發送數據

從界面讀取數據,并發送到串口


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;}

完整代碼請參考 serial 可以下載 awtk-c-demos 編譯運行。


./bin/demo_serial


測試

下面操作是在 Linux/MacOS 上測試的,Windows 下需要安裝虛擬串口軟件,具體做法有些不同,請自行調整。

?使用socat創建虛擬串口


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

該命令會生成兩個設備文件,對應串口的兩端(每次生成的設備名可能不同)。


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 這端我們使用設備/dev/ttys032
?在另外一端讀取數據
打開一個新的終端,并運行下面的命令(有數據時自動顯示出來):

cat /dev/ttys033
?在另外一端發送數據

打開一個新的終端,并運行下面的命令(發送當前時間字符串):


date >/dev/ttys033


使用fscript進行串口編程

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

  "打開設備" 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 根目錄下可以運行該例子,測試方法與前面相同。


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


移植

目前串口只實現了Windows, Linux, MacOS, Android 和 AWorks 等平臺,其它平臺需要自己移植。

請參考AWorks平臺的移植:

src/platforms/aworkslp/serial_helper.c

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    5977

    瀏覽量

    135869
  • 串口
    +關注

    關注

    14

    文章

    1547

    瀏覽量

    76228

原文標題:【Z站推薦】AWTK最新動態:使用serial_widget簡化串口編程

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    請問誰有labview中表格控件使用方法的教程最后走再有寫例子,可以發給我一份嗎?謝謝
    發表于 08-22 10:46

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

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

    emWin實例速成教程008_IconView圖標控件使用方法

    emWin實例速成教程008_IconView圖標控件使用方法
    發表于 11-09 12:39

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

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

    emWin實例速成教程010_Menu標題菜單控件使用方法

    emWin實例速成教程010_Menu標題菜單控件使用方法
    發表于 11-09 12:42

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

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

    關于表格控件的一些使用方法

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

    實現iOS-Widget方法詳解

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

    AWTK基本性能測試及在Linux下AWTK與Qt的性能對比

    先在AWorks系統下分別測試AWTK的Debug版本和Release版本,進行AWTK自身對比,然后在Linux系統下測試AWTK,與AWorks平臺進行簡單對比,對比AWTK跨平臺
    發表于 03-09 09:53 ?7011次閱讀
    <b class='flag-5'>AWTK</b>基本性能測試及在Linux下<b class='flag-5'>AWTK</b>與Qt的性能對比

    【Z站推薦】AWTK最新動態:使用serial_widget簡化串口編程

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

    AWTK使用經驗】如何播放視頻或攝像頭畫面

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

    AWTK使用經驗】如何實現序列幀動畫

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

    圖片動畫控件和Video image控件使用方法

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

    AWTK最新動態】AWTK 1.8版本發布

    AWTK是一套基于C語言開發的跨平臺GUI框架,目前正式推出1.8版本。本次更新不僅對許多細節進行了優化,還增添了眾多重要特性和文檔資料。此外,還引入了三款創新控件和兩個與AWTK相關項目。A
    的頭像 發表于 08-30 12:48 ?391次閱讀
    【<b class='flag-5'>AWTK</b>最新動態】<b class='flag-5'>AWTK</b> 1.8版本發布

    AWTK 最新動態:支持瀏覽器控件

    導讀AWTK瀏覽器控件,基于webview項目實現,將瀏覽器嵌入到AWTK應用程序中,讓開發者可以方便的集成在線幫助和調用地圖等功能。awtk-widget-web-view是基于we
    的頭像 發表于 11-20 01:05 ?118次閱讀
    <b class='flag-5'>AWTK</b> 最新動態:支持瀏覽器<b class='flag-5'>控件</b>