2007年8月31日金曜日

VC++2005 sprintf の代わりに Format を使う

VC++2005 sprintf の代わりに Format を使う

sprintf を使うとバイナリを簡単にアスキーコードに変換できるので便利でしたが、MFC では CString の Format がもっと便利でした。
VC++2005 では CString のかわりに、 String を使用しました。
String は型指定方法が "%02x" -> "{0:X02}" になったことや、変換値を Format の戻り値から取得するしかないなど使いにくく感じます。

でも、VC++2005 で MFC は使いたくないのでしょうがないですね。

例では、0x35 というデータを表示用としてアスキーコード 0x33,0x35,0x00(null) に変換します。
----------------------------------------
例)sprintf を使用した場合
----------------------------------------
char moji[3] = { null };
unsigned char bindata = 0x35;
sprintf(moji,"%02x",bindata);
----------------------------------------
例)CString の Format を使用した場合(MFC)
----------------------------------------
CString moji;
unsigned char bindata = 0x35;
moji.Format("%02x",bindata);
----------------------------------------
例)String の Format を使用した場合
----------------------------------------
String^ job;
unsigned char bindata = 0x35;
String^ moji = job->Format("{0:X02}" , bindata);

2007年8月30日木曜日

VC++2005 で シリアル通信を行う

前回 CreateFile() のエラーのため、別の方法でシリアル通信を行うことにしました。
ツールボックスにある”serialPort”を行うことにしました。

いろいろ試行錯誤してやっとテキストボックスに受信データを表示できるようになりました。

//-------------------------------------------------------------------
//■シリアルポート受信スレッド
private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e) {
unsigned char rcvData = serialPort1->ReadByte();
System::String^ string1;
String^ moji = string1->Format("{0:X}" , rcvData);
SetText( moji );
}
//■デリゲート
delegate void SetTextCallback(String^ text);
//■テキストボックスセット
private: void SetText(String^ text){
if( this->textBox1->InvokeRequired ){
SetTextCallback^ d = gcnew SetTextCallback(this, &t070824::Form1::SetText);
this->BeginInvoke( d, text );
}
else{
this->textBox1->Text += text;
}
}
//-------------------------------------------------------------------

2007年8月29日水曜日

VC++2005 と windows.h (続き)

VC++2005 で windows.h をインクリュードできるようになりました。

以下のURLの通りにすればOKです。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

でも、また問題が発生しました。

VC++6.0 で使っていたソースをコンパイルして実行すると、CreateFile() のところで次のエラーが発生します。

'System.NullReferenceException' のハンドルされていない例外が t070824.exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。

なかなか進みませんねぇ。

2007年8月28日火曜日

VC++2005 と windows.h

VC++2005 で windows.h をインクリュードすることができなかった。VC++6.0 やVC++2003であれば、windows.hをインクリュードできたのに。。。

2007年8月24日金曜日

Visual C++ 2005 Express Edition

今日、Visual C++ 2005 Express Edition をインストールしました。
以下より無償でダウンロードできます。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

ユーザー登録が多少面倒ですが、無償なので助かります。

2007年8月22日水曜日

DirectX SDK

DirectX SDKをやっとインストールできた。インストールには結構時間かかった。

2007年8月16日木曜日

V850の内蔵DSPはどうやって使うのか?

NECのV850には、DSPが内蔵されているようですが、どうやって使用するのか知りません。まだ統合環境ツールをインストールしたばかりなので、DSPの使用方法を調べようと思います。