「南東京iPhone開発者勉強会 12回目」に参加して来ました(その1)
南東京iPhone開発者勉強会 12回目 : ATND
http://atnd.org/events/21872
2011/11/23 #stidev 南東京iPhone開発者勉強会 #12 - Togetter
http://togetter.com/li/218176
@hkato193 さんよりジンギスカンキャラメルという嬉しい(?)、おすそ分け貰いました。みんな食べると良いと思うよ。意外とすでに食べた事が多い(自分もですが)みたいで会場では「これが食べれる場合は体調が良いと自分の体調チェックに最適」とのステキな言葉などが交わされてました。なお、「いや、これ旨いでしょ。コーヒーキャラメルみたいなもんでしょ」などの言葉も上がっていた事を付け加えておきます。
- 出版社/メーカー: 札幌グルメフーズ
- メディア: その他
- この商品を含むブログ (2件) を見る
たなか様:「ARアプリ開発」
3Dで表現したい
- デバイスの向きに追従したい
- 一緒に記念撮影ができるようにしたい
- 合成した写真をプレビュー画面で確認したい
- 太陽の位置や夜間の使用を考慮したい
実現方法
- 加速度の値からデバイスの角度を計算する
- 現在位置と対象の緯度経度から角度を計算
- 計算結果を3Dモデルに反映
必要なFramework
- カメラ - AVFoundation
- 3D描画 - OpenGLES
- 現在地と方角の取得 - CoreLocation
- デバイスの向きを取得 - CoreMotion
- シャッター部分の後ろに3Dモデルを隠して欲しいなどの要望が有った為、ピッカーではなくAVFoundationを使用
- AVFoundation
- Appleのサンプル「AVCam」を参考に作成
【参考にした資料】
Implementing a Tilt-Compensated eCompass using Accelerometer and Magnetometer Sensors
http://www.freescale.com/files/sensors/doc/app_note/AN4248.pdf
【対策】
地磁気と加速度からデバイスの向きを考慮した方角を算出
- ローパスフィルターの適用
- しかし、今度はデバイスの急激な角度変化時の追従性に難あり。。。
- デバイスが縦か横かで90°差が有る
- 加速度で判定したが値が変わるタイミングが異なる
- デバイスを上にかざす様にした移動した時に方位の情報が180°異なるタイミングが発生する
- どうしよう→ジャイロを使おう
- CMMotionManager
- CMRotationRateの値を使用
- 角速度と加速度からiPhoneの角度を算出
【MITで公開されているPDF】
The Balance Filter(Complementary Filter)
http://web.mit.edu/scolton/www/filter.pdf
バッテリー問題
Energy Diagnosticsで60秒間計測
【テスト環境】iPhone 4 iOS 4.3.3
- しかし、お客様の都合にてお蔵入りに
- 折角なので技術を応用して作成
UFO Camera 3D
http://itunes.apple.com/jp/app/ufo-camera-3d/id450479915?mt=8
- FoursquareのライブラリをGitHubに公開しました。よろしければお使い下さい。Foursquare iOS API
島村様:IOSからのシリアル通信機器制御「iPad POS システム」
- iPadとレシートプリンタを繋ぎたい
- レシートプリンタは定価18万、販売価格7〜8万くらい
- EPSON TM-T70を使う事に決定
業務用小型プリンター TMシリーズ|TM-T70|エプソン
http://www.epson.jp/products/tm/tmt70/
- でインターフェイスは?
-
- GKSessionでBluetooth、NetWork接続
- NSStream経由でNetWork接続
- GKSessionは同一アプリ内からしか通信出来ない
- 選択肢はNSStreamだけに
- NSStreamは、ストリームを表すオブジェクトのための抽象クラスである。
- NSStreamオブジェクトは、様々なメディアのデータを読んだり、書いたりするために、デバイスに依存しない簡潔な方法を提供する。
- メモリー・ファイル・ネットワーク(ソケットを通じて)に配置されたデータのストリームオブジェクトを作ることが出来る
- つまり、データの読み書きをデバイスに依存しない形で記述可能
NSStream Class Reference
http://developer.apple.com/library/IOs/#documentation/Cocoa/Reference/Foundation/Classes/NSStream_Class/Reference/Reference.html
- でTM-T70側は、どれ?
- RS-232Cを選択
- 会場に質問「RS-232Cご存知の方」→「半分くらいですね」
- そもそもRS-232Cとは?
15年位前までは、パソコン間の通信やパソコンと周辺機器間の通信の主流のシリアル通信でした。
- 今でも、
- 安価で簡単なハード構造
- ドライバを必要としない単純なインターフェイス
が理由で低速デバイスに利用されています。
- 券売機などで使われている
- プロトコルコンバータ
RS-232C機器のシリアル通信をインターネット上のソケット通信に変換するコンバータ
- 9100ポートを使用(プリンタに使用されているポート)
- UART(シリアル通信関連のチップの名称)
RS-232Cの他の規格
- RS-422→長距離
- RS-485→複数の端末にデータを流せる
- こちらの構成の場合はカスタムディスプレイからプリンタへは印刷のデータのみ送られる
プログラムの主要部分
- 宣言
@interface SocketForDevice : NSObject <NSStreamDelegate> @property (nonatomic, retain) NSInputStream *inputStream; @property (nonatomic, retain) NSOutputStream *outStream;
- 初期化
CFReadStreamRef readStream = NULL; CFWriteStreamRef writeStream = NULL; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)_ipAdress, _portNo, &readStream, &writeStream); _inputStream = (NSInputStream *)readStream; _outputStream = (NSOutStream *)writeStream; [_inputStream setDelegate:self]; [_outputStream setDelegate:self]; [_inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [_outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [_inputStream open]; [_outputStream open];
- コマンド出力
char s[3]; s[0] = 0x1b; s[1] = 0x61; s[2] = 0x00; [_outputStream write:(uint8_t*)s maxLength:sizeof(s)];
- 文字列出力
NSData *data = [[NSData alloc] initWithData:[sendMsg dataUsingEncoding:NSShiftJISStringEncoding]]; [_outputStream write:[data bytes] maxLength:[data length]]; [data release];
- 0x00は制御コードとして使われるので文字列を送る時は注意が必要
- ディスプレイは1万円くらいで買えた
- HDMI入力が可能
- 安かったけど残念ながら製造中止
※【筆者注】おそらくこちらのディスプレイ
ONKYO製品情報:LPF10M01シリーズ - 周辺機器 | オンキヨー株式会社
http://www.jp.onkyo.com/pc/options/lpf10m01/index.htm
【西川和久の不定期コラム】 HDMI入力のあるデジタルフォトフレーム! オンキヨー「LPF10M01」
http://pc.watch.impress.co.jp/docs/column/nishikawa/20100728_383713.html
- 画面の左側はUIWebView
- アニメーション部分はHypeにて作成
※【筆者注】Mac Storeで購入出来ます。
- PopOverの三角は位置の指定を0にすると消すことができる。審査に通らないかも?
スタッフにはSteve Jobsの名前がw
- iOS 5から文字コピーのポップアップが表示される様になってしまった。
- レジ固有の機能のボタンも有り
- 釣銭準備金 - お釣りとして最初からレジに入れているお金
- 回収 - お金が溢れそうな時にレジからお金を取り出す事
- 雑収入 - 「お釣りはいない」などと言われた時などに使用
- 日報もレシートプリンタから出力可能
- EPSONと秘密保持契約をするとプリンタへのアクセス方法を開示してくれる