- 71 名前:254 [2009/10/19(月) 23:14:10 ]
- [2] 内容
通信のパケットを解析してコードに応じた処理を行いなさい。 ただしコードは必ず2回確認して2回とも同じだった場合のみ処理を行うこと。 コードが2回以上続けて来ても処理は1回のみとする。0XFFが来たら処理を終了すること ※ コード例 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x02, 0x02・・・・・・・・・・0xFF, 0xFF; なので、こんな感じのソースにしてみました。 static int PreCode = 0xFF; unsigned int Code = 0; void Function(unsigned int Code){ if(PreCode != Code){ switch(Code){ case 0x00: if(Cnt++ >= 1){ /* 1の処理 */ Cnt=0; PreCode = Code; } break; /* 中略(上記と同じ様にしてcaseの値を変える) */ case 0xFF: if(Cnt++ >= 1){ /* 終了処理 */ Cnt=0; PreCode = Code; } break; default: return; }}} [3] 環境 OS:WindowsXp、Vc++6.0 これでは、0x00が来た後に0x01が来た場合に1回目のチェックで処理に入ってしまいます。これを上手く動く様にするにはどうすれば良いかソースの改良をお願いします。
|

|