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
116 名前:名無しBREWたん mailto:sage [2006/02/07(火) 11:48:50 ] >>104 au Win ケーブルは使えないよん。 おとなしく my Sync ケーブルを手に入れるか 互換性のあるケーブルを探すしかない。
117 名前:名無しBREWたん mailto:sage [2006/02/07(火) 11:51:13 ] って、レスしに来たんじゃあなかった罠。 DBGPRINTFをうまく消すやり方だけど、 過去ログだといろんな人がいろいろ言っていたけど、 以下のコードを挟んでみたらとりあえず Logger にはでなくなった。 でも、評価式は残るから、評価式に意味がないときに コンパイラの最適化で消えているかどうかを調べるにはどうすればよいのだろうか。 #undef DBGPRINTF #define DBGPRINTF
118 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 12:02:40 ] >>117 アセンブラ吐き出して確認すればええんじゃない?
119 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:29:51 ] DBGPRINTFだってマクロなんだから 自分で同等のマクロ作ればいいと思う。
120 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 14:22:48 ] 空のインライン関数にしたら?
121 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 14:59:45 ] if( cond ){ DBGPRINTF( ... ); } って書いたときに、最適化によって if 文自体が消えるかどうかって話でしょ? 同等のマクロを作るとか、空きのインラインにするってのは違うと思うんだが。
122 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 15:08:43 ] え、みんなワーニング全部消してるの? 親クラスの仮想関数で引数使ってないからって怒られて以来 全部放置してるよ('д')
123 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 16:05:56 ] >>121 の場合、DBGPRINTF が消えると、cond の処理(if 文の処理)自体が 命令数的にも処理時間的にも無駄だから、それを ARM コンパイラが 無意味な cond の命令から消してるかどうかってことだろ? Warning は何の関係もない気がする。
124 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 17:46:44 ] >>121 俺はこうかと思ってた。 デバッグ時 DBGPRINTF("line:%d", __LINE__); ↓ 製品(DBGPRINTFをundefして空マクロに) ("line:%d", __LINE__); するとこんなWarningが。 "c:\BREW_SDK\311463~1.2_J\sdk\examples\HELLOW~1\HELLOW~1.c", line 103: Warning: C2917W: no side effect in void context: '"line:%d"' "c:\BREW_SDK\311463~1.2_J\sdk\examples\HELLOW~1\HELLOW~1.c", line 103: Warning: C2917W: no side effect in void context: '<integer constant>' ここらがバイナリでちゃんと削られてるのか? ってことかと。
125 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:13:47 ] >評価式
126 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:41:23 ] 最初っから#ifdef _DEBUGでくくってるので問題にならんのだが、 みんなデバッグプリント裸で書いてるの?
127 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 18:52:33 ] いや、ちゃんと服を着て(ry
128 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 20:35:27 ] >>126 俺はデバッグ出力用クラスを作ってるよ。 リリース時は全部中身を空にしてる。
129 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 21:58:48 ] >>126 くつ下ははいてる
130 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 23:23:58 ] >>116 マジで使えない? usbケーブルwinでw21saを接続できます。
131 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 02:10:06 ] 消えない背景の上でお絵かきするみたいな機能を作りたいんだけど 複数の画面バッファをレイヤーみたいに重ね合わせるのは可能ですか?
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をやる気がないだけ