マスクデータ( vt 表示用画面データ)の...
DESCRIPTION
実用技術開発事業「通信制御共通化技術の開発」ワークショップ 平成 24 年 11 月 20-21 日,芽室研究拠点. Motobayashi. 12M - 00. マスクデータ( VT 表示用画面データ)の 解説と実践. Source : www.isobus.net. (独) 農研機構・中央 農業総合研究 センター 元林 浩 太. 概要. Motobayashi. 12M - 01. VT ( Virtual Terminal 、 仮想端末)とは、 - PowerPoint PPT PresentationTRANSCRIPT
Source : www.isobus.net
マスクデータ( VT 表示用画面データ)の 解説と実践
Motobayashi12M - 00
実用技術開発事業「通信制御共通化技術の開発」ワークショップ 平成 24 年 11 月20-21 日,芽室研究拠点
(独)農研機構・中央農業総合研究センター 元林浩太
概要 Motobayashi12M - 01
VT ( Virtual Terminal 、仮想端末)とは、 ・ ISOBUS で用いる唯一のユーザーインターフェース. ・ ISO11783-6 で仕様が詳細に決められている. ・グラフィックディスプレイとソフトキーを有する. ・画面の解像度は、 200x200 、 240x240 、 320x320 、 480x480 のいずれか. ・接続した作業機等( WorkingSet )に応じた操作画面が表示される.
“ 何か”とは、 ・接続された作業機等に対応した操作画面(マスク). ・マスクには、データキーマスク、ソフトキーマスク、アラームマスク等がある. ・マスクは、オブジェクトと呼ばれる個々の要素で構成される. ・ WorkingSet を記述するオブジェクトの集合体を、 ObjectPool という.
目的 : VT に何かを表示する
“ 表示”とは、 ・作業機バスに作業機が接続されると、作業機 ECU がアドレスクレームを行い、 作業機 ECU から VT に ObjectPool がロードされる.
・画面上に作業機の情報が表示されるとともに、必要な設定値等が入力可能となる.
12H08
使用する開発ツール Motobayashi12M - 02
12M02
「 Pool Edit 」 ・ ISO11783 準拠の Virtual Terminal のための、 GUI 作成用のエディタ. ・ フィンランドの Helsinki University of Technology (現 Aalto University )が開発. ・ オープンソース( GPL ) (→ Web 上でダウンロード可能) ・ Java で記述され、 Windows と Linux でテストされた . ・ GUI の保存と編集に、 XML ( Extensible Markup Language )を使用. ・ 使用する XML のフォーマットは、「 IsoAgLib 」フォーマットに一部変更を加えた. ・ 作業機制御アプリケーションは、この XML を読みこみ、 ISO11783 用バイナリ 表現に変換し、 VT にロードする. (以上は、 PoolEditの User’s Manual より引用)
・ ただし、開発元では開発終了 (→意外とバグが多い)
・ ここでは、オリジナルの「 PoolEdit 」を一部修正して使用する. ・ 参考資料は、 User’s Manual ( Aalto Univ. からダウンロード)、 ISO11783-6
本稿での説明
VT に表示するまでの流れ
12H11-B
Motobayashi12M - 03
XML パーサ “ pooleditparser”
Objectpool.hObjectpool.bin
マスクのプラン( ppt など)
MPLAB-X 等の開発環境
ECU
Virtual Terminal
Objectpool_export .XML
書き込み
プラグイン&ロード
ライブラリに加筆
GUI により ObjectPool を編集
XML 形式から構文変換( ISO11783-6 )
Objectpool .XML (一時保存ファイル)
ECU 開発支援ライブラリ“ AgriBusStdLib”
Object Pool エディタ “ PoolEdit”
供試システム(例)の外観
12H
Motobayashi12M - 04
ISO11783 VT(” Comfort Terminal” )
Note PC( WindowsXp ) 書込み機
(“ PICkit2” )
ECU(“NaroCanBoard”)
CANTerminator
Terminator
DC12V
VT 用 Adapter(ピン配置変更)
12M04
“PoolEdit” の操作画面 Motobayashi12M - 06
12H12
オブジェクト ツール・バー
オブジェクトの外観
オブジェクトの属性値
ツリー表示
オブジェクトの属性(例)
オブジェクトの種類
“PoolEdit” の基本操作
12M07
Motobayashi12M - 07
起動 pooledit.jar をクリック (配布 USB メモリの ” pooledit_NARO2012A” フォルダに収録)
メニューから、 File → New 又は Open (例えば ” sample.xml” を指定)
オブジェクトを配置 オブジェクトボタンを、オブジェクト ツールバーからツリー表示へド・ラッグ 配置したオブジェクトの属性値を変更 (座標、高さ、幅、初期値、色、親 /子オブジェクト etc 、 OjbectType によって異なる)
必要に応じてオブジェクトの修正 (コピー、重ね順の変更、名称変更 etc )
ファイルの保存 メニューから、 File → Save as → 任意のファイル名( .xmlファイル) メニューから、 File → Export to Embedded XML → 任意のファイル名 ( Pooleditparser に引き渡す xml ファイル)
オブジェクトの階層( working set )
12M08
Motobayashi12M - 08
WorkingSet とは ISO11783ネットワーク上の一つの機能単位 概ね、ひとつの ECU に相当 datamask 、 softkeymask 等も含まれる
接続デバイス一覧に表示される部分
最後の「おまじない」
12M11
Motobayashi12M - 11
パーサ「 pooleditparser 」による変換
■C. 形式での出力 pooleditparser.exe filename_export.xml filename.h –d=400 –sh=80 – sw=120 -table■bin 形式での出力 pooleditparser.exe filename_export.xml filename.bin –d=400 –sh=80 – sw=120
表記 オプション 内容 -d dimension マスクのサイズ(正方形) -sw soft key width ソフトキーのサイズ(幅) -sh soft key height ソフトキーのサイズ(高さ) -table テーブル形式での出力
PoolEdit で作成した XML ファイル 変換後の出力ファイル
出力ファイル例
12H13
Motobayashi12M - 12
unsigned char *pool = {<?xml version="1.0" encoding="UTF-8"?><objectpool dimension="200" fix_bitmap_path="images\" sk_height="32" sk_width="60" std_bitmap_path="images\"><workingset background_colour="white" id="256" name="workingset" selectable="yes" use="designator"> <include_object id="258" name="datamask" role="active_mask"/> <container height="200" hidden="no" id="257" name="container0" pos_x="0" pos_y="0" use="designator" width="200"/></workingset><datamask background_colour="187" id="258" name="datamask" use="mask"> <include_object id="275" name="softkeymask" role="soft_key_mask"/> <container height="200" hidden="no" id="259" name="container0_SpeedMeter0" pos_x="0" pos_y="0" use="mask" width="200"> <ellipse ellipse_type="closed" end_angle="0" height="151" id="260" name="ellipse0" pos_x="23" pos_y="15" start_angle="0" use="mask" width="151"> <include_object id="280" name="black" role="fill_attributes"/> <lineattributes id="261" line_art="1111111111111111" line_colour="17" line_width="1" name="black1" role="line_attributes" use="mask"/> </ellipse> (中略)<meter arc_and_tick_colour="30" block_col="0" block_row="0" border_colour="olive" end_angle="135" id="271" max_value="90" min_value="0" name="basicmeter1" needle_colour="maroon" number_of_ticks="10" options="clockwise+ticks" pos_x="30" pos_y="21" start_angle="0" use="mask" value="012" width="138"/> </container> <outputstring background_colour="227" height="12" horizontal_justification="middle" id="272" language="" length="11" name="label0" options="transparent" pos_x="2" pos_y="168" use="mask" value="WHEEL SPEED" width="196"> <include_object id="278" name="black8x12" role="font_attributes"/> </outputstring></datamask><softkeymask background_colour="white" id="275" name="softkeymask" use="designator"/> <lineattributes id="276" line_art="1111111111111111" line_colour="black" line_width="1" name="lineattributes"/> <fontattributes font_colour="52" font_size="6x8" font_style="" font_type="latin1" id="277" language="" name="black6x9" use="mask"/> <fontattributes font_colour="maroon" font_size="8x12" font_style="" font_type="latin1" id="278" language="" name="black8x12" use="mask"/> <fontattributes font_colour="52" font_size="12x16" font_style="" font_type="latin1" id="279" language="" name="black12x16" use="mask"/> <fillattributes fill_colour="grey" fill_type="fillcolour" id="280" name="black" use="mask"/></objectpool>
unsigned char *pool = { 1, 1, 3, 200, 0, 200, 0, 0, 0, 0, 0, 1, 0, 1, 1, 2, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 5, 1, 24, 17, 1, 255, 255, 0, 4, 1, 15, 5, 1, 151, 0, 151, 0, 0, 0, 0, 24, 1, 0, 7, 1, 25, 2, 7, 255, 255, 0, 8, 1, 24, 23, 1, 255, 255, 0, 6, 1, 15, 8, 1, 141, 0, 141, 0, 0, 0, 0, 7, 1, 0, 9, 1, 11, 16, 0, 8, 0, 1, 21, 1, 1, 255, 255, 1, 1, 0, 48, 0, 10, 1, 11, 16, 0, 8, 0, 1, 21, 1, 1, 255, 255, 1, 2, 0, 51, 48, 0, 13, 1, 11, 30, 0, 8, 0, 1, 21, 1, 1, 255, 255, 1, 4, 0, 107, 109, 47, 104, 0, 3, 1, 3, 200, 0, 200, 0, 0, 9, 0, 4, 1, 23, 0, 15, 0, 6, 1, 28, 0, 20, 0, 9, 1, 91, 0, 136, 0, 10, 1, 44, 0, 87, 0, 11, 1, 91, 0, 37, 0, 12, 1, 136, 0, 87, 0 (中略)24, 1, 25, 2, 8, 255, 255, 0};
#define POOL_SIZE 437#define workingset 256#define datamask 258#define softkeymask 275#define lineattributes 276#define black6x9 277#define black 280
< .XML ファイルの例>
< .h ファイルの例>
“MPLAB-X IDE” の操作画面
12H
Motobayashi12M - 13
ECU 用ライブラリ“ AgriBusStdLib”
< ObjectPool 記述部分を .h ファイルから移植>
12H14