Posted at

FlashAirの制御画像の状態を変更する(UWSC)

More than 5 years have passed since last update.


まえおき

Flash Air というSDカードをご存じでしょうか?

SDカードに無線LANを内蔵しており、カメラで撮影した写真にスマートフォンやPCから直接アクセス出来るという便利なカードです。

同種の機能を提供しているEye-Fiカードと違い、単純なWi-Fi機能と専用のクライアントだけの提供であるため、割と簡単に使えるのが特徴なのかな と(Eye-Fiのほうもちゃんと使えば簡単な使い方も出来るんだと思いますが)。

で、このFlash Air、PCのSDカードとして使ってみても意外と使えます。SDカードをPCに接続しておくと、SDカードの無線LANがONになり、外部から中のファイルにアクセス出来るようになりますので、簡単な公開フォルダとして使えます。


PCでFlash Airを使う

さてこのFlash Air、無線LANの起動モードというものがあります。

初期設定の「自動起動モード」では、機器の電源を入れたか、SDカードを挿入してから5分間、無線LANが起動します。ただ、PCの場合は機器の電源を入れた=PCの起動になってしまうので、あまり使いやすいものではありません。

「手動起動モード」の場合、最初からSDカードに入っている制御画像のプロテクト設定(PCの場合読み取り専用設定に相当)が無線LANの起動スイッチになります(読み取り専用ON:無線LANOFF、読み取り専用OFF:無線LANON)。ただ、Windowsの場合読み取り専用設定を切り替えるには、制御画像のプロパティを開いてチェックボックスを操作する必要があり、結構めんどくさい。


制御画像の読み取り専用設定を切り替えるスクリプトを作った

前置きが長くなりました。とりあえずなら、制御画像の読み取り専用設定をスイッチするスクリプトを書けば良い。ということで、UWSCを使って制御スクリプトを書いてみました。


FlashAirStateChanger.uws

dim fso = CREATEOLEOBJ("Scripting.FileSystemObject")

for i = 0 to GETOLEITEM(fso.Drives) - 1
// ドライブの検索(リムーバブルかつ、制御用画像が存在するか?)
dim d = ALL_OLE_ITEM[i]
PRINT d.DriveLetter + ": Type " + d.DriveType
IFB d.DriveType = 1 THEN
PRINT "found " + d.path
dim path = fso.buildPath(fso.buildPath(fso.buildPath(d.path, "DCIM"), "100__TSB"), "FA000001.JPG")
PRINT "path " + path
IFB fso.FileExists(path) THEN
PRINT "file found"
// 制御用画像のプロテクト判定
dim file = fso.GetFile(path)
IFB file.attributes AND $1 = $1 THEN
// プロテクトON=無線OFF
SELECT SLCTBOX( SLCT_BTN, 0, "無線はOFFのようです", "ONにする", "OFFのまま(再設定)")
CASE SLCT_1
file.attributes = file.attributes XOR $1
BALLOON("Flash Airの無線をONにしました", 0, 20, 20, 24, "MS ゴシック", $00FF00, $FFFFFF)
SLEEP(3)
BALLOON()
PRINT "Wi-Fi ON"
CASE SLCT_2
// いったんONにしてOFFにし直す
file.attributes = file.attributes XOR $1
SLEEP(1)
file.attributes = file.attributes OR $1
PRINT "Wi-Fi Reset"
SELEND
ELSE
// プロテクトOFF=無線ON
SELECT SLCTBOX( SLCT_BTN, 0, "無線はONのようです", "OFFにする", "ONのまま(再設定)")
CASE SLCT_1
file.attributes = file.attributes OR $1
BALLOON("Flash Airの無線をOFFにしました", 0, 20, 20, 24, "MS ゴシック", $00FF00, $FFFFFF)
SLEEP(3)
BALLOON()
PRINT "Wi-Fi OFF"
CASE SLCT_2
// いったんOFFにしてONにし直す
file.attributes = file.attributes OR $1
SLEEP(1)
file.attributes = file.attributes XOR $1
PRINT "Wi-Fi Reset"
SELEND
ENDIF
// FlashAir二枚差しには非対応です
EXIT
ELSE
PRINT "file not found"
ENDIF
ENDIF
next

Flash Airを接続したPCでこのスクリプトを実行すると、現在の無線LANの設定によって、「無線はONのようです」または「無線はOFFのようです」というダイアログが表示されます(「ようです」というのは、資料を読んだ限り状態によってはこの設定がアンマッチになることがあるということなので)。

スクリーンショット 2013-12-18 15.18.42.png

ここで、ボタンを選択すると、制御画像の読み取り専用設定が切り替わり、無線LANの状態が変わります(状態リセットのため、現在と同じ状態を選択しても、読み取り専用設定を切り替えます)。

とりあえずこれで、PDFやらExcelシートやら、PCから簡単に公開することが出来ますね。他にも使い道がありそうなので、もう少しいじってみようかな と。