2012-05-11 75 views
3

我正在使用串行端口來控制名爲nano controller的設備。我使用CreateFile,writeFilereadFile進行通信。將字符串和變量寫入C中的緩衝區

這是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;  
    } 
} 

這裏數據應包括內部lpBuf。這是一個緩衝區。

我想分配「MINC,moveL」。這裏MINC是文本。然而,moveL是可變的,類型應該是雙倍的。值應該隨着時間傳遞給moveLmoveL從0〜10 000變化。

那麼如何填充緩衝區?

+2

兩件事情:(1)向我們展示lpbuf'的'的聲明;(2)當你說'moveL'是'double'並希望將其寫入緩衝區,你的意思是你想寫內部表示的'sizeof(double)'字節,或者你想寫'moveL'的值的文本表示? – dmckee

回答

1

這聽起來像你想sprintf(或它的堂兄弟之一):

char buffer[128]; 

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

感謝您的回覆。你能建議我如何檢查緩衝區的內容。我用這個。 – Kumaa

+1

@Kumaa:你的意思是你想(例如)打印緩衝區來查看它包含的內容?如果是這樣,就像打印任何其他字符串一樣打印出來(即它是一個普通的C樣式零終止字符串)。 –

+0

是的,謝謝你的回覆。 我用以下來檢查內容。 printf(「\ nTSbuffer [5] =%lf」,TSbuffer [5]); 但變量的值始終爲0.請建議如何檢查緩衝區內容。 我比較新的C. 請幫忙。 謝謝 – Kumaa

1

你可以使用sprintf(lpBuf, "MINC,%lf", moveL);創建字符串?

在填充數據之前,請務必爲lpBuf分配足夠的內存。