ページ 11

win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 21:51
by 学生の嘆き
毎回、失礼します。
writefileの正しい使い方についての質問です。
sprintf_s(str ,255,"速度=%.1lf" ,SPEED_ADD);でSPEED_ADDという変数を
定期的に変化させています。
このsprintf_sで書いた中のSPEED_ADDという変数をwritefileを使ってテキスト
に書き込んでいきたいと考えていますが、なかなかうまくいきません。
writefileを使って変数を書き込んでいくにはどのように記述すればよいのでしょうか。
教えてください。

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 22:10
by Ryo
うまくいかないというのは、どういうことでしょうか?

変数の値を変えながらができないのか?
そもそも、ファイルの作成、書き込みといったことそのものがわからないのか?

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 22:17
by 学生の嘆き
ファイルの作成、書き込みというものもなかなか理解できません。
また
if( hFile != INVALID_HANDLE_VALUE ) //ファイルを開くことに成功したならば
{
TCHAR buf1[] = {(sprintf_s(str ,255,"速度=%.1lf" ,SPEED_ADD))};
WriteFile//ファイルに書く
(
hFile, //シリアルポートへのハンドル
buf1, //送信バッファへのポインタ
sizeof(buf1), //送信データ数
&writesize, //際に送信したデータ数
NULL //非同期I/O動作の場合のオーバーラップ構造体へのポインタ
);
作ってはみたのですが、変数を書き込むどころか、なにも書くことができませんでした。

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 22:20
by みけCAT
>TCHAR buf1[] = {(sprintf_s(str ,255,"速度=%.1lf" ,SPEED_ADD))};
パッと見でおかしいと思いますね。
ここは
TCHAR buf1[10000];
sprintf_s(buf1 ,255,"速度=%.1lf" ,SPEED_ADD);
とし、WriteFileの中の
sizeof(buf1)

lstrlen(buf1)
でどうでしょうか?

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 22:55
by 学生の嘆き
実行してみましたが
フフフフ戉・r2vl
フフフフ戉・r2vl
フフフフ戉・r2vl
フフフフ戉・r

このようなデータになってしまいました。
これはいったい・・・

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月27日(金) 23:28
by softya(ソフト屋)
TCHAR buf1[10000];
を使われてますがUNICODEを意識して使われていますか?
通常はマルチバイト文字だと思いますので、マルチバイト文字をコンパイルオプションで指定しないと予想もしない物が書き出されているんだと思います。

「今さら聞けない、教えてもらえない!! Unicode /マルチバイト文字対応 国際化VC ++ プログラミングの基礎!! - JAPAN Platform SDK(Windows SDK) Support Team Blog - Site Home - MSDN Blogs」
http://blogs.msdn.com/b/japan_platform_ ... de-vc.aspx

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月28日(土) 03:23
by 学生の嘆き
なんとかできました!ありがとうございます。

Re: win32apiにおけるwritefileの使い方について

Posted: 2012年1月28日(土) 08:56
by softya(ソフト屋)
ここのルールなのですが、どう上手く行ったか何が問題だったかプログラムコードと上手く行った対処方法を他の人の参考になるように書き残して頂くようにお願いします。