マスクデータ( vt 表示用画面データ)の...

15
Source : www.isobus.net ママママママVT ママママママママ マママママ Motobayashi 12M - 00 ママママママママママママママママママママママママママママ ママ 「」 24 11 20-21 ママママママ ママ マママママ ママママママママママママ () ママママ

Upload: talmai

Post on 25-Jan-2016

134 views

Category:

Documents


13 download

DESCRIPTION

実用技術開発事業「通信制御共通化技術の開発」ワークショップ                        平成 24 年 11 月 20-21 日,芽室研究拠点. Motobayashi. 12M - 00.  マスクデータ( VT 表示用画面データ)の                       解説と実践. Source : www.isobus.net. (独) 農研機構・中央 農業総合研究 センター 元林 浩 太. 概要. Motobayashi. 12M - 01. VT ( Virtual Terminal 、 仮想端末)とは、 - PowerPoint PPT Presentation

TRANSCRIPT

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 - 05

12H12

オブジェクト ツール・バー

オブジェクトの外観

オブジェクトの属性値

ツリー表示

“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 等も含まれる

接続デバイス一覧に表示される部分

オブジェクトの階層( softkey mask )

12M09

Motobayashi12M - 09

画面切り替えや指定入力に用いるSoftKey(5個以上の場合は順次下に列挙される)

オブジェクトの階層( data mask の主要部分)

12M10

Motobayashi12M - 10

表示&入力を行う datamask の主要部分

最後の「おまじない」

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

Object Pool の表示結果

12H

Motobayashi12M - 14

CAN(作業機バス)

ECU( NaroCanBoard

作業機バス用標準コネクタ

Virtual Terminal( Comfort Terminal )

12H16