2012-05-11 29 views
3

私は、ナノコントローラと呼ばれるデバイスを制御するためにシリアルポートを使用しています。通信にはCreateFile,writeFilereadFileを使用しました。Cでバッファに文字列と変数を書き込む

これは、データがlpBuf内部に含まれるべきここでwriteFile

if (!WriteFile(hComm, lpBuf, dwToWrite, &dwWritten, &osWrite)) {  
    if (GetLastError() != ERROR_IO_PENDING) { 
     // WriteFile failed, but isn't delayed. Report error and abort. 
     fRes = FALSE;  
    } 
} 

の構文です。それはバッファーです。

"MINC、moveL"を割り当てたいとします。ここにはMINCがテキストです。しかし、タイプが2倍でなければならないmoveLは可変です。時間はmoveLに渡す必要があります。 moveLは0〜10000の範囲で変化します。

バッファをどのように埋めるのですか?

+2

2つのこと:(1) 'lpbuf'の宣言を表示し、(2)' moveL'が 'double'でバッファーに書きたいと言っているときは、書き込みたいという意味ですか?内部表現の 'sizeof(double)'バイト、または 'moveL'の値のテキスト表現を書きたいと思っていますか? – dmckee

答えて

1

あなたがsprintf(またはそのいとこの1を)したいように聞こえる:

char buffer[128]; 

sprintf(buffer, "MINC,%f", moveL); 
WriteFile(hComm, buffer, ...); 
+0

あなたの返信ありがとう。あなたはどのようにバッファの内容をチェックすることができます示唆できますか?私はこれを使った。 – Kumaa

+1

@Kumaa:(例えば)バッファに何が含まれているかを見るためにバッファを印刷したいということですか?その場合は、他の文字列と同様に印刷してください(通常のCスタイルのゼロ終了文字列です)。 –

+0

はい、お返事ありがとうございます。 次のようにして内容を確認しました。 printf( "\ nTSbuffer [5] =%lf"、TSbuffer [5]); 変数の値は常に0です。バッファの内容を確認する方法を提案してください。 私は比較的新しいです。 助けてください。 ありがとう – Kumaa

1

あなたは文字列を作成するsprintf(lpBuf, "MINC,%lf", moveL);を使用することはできますか?

データを入力する前に、lpBufに十分なメモリを割り当ててください。

関連する問題