Windows PhoneからOLYMPUS AIRでシャッターが切れました!
とりあえず、C#が動くデバイスならうごくはず!
private string opc = "http://192.168.0.10/"; public void Shutter() { var httpClient = new HttpClient { MaxResponseContentBufferSize = 256000 }; httpClient.DefaultRequestHeaders.Add("user-agent", "OlympusCameraKit"); var mode = httpClient.GetAsync(opc + "switch_cameramode.cgi?mode=rec").Result; var r = mode.Content.ReadAsStringAsync().Result; var shutter = httpClient.GetAsync(opc + "exec_takemotion.cgi?com=newstarttake").Result; var r2 = shutter.Content.ReadAsStringAsync().Result; }
コードはこんなかんじ。
前提条件として、Windows PhoneがOPCとWiFiにつながっていることとします。
private string opc = "http://192.168.0.10/";
仕様上OPCのIPが決まっているので、予め定義します。
var httpClient = new HttpClient { MaxResponseContentBufferSize = 256000 }; httpClient.DefaultRequestHeaders.Add("user-agent", "OlympusCameraKit");
HttpClientでcgiを叩いていくのが、OPCを操作する基本になります。
コマンドを投げるたびにOPCの状態がXMLで返ってくる仕組みです。
お約束として、OPCはUAがOlympusCameraKitでないと、コマンドを受け付けてくれないので、変更します。
var mode = httpClient.GetAsync(opc + "switch_cameramode.cgi?mode=rec").Result;
var r = mode.Content.ReadAsStringAsync().Result;
OPCで撮影するには、まずは撮影モードに変更してやる必要があります。
rにOKが返ってくれば、変更成功。
NGの場合は、すでに指定したモードになっている可能性があります。
var shutter = httpClient.GetAsync(opc + "exec_takemotion.cgi?com=newstarttake").Result;
var r2 = shutter.Content.ReadAsStringAsync().Result;
これで実際にシャッターを切ります。
これだけシャッターが降りるのですが、r2には撮影完了状態だったり記録画像だったり、AFの位置や枠のサイズなどが返ってきます。