- 1 名前:1 [2006/01/17(火) 21:55:41 ]
- BREW(Binary Runtime Environment for Wireless)についてのスレ
■テンプレ kintubo.kakiko.com/brew/ ■前スレ 06 pc8.2ch.net/test/read.cgi/tech/1126846736/ ■過去スレ 05 pc8.2ch.net/test/read.cgi/tech/1119056460/ 04 pc8.2ch.net/test/read.cgi/tech/1111028365/ 03 pc5.2ch.net/test/read.cgi/tech/1096006023/ 02 pc5.2ch.net/test/read.cgi/tech/1076511398/ 01 pc2.2ch.net/test/read.cgi/tech/1011078904/ 関連情報 >>2-10
- 132 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 02:26:39 ]
- >>131
IBITMAP_CreateCompatibleBitmap() と IDISPLAY_CreateDIBitmap() を知らんのか? それとも重ね合わせる方法がわからないって言ってんのか? アルファブレンドとか加色合成でレイヤーを重ね合わせるのなら、 DDB から DIB を取得して自前で転送が基本だろ。
- 133 名前:デフォルトの名無しさん [2006/02/08(水) 18:44:13 ]
- Brew2.1端末で、終話キーを押してそこから終了ってするとなぜか端末がリセットしてしまいます。
端末がリセットするってことはnullにアクセスしてるからだと思うんですけど、エミュではちゃんと終了できるので解放やり残しではないみたいです。 そこでききたいんですけど、EVT_APP_STOP時にタイマーキャンセルして、falseを返してるんですけど、これってダメですかね? どっかの仕様書でtrueを返すとダメって書いてあったんでfalseにしているんですけど。 リセットで思い当たるふしがなくて、どうやって修正したらいいもんか悩んでます。。。お助けを・・・orz
- 134 名前:デフォルトの名無しさん [2006/02/08(水) 19:50:05 ]
- STOPはTRUEだめだっけ?
- 135 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:16:19 ]
- 2.1環境と3.1環境をインスコしたらVCがコンパイル通らなくなりました。
環境変数のBREWDIRが書き換えられるって認識あるんだけど、具体的にどうやったら切り替えできますか? modはmakefileをいろいろ書き換えてなんとかなったんだけど、肝心のVCでコンパイルできん。
- 136 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:19:10 ]
- >>134
てか true じゃないともっかいアプリが起動した覚えがある。 ついでにいろんなサンプルを見てみたけど、false を返してるものは無かった。
- 137 名前:133 mailto:sage [2006/02/08(水) 20:31:32 ]
- >>134
>>136 ホントだ、どこ探してもそんな記述はない。なんでこんな処理してるんだろう。謎だ。 ぜったいにfalse返してねーみたいなイベントあったっけ?
- 138 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:47:22 ]
- >>133
事前検証チェックシートにいくつか記載がある。 STOPは規制無かったと思うがtrueを返すべきかと。
- 139 名前:133 mailto:sage [2006/02/08(水) 21:33:32 ]
- >>138
W21CAで確認したんだけど、「終了」を選んでアプリ一覧に戻らずに待ち受け状態になったけどこれっていいのかな。 とりあえずtrueを返してリセットはしなくなりました。みなさんありがとう!
- 140 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:51:34 ]
- DBGPRINTFについて、関数型マクロの可変長引数が使えれば
#ifdef _DEBUG #define TRACE(...) DBGPRINTF(__VA_ARGS__) #else #define TRACE(...) /* nop */ #endif とスマートにできる。VC2005ExpressとARMコンパイラなら使える。VC6は無理ぽ。VC2003は知らん。 結局どのコンパイラでも使えるのは #ifdef _DEBUG #define TRACE DBGPRINTF #else #define TRACE if(0)DBGPRINTF #endif しかないんだろうか。 ちなみにARMコンパイラで if (0) { // 処理 } というコードをコンパイルすると、ちゃんと最適化されてif(0)も含めてコードが無くなる。 なのでパフォーマンス的には後者のマクロでも問題なし。
- 141 名前:140 mailto:sage [2006/02/08(水) 22:04:02 ]
- ついでに>>117についても調べてみた。
#undef DBGPRINTF #define DBGPRINTF DBGPRINTF("ぬるぽ %s", "がっ"); これで命令も、2つの文字列も最適化で消える。パフォーマンス上の問題は無し。 ただしWARNINGが出るので鬱陶しい。WARNINGが増えると、重要なWARNINGを見逃す確率が 高くなるのでオススメしない。
- 142 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 22:04:55 ]
- 最初はDBGPRINTF裸で書いてたから、
とりあえず無理やりこんな感じで解除してる。 今のところはそんなに問題ない感じだが、実際はどうだろう。 #undef DBGPRINTF #define DBGPRINTF if(0)DBGPRINTF
- 143 名前:142 mailto:sage [2006/02/08(水) 22:08:08 ]
- if(0)についても書こうかと思ったが、もう140が書いてたね。
書き込み前にリロードしないとこういうこともあるか。
- 144 名前:140 mailto:sage [2006/02/08(水) 22:15:10 ]
- さらに色々調べてみた。
if (cond) DBGPRINTF("ぬるぽ %s", "がっ"); これで、DBGPRINTFが有効な場合、条件分岐も含めてコードが生成される(当たり前)。 #undef DBGPRINTF #define DBGPRINTF でDBGPRINTFを無効化している場合、条件分岐も含めてコードは「削除される」。 要するにif文の中身が空な場合はifブロックごと削除されるらしい。 ただし、上記の動作はcondの値が予測できない場合に限る。 boolean cond = FALSE; if (cond){ DBGPRINTF("ぬるぽ"); } この場合、condが常にFALSEであることがコードから判別できるため、DBGPRINTFの定義に よらずifブロックごと削除される模様。 さらに int v = 0; if (TRUE){ v = 10; } といったコードですら、vが以降参照されていない場合ifブロックごと削除されている模様。
- 145 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 22:47:19 ]
- ARM コンパイラって結構賢いのね。
>>140 サンクス
- 146 名前:117 mailto:sage [2006/02/09(木) 09:36:03 ]
- >>140
勉強になりますた。 自分も逆汗してコード最適化の様子ぐらい見れるようにならんとだめだね。
- 147 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 10:06:36 ]
- bcc32でbrewコンパイルできるらしいけど、
C++Builderでコンパイルする方法はあるんでつか?
- 148 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 11:18:43 ]
- >>146
>逆汗してコード最適化の様子ぐらい見れるように やろうと思えば出来るが出来ればやりたくない
- 149 名前:140 mailto:sage [2006/02/09(木) 17:30:16 ]
- 書き忘れてましたが上記の検証はデフォルトで生成されるMakefileに
-asm -fs を加えて検証しますた。最適化オプションは -Ospace -O2 となっているはずです。 あとお決まりですが、内容は無保証で。元ソースコードによって結果は違ってくるでしょうし。 何より今回は変更箇所を追いやすいようかなり単純なコードでしか検証していないので、 商用レベル(規模)のコードでは実は最適化しきれない部分が出てくるかもしれません。
- 150 名前:名無しBREWたん mailto:sage [2006/02/09(木) 20:06:54 ]
- あ〜、コンパイラにニーモニックコード吐かせれば見やすいね。
さすがに実際のアプリだとコード量が多すぎて検証しきれない時もあるが >>140の検証で無駄なコードが簡単に削除できることが確認できたのは大きい。 さらに #define TRACE if(0) DBGPRINTF と組み合わせればかなり有用っぽい。
- 151 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 00:09:35 ]
- きわどい内容承知でちょっとお助け・・。
KDDIのプレミアム課金のエクステンションの利用の仕方がわからない・・。ドキュメントも意味わからんし、質問はCPじゃないのでできない。 とりあえず間違ってるとこあったら教えてください。 ○課金モジュールインスコ ・課金モジュールダウソ/解答する。 ・Brewのバージョン(ウチは2.1)のフォルダの「開発用スタブ」開く。 ・BrewフォルダのExamplesに課金モジュールフォルダコピー(中身はmodとdll) ・Brewフォルダのincに課金モジュール.hをコピー。 ・課金モジュール.mifをBrewフォルダのExamplesにコピー。 ・課金モジュール用のテキストを自分のアプリフォルダにコピー。 さてこれからが問題。 説明テキストに”【注意】 開発アプリケーションは「BREW SDK フォルダ内の\Examples」に配置して下さい。”とあるんだけど、自分のアプリを\Examples」に入れろって意味? とりあえずインスコして、ISHELL_CreateInstanceしたところ3=ECLASSNOTSUPPORTが返る(指定したクラスがサポートされていない場合) AEEがエクステンションを見つけられてないと思うんだけど、上記のインスコ以外でじゃぁどうすればいいのかがわからない。 ちなみに自分のアプリのmifには、課金モジュールのBIDは依存ファイルのとこで追加してあります。特権レベルは念のためWebとネットワーク両方につけた。 すんません、なんかヒントください。。。。
- 152 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 00:48:11 ]
- IGRAPHICS_SetDestination()で指定したビットマップへの
IGRAPHICSインタフェースでの描画が反映されない・・・ コードおかしいとこありますか? AEELine pLine ; IBitmap* pDst ; // デバイスビットマップ用 IBitmap* pBuffer = NULL; // 互換ビットマップ用 // なにか画面に書く pLine.sx = 0 ; pLine.sy = 0 ; pLine.ex = 480 ; pLine.ey = 960 ; IGRAPHICS_DrawLine(pMe->pIGraphics , &pLine); // デバイスビットマップを取得してみる IDISPLAY_GetDeviceBitmap(pMe->pIDisplay, &pDst) ; // 互換ビットマップを作成 IBITMAP_CreateCompatibleBitmap(pDst, &pBuffer, 240, 320) ; // 互換ビットマップに書き込んでみる IBITMAP_DrawHScanline(pBuffer, 150, 0, 200, IBITMAP_RGBToNative(pDst , 0x00ff00),AEE_RO_COPY) ; // さらにGRAPHICSインスタンスでも書いてみる(ここが反映されてない) IGRAPHICS_SetDestination(pMe->pIGraphics, pBuffer) ; pLine.sx = 100 ; pLine.sy = 100 ; pLine.ex = 300 ; pLine.ey = 600 ; IGRAPHICS_DrawLine(pMe->pIGraphics , &pLine); // 画面デバイスビットマップと互換ビットマップを合成する IBITMAP_BltIn(pDst, 0, 0, 240, 320, pBuffer, 0, 0, AEE_RO_TRANSPARENT) ; // 表示する IDISPLAY_Update(pMe->pIDisplay) ;
- 153 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 00:53:33 ]
- >>152
色の指定は?
- 154 名前:152 mailto:sage [2006/02/10(金) 01:07:00 ]
- >>153
IGRAPHICS_SetDestination()の後にIGRAPHICS_SetColor()してみたら描画できました,ありがとうございます IGRAPHICSインタフェースは描画に使ってる色をそのまま保持しつづけるんじゃないんですね
- 155 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 02:19:37 ]
- >>151
それに限らず、エクステンションなどの連携するアプリ同士はすべてがエミュ レータから見える位置にないとダメ。 つまり、エミュレータがMIFを参照するのにどのフォルダを見に行ってるのか 調べてみれば・・・。
- 156 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 02:59:01 ]
- >>151
じぶんのアプレットと同じ階層のとこに入れておくんだ。 examplesフォルダとかややこしくなるから気にすんな こんな感じに複数のアプレットがある状態にする。実機でも同じだよ myapp,mif myapp/myapp.dll myapp/extension.txt extension.mif extension/extension.dll
- 157 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 04:00:52 ]
- >>155
>>156 mifはそもそもExamplesに入れたらダメなんですね。 自分の開発場所に課金認証のmifもってきたらISHELL_CreateInstanceできました。 いまやっとドキュメントの意味がわかったんですけど、BrewSDKはExamplesフォルダで開発することを想定して話しをしてるんですね。 ずっと連携(メーラとか)のアプリを作ったことがなかったんでExamplesの存在が謎だったんだけど、なるほどそーいうわけか。。。 こんな夜遅くに本当にありがとう。
- 158 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 09:34:47 ]
- 今日は哲也くんだったのか
- 159 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 10:59:20 ]
- リーチだっ!
つ 検証
- 160 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 11:10:26 ]
- 今は3ヵ月後くらいにツモ番が来るのか?
- 161 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 13:48:35 ]
- 上様の言葉が真実なら仕様書の審査で2ヶ月待ってますが(´д`)
- 162 名前:151 mailto:sage [2006/02/10(金) 14:07:47 ]
- 検証出したら待ちが7000件あるらしいっす。検証実施日は4月末
特急で儲ける気ですかね?キャリアが商売っ気出すとろくなことないんですが・・・。
- 163 名前:デフォルトの名無しさん [2006/02/10(金) 14:13:53 ]
- 審査ふくめで開発費用って
どのぐらいの費用が掛かるん? 開発する物の規模にもよるだろうけど。
- 164 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 21:39:13 ]
- 全盛期の鈴Qなら20億もあれば1本作っただろう。
- 165 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:05:23 ]
- 端末仕様についてちょっと質問です。
端末にて、押しっぱなしするとリピートされますよね?PRESS/KEY/RELEASEが全部くるもんでリピートの判別できません。 押しっぱなし状態と、1ショットキーを識別する方法はありますでしょうか?ちなみにW21CAなんですけど、他の端末も同じ仕様? それと、キー操作音をONにしておくと、ピコピコなっちゃうんですけど、抑制する機能とかありますか? どっちも仕様で無理っていうなら逃げれるんですが・・。
- 166 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:10:32 ]
- 端末壊れてね?
- 167 名前:165 mailto:sage [2006/02/12(日) 19:13:44 ]
- >>166
たとえばどの点が? リピートされるのがおかしいのか、それともキー操作音がなっちゃうのがおかしいんですか?
- 168 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 20:22:55 ]
- 他に持ってないんか?
- 169 名前:165 mailto:sage [2006/02/12(日) 21:14:30 ]
- 手元にあるのはW21CA(Brew2.1)、W32H(Brew3.1)の二つ。
W21CAは、上記の通りPRESS/KEY/RELEASEが全部リピートされてきました。そのときのdwParam値も0のまま。 W32Hは、PRESS/KEY/RELEASEがdwParam=0できたあと、KEYがdwParam=64(これリピートフラグ?)でリピートされます。 そこで質問。 Brew2.1はリピートフラグたたずにリピートされる?それともW21CAの固有の問題?
- 170 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:18:41 ]
- リピートフラグなんてあるのか。
俺は自前でリピート処理作ってるのに
- 171 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:22:08 ]
- >>169
>RELEASEが全部リピート 放すのがリピートってどういう状況だか理解できん。 あと、 >PRESS/KEY/RELEASE KEYってなんだ?3種類あんの?
- 172 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:52:46 ]
- EVT_KEY
EVT_KEY_PRESS EVT_KEY_RELEASE 3種類あるよ
- 173 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:59:02 ]
- 3種類あるけど
EVT_KEY_PRESS キーが押された EVT_KEY_RELEASE キーが離された EVT_KEY キーに何かあった だったと思われる。
- 174 名前:165 mailto:sage [2006/02/12(日) 23:04:57 ]
- >>170
ある >>171 EVT_KEY_PRESS/EVT_KEY/EVT_KEY_RELEASE それぞれ、 押された時/もっかい/離したとき にくる。 Brew3.1ではHandleEventの4番目の引数がtrueでくるとリピートで、押しっぱなしにすると PRESS:0→KEY:0→(リピート動作)KEY:true→KEY:true→・・・(離すと)RELEASE:0 でくる。 Brew2.1(2.0も)では、 PRESS:0→KEY:0→RELEASE:0→(リピート動作)PRESS:0→KEY:0→RELEASE:0→・・・ でくるので判別不能。
- 175 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:26:33 ]
- >>174を誰か訳して
EVT_KEYがもっかいって、おかしいよな。方言?
- 176 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:53:56 ]
- >>165はサービスガイドを読んでよ。答えが書いてあるじゃんか。
- 177 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 00:15:00 ]
- 端末によっては、複数同時押ししたときなんかは
最後に反応したキー以外リピートしなかったりするので そもそも、端末のリピートに頼るの危険。
- 178 名前:165 mailto:sage [2006/02/13(月) 00:36:56 ]
- >>175
え、方言?もう一回=もっかいって言わない? EVT_KEYは「確定/決定」らしい。なんで押されたイベントが2回くるのかわからなかったけど、KEYで確定とするらしい。 >>176 答え書いてありました。ちなみにさっきの微妙に嘘ついてます。 Brew2.1 PRESS:0→KEY:0→(リピート動作)PRESS:0→KEY:0→・・・(離すと)RELEASE:0 (←RELEASEは最後の1回しかこない。) ちなみに今確認したんだけど、上キーを押すとPRESSイベントがこない(KEYはくる)。なんでだ・・・。
- 179 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 00:52:07 ]
- どんなすごいソフト作ってんの?
- 180 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 09:21:57 ]
- >>165
書類全部読み直せ。
- 181 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 09:35:35 ]
- ぷっす・りりーすのいべんとはんていできーたすくしょりしる
△ 4点
- 182 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 09:49:30 ]
- おれ、KEYとRELEASEしか使ってなかった。リピートはこの二つ使って自前処理している。
PRESSは存在を知らなかったよ。レスを見ているとそれで無難な方法だったようだね。
- 183 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 11:55:20 ]
- >>182
同じくKEYとRELEASEだけでリピート、ワンショットやってる。 PRESSは終了するとき使うとすぐアプリが起動するから使うなとかなかったけ? 普通の時は問題ないだろうけど。
- 184 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 12:19:31 ]
- PRESSはなんか動きが変っぽかったから使わなくした
- 185 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 18:08:26 ]
- BREW3.1について質問です。
自アプリサスペンド中に他のアプリによりメモリ確保が発生し 自アプリが強制終了するので現状をファイルに出力して終了 するように作るのを推奨しますみたいなことがサービスガイドに 書いてありますけど、これやんなきゃ検証通らないんでしょうか? ていうか、みなさんどうしてます? できればこの処理はいれたくはないんですが…
- 186 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 18:24:49 ]
- >>185
2.1を3.1にしたものしかやってないけど うちではファイル出力はしてないです。検証は通ってます
- 187 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 18:24:51 ]
- 推奨と必須は違うと思う……。
- 188 名前:185 mailto:sage [2006/02/13(月) 18:54:57 ]
- >>186
即レスありがとうございます〜 大変参考になりました。 >>187 うう…おっしゃるとおりです。orz ただちょっと検証がトラウマになってまして…
- 189 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:44:40 ]
- Brew3.1でファイル(100byteくらいのテキスト)をオープンしようとすると、なぜか開けない。
もともとあるファイルを開こうとしてるだけだからEFSエラーで0byteのファイルができちゃう不具合とは違うんだけどなんでですか? MIFの最大ファイル数を9999とかにすると開けるようになるんだけど、エミュじゃなくて実機でも同じくなる。Brew3.1ってここ空欄じゃダメなんですか?
- 190 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:56:59 ]
- >>189
IFILEMGR_GetLastError()
- 191 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:01:18 ]
- 2.1でも3.1でも
MIFの最大ファイル数なんか設定したことないな。 まあテキストファイルを開いたこともないけど
- 192 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:46:32 ]
- ファイル名が大文字とか...でも実機だとAppLoaderで転送する時に小文字に変換されるはずだな。
- 193 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 00:09:26 ]
- 3.1 で大文字と小文字を混ぜて使ってるとおかしくならない?
俺はそれのせいで 2.1 → 3.1 移植ではまった覚えがあるんだが...。
- 194 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 03:46:43 ]
- >>193
なるかもしれないね。 だからこそだろうけど、BREW3.1ではファイル名を全て小文字にせよとガイドに明記されている。
- 195 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 13:08:30 ]
- クアルコムのBREWサイトがメンテ中。
This system is currently undergoing scheduled maintenance and will be unavailable until 9:00PM PST on Wednesday February 15, 2006. となってるんだけど、15日夜9時って、日本時間だと今日の何時?
- 196 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 13:11:47 ]
- >>195
自己解決。PSTって書いてあるじゃん! 時差17時間だから、午後2時開店予定だな。 あと50分か・・・。
- 197 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 13:35:19 ]
- よくあるよくある
- 198 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 20:42:23 ]
- サーバデータ受信を「1つの自作関数呼出し」だけで行うといった
方法は無理なのでしょうか? int CmnWebAccess(XXX pMe, char* pszURL, char* pResp); 戻り値:受信バイト数 pszURL:URL pResp:受信バッファへのポインタ 上記のような1つの関数を1回呼び出すだけで、 サーバからのデータを格納させたいと思っています。 しかし、サーバ通信は非同期(コールバック関数複数呼出し)であるため、 ラッパ関数内で、その間、受信完了まで制御を止めなければなりません。 サーバからの受信が完了してから、呼び出し元に制御を戻すようなことは 出来るのでしょうか?
- 199 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 22:15:16 ]
- 制御を戻すっていうのを、呼び出し元が能動的に処理するか受動的に処理するかで変わるよな。
能動的に処理するなら、pMe にステータス変数を作っておいて、その値を常に確認する。 で、全ての処理が終わったという状態になったら、次の処理を行う。 受動的に処理するなら、呼び出し先にコールバックされたい関数(へのポインタ)を pMe のどっかに入れて、呼び出し先の処理が終わると同時にその登録された関数を呼び出してもらう。
- 200 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 22:23:16 ]
- 受信終了まで OS に return しないで済む方法はないか、と言いたいんちゃう?
ちなみに無理だけど。
- 201 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 22:25:59 ]
- ああ、「1つの自作関数呼出し」だけでするのか。
だったら pMe の中に状態を表す変数をおいといて、 この関数の中でその状態ごとの処理をすればいいんじゃないかな。 ただ、最初に状態を初期化してやる必要はある。 しかもこれ、引数があるってことは能動的に処理するってことだよな。 制御を止めてるのに引数の確認をしたいってのは意味が分からんな。
- 202 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 09:11:43 ]
- とらあえず言葉での説明が難しいなら
ソースを提示してくれればアドバイスしやすいかも
- 203 名前:デフォルトの名無しさん [2006/02/17(金) 10:00:19 ]
- BREWでマスコットカプセルを使ってるのですが、
DoJa版マスコットカプセルのAffineTrans#lookAtに該当するのは BREW版ではIMICRO3D_Atrans3i_setViewTransですよね? 同じ値のベクトルを渡してるのに、出来上がる行列が まったく違うのはなぜでしょうか?
- 204 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 10:19:13 ]
- >>199>>201
難しく読み取りすぎ。わざとやってるならいやらしい奴だ
- 205 名前:199 mailto:sage [2006/02/17(金) 11:48:52 ]
- >>204
すまんす。わざとじゃないんだけどね...。 つまり関数の中で、 switch( pMe->state ){ case 0: // 初期状態 ... break; case 1: // 受信中 ... break; case 2: // 受信終了 ... pMe->result = ... // ここに結果を書く break; } こんな感じに書いておいて、メイン側は、メインループ内で、 CmnWebAccess( ... ); if( pMe->state == 2 ){ // 受信完了 } これでグルグル回せばええんじゃないかなと。 さすがにネイティブからのコールバック関数は別にする必要があるけど、 メインループ内では一つの関数で処理出来る。
- 206 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 13:05:31 ]
- >>205
>200の時点でそーいう話じゃないって指摘が出ている。
- 207 名前:198 mailto:sage [2006/02/17(金) 13:08:21 ]
- 以下のような処理を行ってみましたが、
CmnWebAccessのwhileループで、固まってしまいます。 Windowsとかでしたら、ループ処理内にPeekMessageなどを逐一呼び出すことで、固まったりしないですよね。 // クリックイベント OnClick() { // 呼び出し元は1コールで指定URLからデータ受信する。 CmnWebAccess(...); } // ダウンロードライブラリ関数 int CmnWebAccess(XXX* pMe, char* pszURL, int nHttpType, char* pbuf, int nLen, char* pRespBuf) { pRespBuf = NULL; // ウェブアクセスに関する初期化処理およびダウンロードの開始を行う。 //(コールバック関数登録やIWeb_GetResponseの呼び出し) if (_prCmnWebInit(pMe, pszURL, nHttpType, pbuf, nLen) == FALSE) { return 0; } // ダウンロード処理が終わるまでループする。 while (1) { // コールバック関数が呼び出されてダウンロード処理が続行されることを期待するが。。。 // ここでループ処理をしてしまうと、コールバック関数のダウンロードが実行されない。 if (pMe->m_cmnWeb.m_nWebStatus == WEB_HTTP_STS_END) { break; } } // pRespBuf MALLOCでバッファを設定する処理 ... return pMe->m_cmnWeb.m_nBufResp; }
- 208 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 13:40:04 ]
- >>198
お前もかw >200の時点で無理だと言っている。 BREWはPeekMessageもスレッドも使えないので不可。 while(1)でメインスレッドが占有されるから他に処理が移行しない。
- 209 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 14:17:14 ]
- >>208
BREW3.1なら可能。
- 210 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 14:25:22 ]
- ITHREAD(だったっけ?)を使っても、結局システムに処理を返さないとダメ
- 211 名前:デフォルトの名無しさん [2006/02/17(金) 18:38:37 ]
- ILOGGERでログファイルに出力したいんですが、0バイトのファイルができるだけで、書き込まれません。
ttp://pokke-island.jp/xoops/modules/newbb/reply.php?forum=1&post_id=4&topic_id=4&viewmode=flat&order= このサイトを参考にしてます。 アプリ開始時に、 pMe->piLogger = NULL; ISHELL_CreateInstance(pMe->pIShell,AEECLSID_LOGGER_FILE,(void**)&pMe->piLogger); ILOGGER_SetParam(pMe->piLogger,AEE_LOG_PARAM_FILE_NEW,_OFM_READWRITE,"journal.log"); ILOGGER_SetParam(pMe->piLogger,AEE_LOG_PARAM_FILTER_ONE,1,TRUE); ILOGGER_SetParam(pMe->piLogger,AEE_LOG_PARAM_SENT,0,NULL); ログ出力したいところで、 ILOGGER_Printf(pMe->piLogger,(pMe->piLogger,1,__FILE__,__LINE__,"LOG Message")); アプリ終了時に、 ILOGGER_Release(pMe->piLogger); pMe->piLogger = NULL; という感じでコーディングしています。 因みにMIFでは、 ・特権レベルでファイルにチェック ・EFS最大ファイル数=100 ・EFS最大容量=1024000 としています。 機種はW32Hです。 原因がお分かりの方、よろしくお願いします。
- 212 名前:211 [2006/02/17(金) 19:37:23 ]
- すいません、
ILOGGER_SetParam(pMe->piLogger,AEE_LOG_PARAM_FILTER_ONE,1,TRUE); はコンパイルでエラーが出たので、 ILOGGER_SetParam(pMe->piLogger,AEE_LOG_PARAM_FILTER_ONE,1,(void*)TRUE); にしてあります。 よろしくお願いします。
- 213 名前:198 mailto:sage [2006/02/17(金) 20:37:58 ]
- みなさん。返信ありがとうございます。
(ちなみに開発環境はBREW2.1です) 一つの関数では無理とのことなので、 WEB受信完了の通知関数別に作って対処しました。 // クリックイベント void OnClick() { char szSend[] = "hello send message."; // データをポストする処理を行う。 // 以降、内部ではコールバック関数が呼び出されサーバ受信処理が走る。 CmnWebOpen(pMe, "www.xxx.jp/xxx/post", CMN_HTTP_POST, szSend, sizeof(szSend)); } 内部では、 ISOURCE_END がきたら 通知イベント関数を呼び出す。 // 通知イベント void OnCmnNotifyEvent(XXX* pMe, int nNotify) { if (nNotify == CMN_NOTIFY_WEB_FIN) { // サーバからの受信データを取得する。 char* pRespBuf = NULL; int nGetData = CmnWebGetData(pMe, &pRespBuf); if (nGetData > 0 && pRespBuf != NULL) { // ファイルに保存などの何らかの処理… } // サーバ通信を終了する。 CmnWebClose(pMe); } }
- 214 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 13:13:24 ]
- 平和なのか、誰もが余裕でBREWを使いこなしているのか、
はたまたkのお役所仕事で待ちぼうけしてるだけなのか・・・
- 215 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 13:47:54 ]
- 今iアプリで忙しい(`・ω・´)
つーか、まともな企画書も書けないゲーム屋が 3キャリアで出したいとか言ってるのを聞くと笑える。 そんな感じでBREWは停滞気味。
- 216 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 13:53:13 ]
- みんなbrewをやる気がないだけ
- 217 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 16:59:40 ]
- はねられてショボン中。
- 218 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 23:39:40 ]
- IPREMIUMの開発用スタブの使い方教えてください。
1。Brewの開発フォルダの「inc」に「開発用スタブ」のipremium.hとipremium.bidを入れる。 2。自分のアプリと同じとこに、「開発用スタブ」のipremium.mifを置いて、ipremiumフォルダを普通のアプリみたいに置く(中身はDLL) これで基本的にインスタンスは生成できるようになります。 ほんで、IPREMIUM_TEST.txtなんですが、これはipremiumフォルダに突っ込めばよいですか? readmeによると、このtxtの〜=0とかを書き換えると、その値を返すようになりますよーと書いてあるんですが、実際返ってこないです。なんででしょう・・。 txt中に 「スタンドアローン購入 応答」 /* 結果コード */ IPREMIUM_SAPR_RSP_rslt_cd = 00 /* 結果事由 */ IPREMIUM_SAPR_RSP_rsn_cd = 003 /* トランザクションID */ IPREMIUM_SAPR_RSP_tran_id = 12345678900987654321 とあるので、 ret = IPREMIUM_SAPurchaseRequest( app->premium, app->premium.SA_purchase_snd, app->premium.SA_purchase_rsp ); ってやると、app->premium.SA_purchase_rspには何にも入ってません。なぜ??
- 219 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 00:19:43 ]
- IPREMIUM_TEST.txt は自分のアプリと同じフォルダ。
- 220 名前:218 mailto:sage [2006/02/22(水) 01:11:17 ]
- >>219
エミュレータで自分のフォルダに入れたらちゃんとレスポンス受け取れました!! ちなみに端末でチェックする場合、どうすればいいですか? 自分でやってみたのは、 普通のアプリと同じくipuremiumという名前でテストsigを取得して、 同じく「開発環境認証課金モジュール」のipremiumフォルダとmif、テストsigを端末に転送 とやってみたのですが、提供者コードエラーとかでOKが返ってきません。提供者、情報コード、アイテムコードは正常に取得しています。 なにか問題があるとすればどこでしょうか?
- 221 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 01:16:54 ]
- エミュで自分のアプリと同じフォルダだったんだから、
実機でも自分のアプリと同じフォルダに決まっとろうが
- 222 名前:218 mailto:sage [2006/02/22(水) 01:55:37 ]
- >>221
ん?意味がわからぬ・・・。ipremium.modを自分のアプリと同じフォルダに入れろって意味?
- 223 名前:218 mailto:sage [2006/02/22(水) 02:03:26 ]
- 開発用スタブを端末に転送して、自分のアプリフォルダにipremium_test.txtをいれたらテストできるのはわかった。
そこで、今度は実際に課金のチェックをしたいわけなのだが、そうなるとipremium_test.txtは関係ないですよね? 開発環境認証課金モジュールの中身を転送したら良いのかなぁと思って実行してみたんだけどエラーで飛んじゃうんです。。
- 224 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 02:23:14 ]
- >>218
>IPREMIUMの開発用スタブの使い方教えてください。 このモジュールはスレで話題にしない方がいいんじゃないかな。 オフィシャルのサポートへ質問してみなよ。 委託開発とかなら元会社通して質問。
- 225 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 02:23:32 ]
- >>223
その領域になると答えるほうも大変だな。答えていい事柄かどうか。 とりあえず、その思いつきは当たりそうだけど外れ。 ドキュメントちゃんと読もう。なけりゃ請求するなりなんなり。
- 226 名前:218 mailto:sage [2006/02/22(水) 02:33:51 ]
- >>224
>>225 自分がやってるチェックの仕方があってるか間違ってるかわからないんですよねぇ・・。 調べてほしいと言われているので元請けにきいてわかるわけもなく。。大人の事情で困ってるのですわ。 ドキュメントはBrew開発支援サイトから課金モジュールのzipはもらってる。 そこにはほぼ説明なしのモジュール群と、サンプルアプリのみ。 プログラムはサンプルを元にして作ってみたのだけど、端末におくとちゃんと動作しないときた。 実機に、何をどんな感じで置けばいいのか、それだけ教えてくださいませ。。。。お願いします、みなさまがた。
- 227 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 03:13:10 ]
- >>226
それしか貰ってないの・・・って、よく作れますなΣΣ(゚Д゚;) あからさまに情報不足じゃないですか。 とりあえず、 - ここがまちがい→開発環境認証課金モジュールの中身を転送したら良いのかなぁ でも開発用スタブは通信しないから・・・ - とだけ書いておくっす。なぜかは違う資料読めば書いてあるんだけど。 残りはかけるぎりぎりのライン引きがわかる人や勇気のある方に↓
- 228 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 03:28:33 ]
- >>226
>ドキュメントはBrew開発支援サイトから課金モジュールのzipはもらってる。 そのモジュールのドキュメントがある。それがないと絶対に仕事は進まない。 ちゃんとそう言って元請けからそのドキュメントを受け取るしかないな。
- 229 名前:218 mailto:sage [2006/02/22(水) 03:31:35 ]
- >>227
えぇ、それだけなんですorz 「でも開発用スタブは通信しないから」 okです。ここは理解してます。 開発用スタブ 開発環境認証課金モジュール 商用認証課金モジュール と3つありますよね?それぞれどういう使い分けをしたらよいのですか? 開発用スタブは、たぶんテキストを書き換えて、それぞれのメソッドの返す値を自分できめて動作チェックするものと理解できてます。
- 230 名前:218 mailto:sage [2006/02/22(水) 03:34:48 ]
- >>228
「そのモジュールのドキュメントがある。それがないと絶対に仕事は進まない。 」 そいつはBrewの支援サイトじゃなくて、調味料とかいう名前のサイトからじゃないとダウンロードできないですか? 支援サイトにはモジュールのzip以外になんにもなかったっす。
- 231 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 04:19:36 ]
- >>229
> それぞれどういう使い分けをしたらよいのですか? モジュールの使い方、使用目的含めすべて足りない書類に書いてあります。 モジュールが返す結果のデータの内容の意味などにも、それらの足りない 書類が必要で、それがない状態ではまず作成できないはず。 でもそれがあるのは、支援サイトではないところ。なので、なければ仕事に ならないということで請求してください。
- 232 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 08:24:18 ]
- 書類読んだ方がいいな。
開発環境用が通信するなら通信先はKの鯖だろうし、 あのKが申請だの登録だの無しに鯖を使わせるとも思えん(´・ω・`) と、推測したようなこと書いておく。
|

|