RaspberryPi、AVRマイコンのファームウェア開発、XOJO を使ったソフトウェア開発/不具合解析で役に立つ情報を、自分自身の備忘録も兼ねて少しずつではありますがアップしてゆこうと思います。

【追加トピックス】
1. XOJO : ループ処理を実行中、キー入力により強制停止させる方法
2. XOJO : StackOverFllow 問題の解析方法について
3. RaspberryPi : AVRマイコン」の開発環境を構築
   01. RaspberryPi3 ハードウェアの準備
   02. SD カードへ OS をコピーする(起動ディスクの作成)
   03. OS のインストールと ネットワーク(WiFi)の設定
   04. 日本語表示/入力・環境の整備
   05. suのパスワード設定とセキュリティー強化
   06. ファイルシステムを拡張
   07. フォント・サイズなどルック・アンド・フィールの変更
   08. FireFoxのインストール(付属のブラウザーでは物足りない人向け)
   09. NotepadqqNotepad++ に似た高機能なエディタ)のコンパイルとインストール
   10. AVRマイコン・開発環境をインストール
   11. CH340/341G ドライバーのインストール(Arduino 互換機・利用者向け)
   12. 画面キャプチャー・ツールのインストール
   13. キーボード/マウスなどを使わずにRaspberry Pi3 を使用する環境の構築
   14. たまにはやっておいた方が良い事(ソフトのアップデート/ストレージのバックアップ)
   15. MAIN MENU の表示がおかしくなった時の対処方法
4. Windows , Mac , RaspberryPi : GUI の自動制御環境の構築


〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

 

XOJO : ループ処理を実行中、キー入力により強制停止させる方法

for … next」や「while … wend」などのループ処理コードを実行し始めると、キーボードからの入力を受け付けられなくなる事があります。そうなると、ソフトウェア自体を強制終了しなければなりません。
この様な事態を避けるために、「usercancelled」というキーボードからループの停止命令を検出するコードと、強制停止を検出したらループから脱出するコードを以下の様な形で入れておくと安全です。

for …
if usercancelled then
exit
end if


:
:
:
:
next


while …
if usercancelled then
exit
end if


:
:
:
:
wend

こうする事で、Macの場合は「Command + .」(コマンド+ピリオド)の押下で、Winの場合は「Esc」ボタンを押下する事でループを停止出来、ハングアップしてしまう事を回避出来ます。
XOJO
で無限ループに入ってしまい、お困りの方は是非一度お試しください!

目次へ戻る


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



 

XOJO : StackOverFllow 問題の解析方法】

Easy MCUser」は、「XOJO」というクロスプラットフォーム環境で開発している関係もあり、その開発の中で気がついたことも、情報として発信してこうと思います。今回は、その第一段です。

StackOverFllow
問題は、ソフトウェアを作っていてやっかいな問題です。
これを解析するには、どこで StackOverFllow が発生しているのかを知ることが先決と思いますが、XOJO の場合、Mac 版ではこの現象がどこで発生しているのかが、デバッグしたくてもソフトが落ちてから StackOverFllow であるという表示だけされるため、現象が非常に掴みずらいです。
ところが、同じ XOJO でも、Windows 版の XOJO では、最後にソフトウェが落ちる前に、どこで StackOverFllow Out of Bounds などの致命的問題が発生してソフトが落ちてしまっているのかが掴めます。

もし、Mac 版の XOJO を使っていて、上記のような問題の解析でお困り間場合は試してみる価値があるのではないかと思います。

XOJO」の前身は「Real basic」という製品で、このころから Mac のプログラミングがしたくて個人で開発環境を購入していました。しかしながら Mac の開発環境の方が歴史が長いにもかかわらず、Windows 版の方が処理が速かったり、デバッグのちょっとした事ですがやり易かったり、… Mac がメインの私としては、少々残念です。でも、今のところ仕事以外では、Mac 以外使いたくないので、応援しています、、Mac 版。

目次へ戻る


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


   
RaspberryPi : RaspberryPi3 ハードウェアの準備

8G[byte] Micro SD カードが最低ラインですが、将来の事を考えて16G[byte] 以上の Micro SD カードを準備しておくのがお勧めです。Raspberry Pi3 が発売された直後には、電源の消費電流の問題から大電流の供給が可能な電源アダプタの情報が飛び交っていましたが、11/04/2016 現在、RSコンポーネンツからは本体と電源がセット販売されているので、もし電源をお持ちでない方はセットで購入されるのがお勧めです。下記の「大変参考になった URL」を参考にして下さい。

16G
32G[byte] Micro SD カード(必要に応じて、SD カード・変換アダプタなど)
RaspberryPi3
ボード
USB
電源アダプター・USB MiniB ケーブル(供給可能電流・2.5A以上)
HDMI
ケーブル(必要に応じて、HDMI-VGA 変換アダプタなど)
USB
マウス
USB
キーボード

大変参考になった URL
http://jp.rs-online.com/web/p/processor-microcontroller-development-kits/1238760/?cm_mmc=JP-PPC-_-google-_-2_JP_JP_LS_Raspberry+Pi_Phrase-_-Raspberry_Pi_3&mkwid=sCwcrRTk7-dc|pcrid|93517968984|pkw|raspberry%20pi%203|pmt|p|prd|

目次へ戻る


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

 
RaspberryPi : SD カードへ OS をコピーする(起動ディスクの作成)

下記 URL で、OSインストールに使用する Micro SD カードの相性問題を確認をしておく。
http://elinux.org/RPi_SD_cards

SD
カード・フォーマッタを下記 URL からダウンロード(Mac / Windows 用があり)
https://www.sdcard.org/jp/downloads/formatter_4/

Raspberry Pi3
OSNOOBS)を下記 URL からダウンロード(Liteでない点に注意)
https://www.raspberrypi.org/downloads/noobs/

ダウンロードしてきたOSNOOBS)を Micro SDカードにコピーする
NOOBS_vX_X_X」(X は、その時の最新Ver.の番号)フォルダーの直下のファイル/フォルダー全てを選択して、SDカードにコピーする。ここまでで、OS 起動までの準備が完了!

追記)
個人的には、デジカメ用に使う分には問題がなかったものでも「Micro SD -> SD カード・変換アダプタ」との相性が悪くて(?)OS の書き込がうまく出来なかった例があり。(その時は、dd コマンドを使ってOS インストール、東芝製の変換アダプタで Transcend 16G[byte]の Micro SD カードに対して実行してみた結果、RaspberryPi3 Micro SD カードを挿入しても、うんともすんともという具合。)
どうしてもうまくいかない場合は、変換アダプタを変えて試してみるのもありかも知れません

大変参考になった
URL
http://wp.pxdesign.jp/2016/05/28/raspberrypi-02/

目次へ戻る


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


 
RaspberryPi : OS のインストールと ネットワーク(WiFi)の設定

SD カードをRaspberryPi3 本体に挿入し、しっかり挿入されている事を確認したら、電源を投入。

画面が表示されたら「NOOBS」のインストールにチェックを入れて、設定の開始。
(まだ、この時点では言語などの設定はしなくて良い。逆に日本語フォントを入れる前に日本語の設定をしてしまうと、メニューやらメッセージやら、文字化けで何が書かれているのか全く分からなくなってしまうため。)

OS
のインストールが終わって、OSが立ち上がったら、いの一番にネットワークの設定をする。
メニューバー上の「WiFi」をマウスで右クリックし、接続するWiFi 機器を選択して、「Pre sheard Key」の入力欄へ接続用のパスワードを設定。

大変参考になった URL
https://dbpro.xyz/1261

目次へ戻る


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


 
RaspberryPi : 日本語表示/入力・環境の整備

日本語フォントをインストールする。(お好みで、"fonts-" 以降を "takao" , "ipaexfont" などに。)
sudo apt-get install fonts-vlgothic

UNIX
系・OSにおける、インプットメソッド・フレームワーク IBUS と、日本語入力システム Anthy をインストールする。
sudo apt-get install ibus-anthy

Linux
環境で漢字を表示するためのパッケージをインストールする。
sudo apt-get lnstall jfbterm

インストールしたら再起動して、GUIから各種の設定を実行。

大変参考になった URL
http://nonstop-engineering.hatenablog.com/entry/raspberry-pi-first-setting
http://www.mztn.org/rpi/rpi34.html

目次へ戻る


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



 
RaspberryPi : suのパスワード設定とセキュリティー強化

ターミナルから下記コマンドを実行すると、パスワードの設定を2回要求される
sudo passwd root
xxxxxxxx
xxxxxxxx
上記の様に2回、パスワードを設定(「xxxxxxxx」は、任意の文字列)

設定が完了したら、実際に「su」のパスワードが正しく設定されている事を確認
su
xxxxxxxx
プロンプトも「su」(スーパー・ユーザー)になっているはず。

exit」で、「su」の前のユーザーに戻れる
exit

大変参考になった URL
http://masatolan.com/raspberry-pi/raspberry-pi-security/

目次へ戻る


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


 
Raspberry Pi : ファイルシステムを拡張

GUIで、[Menu] [Preferences] [Raspberry Pi Configuration]を選択
GUI
で、[System]タブ [Expand Filesystem]ボタンを押下

再起動後、df -h コマンドで /dev/rootSize を確認

大変参考になった URL
http://qiita.com/yohhoy/items/857dc9d88f944e4c0b2c

目次へ戻る

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

 
RaspberryPi : フォント・サイズなどルック・アンド・フィールの変更

ターミナルから下記のコマンドを実行する。
lxappearance

ちなみに私の設定は、情報として「こちら」のページに以前ご紹介致しましたもの。
「Easy MCUser」は、XOJO というクロスプラットフォームの開発言語で作成しておりますが、AVRMC で使用している Release 1.1 でraspberryPi 用にビルドすると、OS をインストールした時のままのフォントとルック・アンド・フィール設定ではGIU のプルダウン・メニューの表示が、どうしても下の方に隠れてしまうので、試行錯誤の上、この設定になりました。。。


目次へ戻る


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


 
RaspberryPi : FireFoxのインストール

FireFox は、Linux の環境では「iceweasel」と呼ばれている。FireFox をインストールするには下記のコマンドを実行。
sudo apt-get update

sudo apt-get install iceweasel

追記 : 11/06/2016 現在、最新版となる NOOBS2.0.0 では、OSインストール直後に上記コマンドだけではエラーが発生してインストール出来ませんでしたので、指示に従い、”
update ” をしてからインストールしたらOKでした。転ばぬ先の杖…という事で。

大変参考になった URL
http://raspibb.blogspot.jp/2015/04/blog-post.html

目次へ戻る

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


 
RaspberryPi : Notepadqq のコンパイルとインストール

Notepadqq は、Windows 上で動作する「Note Pad ++」の様な高機能で使いやすい RaspberryPi 上で動作するエディターです。インストール方法は以下の手順で行います。

sudo apt-get install qt5-qmake
sudo apt-get install -y libqt5webkit5 libqt5svg5 coreutils
sudo apt-get install -y libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools
git clone https://github.com/notepadqq/notepadqq.git
cd notepadqq
sudo ./configure --prefix /usr --qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake
sudo make
sudo make install

大変参考になった URL
https://www.linuxbabe.com/desktop-linux/compile-notepadqq-debian-ubuntu-raspbian

目次へ戻る


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


 
RaspberryPi : AVRマイコン・開発環境をインストール

コンパイラーとライターのインストール。
sudo apt-get install gcc-avr
sudo apt-get install avr-libc
sudo apt-get install avrdude

AVR
のライター・USBaspを使える様にする。
cd /etc/udev/rules.d

pico」エディターで、ルール・ファイルの作成と編集する。
sudo pico 99-USBasp.rules

下記の記述をコピー
&ペースして保存する。「vi」とかでやる人は、vi で。
ATTRS{idVendor}=="16c0"
, ATTRS{idProduct}=="05dc", GROUP="users", MODE="0666"
[Ctrl]+[x]で、保存確認後・終了

pico」エディターの使い方
カーソル・キーで移動
[Ctrl]+[v]で、ペースト
[Ctrl]+[o]で、ファイル(「99-USBasp.rules」)への書き込み
[Ctrl]+[x]で、保存確認後・終了


大変参考になった URL
https://andreasrohner.at/posts/Electronics/How-to-fix-device-permissions-for-the-USBasp-programmer/

目次へ戻る


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


 
RaspberryPi : CH340/341G ドライバーのインストール

このメモを書き留めた時にインストールした「NOOBS v2.0」のOSCH340Gが搭載されている Arduino 互換機を接続したところ、USB・シリアル変換デバイスとして問題なく認識されました。
下記のメモは、うまくいかない場合の事を考えて事前に対応策を調べておいたもので、その時のメモを掲載します。

CH340G
ドライバーのインストール手順(下記の手順でコマンドを実行)
CH340/341
ドライバーのダウンロード。
wget https://github.com/aperepel/raspberrypi-ch340-driver/releases/download/4.4.11-v7/ch34x.ko

カーネルモジュールをロード(取り込み)。

sudo modprobe usbserial
sudo insmod ch34x.ko

カーネルモジュールの依存関係情報を更新するコマンドを実行。

sudo depmod -a

Arduino 互換機を繋いだ状態にして、デバイス・ドライバーとしてインストールされている事を確認。
ls /dev/ | grep ttyUSB
ls /dev/serial/by-id/


大変参考になった URL
http://artteknika.hatenablog.com/entry/2016/11/01/175210
https://github.com/aperepel/raspberrypi-ch340-driver

目次へ戻る


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


 
RaspberryPi : 画面キャプチャー・ツールのインストール

静止画として画面をキャプチャーする ksnapshot のインストール方法
sudo apt-get install ksnapshot


使用方法/便利な機能のメモ

GUI
で、[Menu] [グラフィックス] [ksnapshot]を選択

[Take a New Snapshot]でスクリーンショットを採取

[Save As...]で保存

Capture Mode(キャプチャーモードで良く使うもの)
  • Full Screen(全画面)
  • Window Under Cursor(マウスカーソルで指定のウィンドウ)
  • Rectanglar Region(四角い領域を指定する)

  • 録画としてキャプチャーする、RecordMyDesktop のインストール
    RecordMyDesktop GUI 版のみをダウンロード
    sudo apt-get install gtk-recordmydesktop

    又は、RecordMyDesktop CUI / GUI 版の両方をダウンロード。
    sudo apt-get install recordmydesktop gtk-recordmydesktop

    CUI 版は、下記の様にコマンドを実行。(”--no-sound” を追加する事でエラーが出なくなる。)
    recordmydesktop output.ogg
    --no-sound
    [Ctrl]+[c]で、動作を停止させて保存を完了。

    GUI
    版も ”--no-sound” を追加する事でエラーが出なくなるので、一度だけ設定しておく。
    [Menu] [サウンドとビデオ] [recordmydesktop]を選択。
    [設定] [recordmydesktop]を選択。
    [Menu] [その他] [その他のオプション]のテキストボックスへ --no-sound と入力。
    ウィンドウを閉じて、[録音]ボタンを押下して録画開始。
    停止は、メニューバーに現れる赤いボタンを押下。


    大変参考になった URL
    http://d.hatena.ne.jp/over80/20080802/1217693705
    http://kenpg2.seesaa.net/article/410557000.html
    http://www.d1.dion.ne.jp/~danjiro/9va/raspi.html
    The KSnapshot Handbook
    http://www.inex.co.jp/rasbpi/rasb10-11.html

    目次へ戻る


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

     

    RaspberryPi : キーボード/マウスなどを使わずにRaspberryPi3 を使用する環境の構築

    sudo apt-get update
    VNC
    サーバーのインストール
    sudo apt-get install tightvncserver

    VNC
    サーバーの立ち上げ
    tightvncserver




    sudo apt-get install xrdp
    インストール後再起動
    SSH
    IPアドレスを調べなくても良い環境の構築をするために「avahi-daemon」というアプリをインストール。
    sudo apt-get install avahi-daemon
    インストール後再起動
    Windows
    の場合は、「Bonjour」を使って RaspberryPi3 に付加された名称にて接続先を選択出来る様にするならば、 iTunes をインストールしておく。
    これで、リモートデスクトップ接続でIPアドレスの代わりに「raspberrypi.local」と入れて接続出来るらしい。(Mac ユーザーなので、のちのち試すとして、情報として役に立ちそうなのでリンクを張らせて頂きます。)


    大変参考になった URLWindows PC からリモートでRaspberryPi3 を制御する)
    http://takalifelog.com/post-252
    http://www.hiramine.com/physicalcomputing/raspberrypi3/xrdp_installconnect.html

    目次へ戻る


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


     

    RaspberryPi : ソフトのアップデート/ストレージのバックアップ

    インストール済みのソフトのアップデートを実施。
    sudo apt-get update
    sudo apt-get upgrade

    OSを最新版にする
    sudo apt-get update
    sudo rpi-update

    SDカードのバックアップ(RaspberryPi3 用)
    RaspberryPi3
    上で、バックアップを全て済ませられる下記のツールをダウンロード。
    https://github.com/billw2/rpi-clone
    又は、下記のコマンドでダウンロード
    git clone https://github.com/billw2/rpi-clone.git

    解凍したら、下記のコマンドを実行して、”
    /usr/local/sbin”へ実行ファイルをコピーする。
    cd r-pi-clone-master
    sudo cp rip-clone /usr/local/sbin

    使い方は、下記のコマンドを実行。
    sudo ./rpi-clone sda -f


    Mac 上で、SDカードのバックアップ
    まず、RaspberryPi から SD カードを抜いて、アダプターを使って Mac に挿入しておく。

    次に、ターミナルから、SD カードのデバイス番号が何番に割り当てられているかを確認する。
    sudo diskutil list

    ターミナル上で、上記コマンドを実行した例として以下の様に帰ってくる。
    /dev/disk0 (internal):
    #: TYPE NAME SIZE IDENTIFIER
    0: GUID_partition_scheme 121.3 GB disk0
    1: EFI EFI 314.6 MB disk0s1
    2: Apple_CoreStorage Macintosh HD 120.4 GB disk0s2
    3: Apple_Boot Recovery HD 650.0 MB disk0s3

    /dev/disk1 (internal, virtual):
    #: TYPE NAME SIZE IDENTIFIER
    0: Macintosh HD +120.0 GB disk1
    Logical Volume on disk0s2
    4A85FBCE-9A75-4F9D-8DD0-685DBB82C241
    Unlocked Encrypted

    /dev/disk2 (external, physical):
    #: TYPE NAME SIZE IDENTIFIER
    0: FDisk_partition_scheme *15.5 GB disk2
    1: Windows_FAT_16 RECOVERY 1.3 GB disk2s1
    2: Linux 33.6 MB disk2s5
    3: Windows_FAT_32 boot 69.2 MB disk2s6
    4: Linux 14.1 GB disk2s7

    今回は「/dev/disk2」が SD カードであったので、以下のコマンドを実行する。
    sudo dd if=/dev/disk2 of=~/Desktop/raspi.dmg

    sudo dd if=/dev/disk2 bs=4096 of=~/Desktop/raspi.dmg
    Password:

    ターミナル上で、上記コマンドを実行した例として以下の様に帰ってくる。約44分かかって、img ファイルの作成が完了という事。
    15476981760 bytes transferred in 2658.158470 secs (5822445 bytes/sec)

    次に、フォーマット済みの SD カードを挿入して、又同じ様に空の SD カードのデバイス番号を確認する。
    sudo diskutil list

    /dev/disk0 (internal):
    #: TYPE NAME SIZE IDENTIFIER
    0: GUID_partition_scheme 121.3 GB disk0
    1: EFI EFI 314.6 MB disk0s1
    2: Apple_CoreStorage Macintosh HD 120.4 GB disk0s2
    3: Apple_Boot Recovery HD 650.0 MB disk0s3

    /dev/disk1 (internal, virtual):
    #: TYPE NAME SIZE IDENTIFIER
    0: Macintosh HD +120.0 GB disk1
    Logical Volume on disk0s2
    4A85FBCE-9A75-4F9D-8DD0-685DBB82C241
    Unlocked Encrypted

    /dev/disk2 (external, physical):
    #: TYPE NAME SIZE IDENTIFIER
    0: FDisk_partition_scheme *16.1 GB disk2
    1: Windows_FAT_32 RP3_16G 16.1 GB disk2s1

    今回は「/dev/disk2」が SD カードであったので、今度は書き込み準備をするため以下・アンマウントのコマンドを実行する。
    diskutil umountDisk /dev/disk2

    アンマウントが成功すると、以下の様に帰ってくる。
    Unmount of all volumes on disk2 was successful

    アンマウントの次は、書き込みを実行する。
    sudo dd if=~/Desktop/raspi.dmg of=/dev/disk2 bs=1m
     :
     :
    途中、[CTRL]+[T] で、どの程度進んだかを確認可能。(気休め。。。)
     :
     :
    完了すると、以下の様にメッセージが帰ってくる。今回は約2.5時間程度かかった模様。。。
    15476981760 bytes transferred in 9273.114634 secs (1669017 bytes/sec)



    そっくりそのまま
    SD カードの内容をコピーするMac / Windows 用のツールなら、以下。
    PiCloner
    (Mac 用)
    https://sourceforge.net/p/picloner/code/ci/master/tree/

    Win32DiskImager
    (Windows 用)
    https://sourceforge.net/projects/win32diskimager/files/latest/download


    大変参考になった URL
    https://computers.tutsplus.com/articles/how-to-clone-raspberry-pi-sd-cards-using-the-command-line-in-os-x--mac-59911
    http://www.homu.net/raspberry-piiotなシステム開発:sdカードのバックアップはrpi/
    http://www.awesomeprojects.xyz/2015/08/create-backup-of-your-raspberry-pi-sd.html

    目次へ戻る


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


     

    RaspberryPi : MAIN MENU の表示がおかしくなった時の対処方法

    1. まず、メニューの内容を示すファイル「lxde-pi-applications.menu」をコピーしてファイルを別名で退避しておく
    cp ~/.config/menus/lxde-pi-applications.menu ~/.config/menus/lxde-pi-applications.menu.orig

    2. 現在のメニューの内容を示すファイルを一旦削除する。
    rm ~/.config/menus/lxde-pi-applications.menu

    3. 次に、メニューを開くとメニューの内容を示すファイルが自動的に生成されるので、一回メニューを開いて何もせずに閉じる。

    4. 次に、「
    MAIN MENU EDITOR」で自分のカスタマイズしたい順番や非表示にしたいソフトを設定する。

    5. 不要なら、一番初めにコピーしてファイルを別名で退避したものを削除する。
    rm ~/.config/menus/lxde-pi-applications.menu.orig


    以上で正しくメインメニューが表示される様になります。


    大変参考になった URL
    https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=143421

    目次へ戻る


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


     
    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