GUI 自動化ソフトを使って仕事を効率化する方法

【情報】
今日は、Mac , Windows , RaspberryPi で使える、 GUI 自動制御ソフトについてご紹介したいと思います。安価にかつ簡単に自動化環境を構築されたい方々にとって有用な情報となれば幸いです。


Windows で使える、 GUI 自動制御ソフト】
ここ数年前ぐらいから、AI だのロボットが話題となっています。
人間の仕事を奪うのではなどの心配もされている様ですが、非人間的な作業から解放されて、人間がより安全で快適な環境で作業出来る事を実現し、人間らしく創造性の高い事に集中出来る様になるのであれば、大歓迎といったところでしょうか。

私たち技術者がする仕事の中にも、とても退屈で非人間的な仕事が残っていたりします。
例えば、回路図エディターで書いた回路図からBOMリストを作成し、実際に購買部門に発注してもらえる様なデータに形を整えて、データを共通データ・ベースへ登録する作業とか
実験で「Easy MCUser」からIoTデバイスへ送るデータをパラメーターを振って送信したいとか
GUI
を操作しなければテスト出来ないソフトウェアの検証作業とか
以上の様な作業が自動化したい作業の例として考えられます。。。Windows であれば、「VBA」を使えばかなりの事が出来ますが、ソフトウェア間で通信をしたりデータを受け渡ししたりしようとすると、それぞれ I/O の仕様を調べたり,場合によってはそもそも簡単にはデータの受け渡しが出来なかったりといった事があります。そんな時、人力で気合いを入れてやらなければならない仕事は、想像性もなく、間違いも発生しやすく、大変です。。。
今回ご紹介したいのは、そんな非人間的な作業から解放してくれる,ロボットをつくるための道具です。

マウス操作を自動化するソフトウェアの例
http://www.uwsc.info/
http://officezitan.com/?page_id=4200
http://www.susi-paku.com/paku-tinytask.html
http://toolmania.info/post-3620/

上記の様にマウス操作を自動化するソフトウェアは色々なものがありますが、今回は簡単で便利・一押しのソフト、「UWSC」をご紹介します。
UWSC」は、Windows 上でマウス/キーボードを自動制御する事が可能なソフトです。マウスやキーボードの操作をスクリプトとして記録し、再生するだけではなく、プログラミングによってさらに複雑な事が出来ます。実現出来る複雑な処理の中には、画像の判定をして合致していたらスクリプトを実行したりなどといった高度な事もあります。まるで、人間が GUI の操作でソフトウェアと対話しながら何らかの作業を実行する様な事が実現出来るというわけです。

では早速、【これだけ知っていれば、かなりの事が出来る!】的な基本構文についてご紹介します。


◎一定時間、スクリプトの実行を停止
書式の説明
Sleep
( )
・引数
 秒 スリープする秒数(最小=0.0011[mS])


◎任意の文字列をクリップボードに格納する
//
まずは変数「clpb」を宣言する
Dim clpb = "clpb
だよ"
//
以下のスクリプトを実行すると、クリップボードには「直接指定した文字列」が保存されます。
SendStr
(0, "直接指定した文字列")
//
以下スクリプトを実行すると、クリップボードには変数 clpb に格納された「clpbだよ」という文字列が保存されます。
SendStr
(0, clpb)

書式の説明
SendStr
( ID, 文字列 )
・引数
ID
Windowを識別するIDID=0 でクリップボードへ格納される)
  文字列 :送りたい文字列を指定


◎クリップボードの内容をスクリプト中の任意の変数に記憶させる
//
まずは変数「clpb」を宣言する
Dim clpb = ""
//
以下のスクリプトを実行すると、変数「clpb」へクリップボードの内容が格納される
clpb = GetStr
(0)


◎ループ実行中の処理を強制的に停止させる
If GetKeyState
(vk_end) then
Break
Endif


◎指定回数「XXXX」に達するまで、ループする
For A = 0 TO XXXX
:
:
Next


◎条件「XXXX」が満たされている間、ループする
While
(XXXX)
:
:
Wend


◎メッセージボックスへ表示任意の文字を表示させる
//
まずは変数「clpb0」を宣言して、初期値も設定する
Dim clpb0 = "
それそれ!"
//
以下のスクリプトを実行すると、メッセージボックスが現れて、変数「clpb」の内容(「それそれ!」)が表示される
MsgBox
(clpb0)


◎表示されたウィンドウの名称を取得する
//
まずは変数「Cond」を宣言して、初期値も設定する
Dim Cond = ""
//
変数「Cond」にマウスがある位置に表示されているウィンドウの名称を格納する
Cond = Status
(GetID(GET_ACTIVE_WIN), ST_TITLE)
//
以下のスクリプトを実行すると、メッセージボックスが現れて、変数「Cond」の内容が表示される
MsgBox
(Cond)


◎知っていると便利な Windows のキーボード・ショートカット
・チェック・ボックスのチェック/アン・チェック:「スペース」キー
・選択可能なテキスト・ボックス/チェック・ボックスなどの異動:「TAB」キー


◎大変参考になったサイト(もっと詳しく知りたい、もっと複雑な事をしたい時に)
http://www.uwsc.info/sample.html
UWSCで自動化 超速!! Windows マクロテクニック
http://canal22.org/category/advance/excel/
http://izagne.com/uwsc/#
http://uwscguide.seesaa.net/
http://nem.symphonic-net.com/uwsct/0610uwsct.html#MakingSupport
http://canal22.org/control/break/

GUI
制御を自動化させて、複数のソフト間でデータのやり取りをしたい場合など、「UWSC」を使う事でかなりの事が出来るのではないかと思います。自動化を推進したい方、退屈な作業から解放されたい方は、ぜひ「UWSC」と「Easy MCUser」の組合わせをご検討頂ければと思います。


Mac , Linux で使える、 GUI 自動制御ソフト】
自宅では主に Mac を使っている者として、Mac 上で動作する GUI 自動制御ソフトも忘れてはいけません。Mac 用としては、Apple Script から引き継がれた「Automator」で決まりと思います。又、Linux 用としては、「xautomation」なるものがありました。こちらは、ターミナルから直接コマンドを打ち込んでみて試した程度で、まだ本格的に使ってはいないのですが、感触的には
UWSC」と似ている感じです。これら2点のソフトもお勧めです。
それぞれ良い所があり、本当であればプラットフォームに依存しない形で提供されていれば良いのですが、作者の方に感謝してそれぞれの良い点と出来る限り共通な機能を使って移植性を高められればと考えています。下記、Mac 用の「Automator」と、RaspberryPi3 で動作確認をした、「xautomation」のリンクを張っておきますので、自動化にご興味がある方は、サイトを訪れてみて頂ければと思います。


Mac GUI 自動制御ソフト(Automator):プリインストールされています!
使い方の解説集
https://help.apple.com/automator/mac/10.10/
http://tonbi.jp/AppleScript/Automator/
http://d.hatena.ne.jp/zariganitosh/20090129/1233271424
https://allabout.co.jp/gm/gc/3601/


Linux GUI 自動制御ソフト(xautomation
以下のコマンドでインストール可能
sudo apt-get install xautomation
起動は以下のコマンドで
xautomation

http://blog.father.gedow.net/2012/07/26/debian-xen-domu-auto-mouse-keyboard/
http://blog.father.gedow.net/2012/07/27/xautomation-auto-mouse-keyboard-manual/
http://www.ninja-ninja.xyz/melts/melts%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%AE%E6%97%85%E3%81%9D%E3%81%AE1%E3%80%82xautomation%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
http://pieceofnostalgy.blogspot.jp/2014/02/blog-post.html

http://blog.goo.ne.jp/gemma01/e/b2fef1f58df04ee5cbfd2342e8139497
https://kamiclog.wordpress.com/2012/03/11/%E3%80%90xautomation%E3%80%91%E3%81%A7%E3%81%AE%E8%A8%98%E5%8F%B7%E5%85%A5%E5%8A%9B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%80%82/

xautomation のインストール可能
sudo apt-get install xautomation
xautomation

xautomation の使い方/コマンド
xte - Generates fake input using the XTest extension

SYNOPSIS
xte
[options] commands...

DESCRIPTION
xte is a program that generates fake input using the XTest extension
,
more reliable than xse.

OPTIONS
A summary of options is included below.

-x display
Send commands to remote X server. Note that some commands may
not work correctly unless the display is on the console
, e.g.
the display is currently controlled by the keyboard and mouse
and not in the background. This seems to be a limitation of the
XTest extension.

--help
, -h
Show summary of options.

COMMANDS
key k Press and release key k

keydown k
Press key k down

keyup k
Release key k

str string
Do a bunch of key X events for each char in string

mouseclick i
Click mouse button i

mousemove x y
Move mouse to screen position x
, y

mousermove x y
Move mouse relative from current location by x
, y

mousedown i
Press mouse button i down


mouseup i
Release mouse button i

sleep x
Sleep x seconds

usleep x
Usleep x microseconds

SOME USEFUL KEYS
This keys are case sensitive.

Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
Multi_key

SEE ALSO
pat2ppm
(1), patextract(1), png2pat(1), rgb2pat(1), visgrep(1).

xautomation スクリプト・ファイルの例
#!/bin/bash
sleep 0.5
xte "keydown Control_L"
xte "keydown Shift_L"
xte "key v"
xte "keyup Shift_L"
xte "keyup Control_L"

#!/bin/bash
xte "key Escape"
sleep 0.5
xte "str :wq"
sleep 0.5
xte "key Return"


iOS / Android OS GUI 自動制御ソフト(Appium
Appium」は、リリース・コードをそのままテストすることが可能なツール。まだ触れる機会が無いですが、有用な情報としてスクラップしておきました。
http://softwaretest.jp/labo/tech/labo-456/
http://iti.hatenablog.jp/entry/2014/01/06/092626
http://qiita.com/m_ohsumi/items/6b4f10010467d4aa2291
http://www.atmarkit.co.jp/ait/articles/1504/27/news025.html
http://developers.mobage.jp/blog/2014/7/25/appium

スクリーンショット 2016-02-15 21.09.37


本日、「Easy MCUser Ver.2.0」をリリースしました

【お知らせ】
本日、「Easy MCUser Ver.2.0」をリリースしました。
Easy MCUser の開発言語である XOJO 。2017年リリース1 として、先週最新版がリリースされました。一つ前の開発環境では表示系で問題が発生しておりましたものが改善された事を確認出来た為、Easy MCUser も再コンパイルして今回のリリースにこぎつけました。一時期、XOJO の開発バーションを古いものに戻して Easy MCUser をコンパイルする事も考えましたが、XOJO のリリースが 2017年リリース1で全て解決です。

今回の Easy MCUser のバージョンアップでは、β版で機能が追加されている「Raspberry Pi」のサポートと、今まで必要であった マスター MCU が不要となり、マスター MCU レスの接続形態を実現しています。通信速度も9.6[Kbps]から57.6[Kbps]へ速度をアップしています。
ダウンロードは、「
こちら」から可能です。

【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。

・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、
複数のマイコンへ分散して処理させられる

教育現場で、クリエーターに、仕事の小道具としてお使い頂ければ幸いです。

​​Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.

· By GUI of the operation, you can control easily the microcontroller directly.
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.


スクリーンショット 2016-02-15 21.09.37

Easy MCUser を使って USART をバス接続した Arduino 互換機を制御する方法

【お知らせ】

他とはちょっと違う、AVRMCのハードウェア構成

のページに、Easy MCUser を使った Raspberry Pi3 からの Arduino 互換ボード (AVR マイコン)を制御する際の接続イメージを追加しました。詳細につきましては、「Download」ページにあります、「AVRMC_ファームウェア設計仕様書v20_0.pdf」を参照してください。

新しい接続イメージをみてみる前に、下図の「Easy MCUser Ver.1.x」が対応しているマイコン・ボードの接続構成を見てみましょう。このバージョンでは Mac / PC などの、いわゆる一般的なパソコンを使ってGUI から仮想 MCU の一つにあたる AVR マイコンを制御する際に、どうしても Master MCU となるボードが必要でした。これは、Slave MCU に対する選択信号(チップ・セレクト)をMac / PC から直接出力する事が出来ないからというのが理由です。
「Easy MCUser」は仮想 MCU を一つのテーマとして設計していますが、下図にある様に、当時安くて使い易い開発環境である「mbed」に対応をしている STM 社の Nucleo F401 ボードを Master MCU として採用する事にしました。

mbed_AVR_接続



下図は新しく採用した、最大数である8台の AVR マイコン(Arduino 互換ボード)を「Raspberry Pi3」から制御する時の接続イメージになります。
上図との大きな違いは、「Master MCU」として専用のマイコン・ボードが無い事です。「Raspberry Pi3」には、Mac / PC には無い機能として「GPIO」があります。この GPIO を使えば、 Master MCU から Salve MCU へ出力していた「チップ・セレクト」を生成する事が可能です。…という事で、 Master MCU の役目を「Raspberry Pi3」に持たせると下図の様な接続構成になりました。

R3P3_AVR_接続


試作段階でのテスト風景は以下の様な感じです。今回は、USB I/F を持ったArduino 互換機として「Arduino Nano」タイプを採用しました。USB I/F を持ったマイコン・ボードは Raspberry Pi3 の配下には一つだけで良いので、それ以外のマイコン・ボードとしては、「Arduino Pro Mini」タイプを採用しています。もちろん、DIP パッケージの AVR(ATmega328P)などにファームウェアを直接書き込んで、ボード上に並べてもOKです。

RasPi3_and_Slave_AVR_x8-squashed


今回は、Raspberry Pi3 から USART をバス接続した Arduino 互換機を制御する方法について紹介をさせて頂きました。
Raspberry Pi3 はパソコンと比較しても1/10 程度の価格。これを採用しない手はありません。AVRMC では、今後も安くて良いプラットフォームは積極的に採用し、ご紹介してゆきたいと考えます。

当ホームページをご覧になって頂き、複雑で本格的なプログラムを作る事なく GUI でマイコンを制御し、デバイスの評価や実験のための計測・自動制御などに使いたいとお考えの方は、ぜひ期間限定のβ版をダウンロードしてお試しいただければ幸いです。

限定期間を過ぎる少し前には、正式版のアップを予定しております。気に入っていただけましたら、ぜひこちらのダウンロードも宜しくお願いします。



【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。

・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、
複数のマイコンへ分散して処理させられる

教育現場で、クリエーターに、仕事の小道具としてお使い頂ければ幸いです。現在、ベータ版
ダウンロード・ページからダウンロード可能です。ぜひ、この機会にお試しください。

​​Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.

· By GUI of the operation, you can control easily the microcontroller directly.
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.

You can try to use ももんが version. Please download form download page.


スクリーンショット 2016-02-15 21.09.37


本日、Easy MCUser Ver.2.0β2 と Slave MCU Firmware をリリースしました。

【お知らせ】
本日、Easy MCUser Ver.2.0β2 及び、Raspberry Pi3 と Arduino 互換機 x 8台するための Slave MCU Firmware をダウンロード・ページにアップしました。
本バージョンは、3月いっぱいまでユーザー登録なしで自由にご利用可能なものとなります。macOS , RaspberryPi , Windows の各OSで動作します。


Easy MCUser の変更点
1. PinMap の競合が発生する同報通信を未然に防止する機能の不具合を改修
競合が発生する組み合わせのチェック・ボックスがチェックされた時の次のチェック・ボックスをチェックした時に競合の判定と回避が実行されていたのを競合が発生した時に判定と回避が実行される様に修正。
2. Pi3 のラジオボタン機能を変更
Pi3
が選択されている時は、タブパネルを操作してもMCUタブパネルに戻る様に変更。

以下、立ち上げ方の説明を簡単にさせて頂きます。


各OS用の ZIP ファイルをダウンロードして解凍したら、フォルダーごと任意の場所に置いて下さい。
Easy MCUser の書き込み機能を使ってファームウェアの書き込みを行う場合は、「AVR_firmware」の下にある「AVR_Slave_MCU_Firmware」又は「AVR_StandAlone_MCU_Firmware」フォルダーから適宜必要なファームウェア(main.hex)を「AVR_firmware」フォルダーへコピーしてご使用ください。
(RaspberryPi 版の場合は、「Easy MCUser」の実行ファイルのパーミッションを実行可能に変更しておく事をお忘れなく。)
ファームウェアの書き込みが出来ましたら、USB 経由でハードウェアの接続をします。

USB 経由でハードウェアの接続が完了したら、Easy MCUser の実行ファイルをダブルクリックして起動してください。
Easy MCUser を立ち上げると、以下の様なポップアップ・メニューが表示されますので、「OK」ボタンを押下します。

スクリーンショット 2017-02-11 09.58.04



次に、以下の様にユーザー登録用のファイルを選択する画面が表示されますので、「キャンセル」ボタンを押下します。

スクリーンショット 2017-02-11 09.59.12



次に、使用許諾内容にご同意頂けた事を示す「チェック・ボックス」にチェックを入れて、「Open the EasyMCUser」ボタンを押下します。

スクリーンショット 2017-02-11 09.59.38



すると、以下の様に「Easy MCUser」の試用版が立ち上がります。

スクリーンショット 2017-02-11 10.13.44


あとは、「
Start up Manual」,「User's Manual」のページに示されている手順で、マイコンをGUI から簡単に制御する事が出来ます。是非、お試しください。


【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。

・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、
複数のマイコンへ分散して処理させられる

教育現場で、クリエーターに、仕事の小道具としてお使い頂ければ幸いです。現在、ベータ版
ダウンロード・ページからダウンロード可能です。ぜひ、この機会にお試しください。

​​Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.

· You can control easily the microcontroller directly with GUI of the operation, .
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.

You can try to use ももんが version. Please download form download page.


スクリーンショット 2016-02-15 21.09.37



Raspberry Pi3 and Arduino x 8 is working

【お知らせ】
少しホームページの更新が空いてしまいましたが、Raspberry Pi3 と Arduino 互換機 x 8台を接続した試作ボードで動作確認が出来ました。
下図はその時の写真です。
今週末には、Raspberry Pi3 と接続可能な Slave MCU Firmware をダウンロード・ページにアップする予定です。

すでにファームウェア・マニュアルをダウンロードされた方はお気づきの事と思いますが、今回の改善により、Raspberry Pi3 を使ってArduino 互換機を制御する場合に今まで必要であった Master MCU ボード(mbed ボード)が不要になります。AVR マイコンの選択は、Raspberry Pi3 のGPIO 端子を使ってチップ・セレクト信号としてAVR と接続され、選択された AVR マイコンへの同時書き込みや、同報通信による同時制御などが出来ます。現時点の搭載機能を使う事で、一つの目標である、基板の検査に使うためのシステムの一部として利用出来ますが、これからはアナログ回路の機能も少しずつ積み上げて実戦で役立つものを具体的に作って公開してゆく予定です。

RasPi3_and_Slave_AVR_x8-squashed

Easy_MCUser_Slave_8

今週末をお楽しみに !!

スクリーンショット 2016-02-15 21.09.37