2012-12-03 82 views
0

我想弄清楚Boost :: asio是如何工作的。我在看這個:http://www.college-code.com/blog/wp-content/uploads/2008/11/boost_serial_port_demo.cppBoost :: asio :: write如何工作?

我用那個代碼連接到一個Arduino來測試它(我同步波特率)。當通過cin/cin.read()輸入數據時它工作正常,但如果將其更改爲[int input =某個整數],而不是從鍵盤讀入數據,則Arduino不再獲取正確的數據。我也嘗試從文件中讀取它,使用stringstream,並通過static_casting一個字符但他們都沒有工作。我無法弄清楚爲什麼int通過cin而不是其他方法分配時會有所不同。

我正在尋找在我正在編寫的程序中使用此代碼,但我無法從鍵盤寫入數據。任何人都可以向我解釋這個嗎?

+0

你試圖發送什麼值?你確定它只是一個字節嗎?接收端的數據會以何種方式出錯?如果你在兩個步驟之間睡覺,你會得到一個正確的傳輸,以模擬交互式程序等待輸入的時間嗎? – MvG

+0

我只是想發送一個1或0。我的Arduino正在運行的程序僅僅是針對不同閃爍模式設置的閃爍草圖,取決於Serial.read()是否返回0,1,-1(不讀取任何內容時的值)等。使用cin,我可以向arduino發送一個1或一個0(或任何其他值),它將激活Serial.read()== 1或0的閃爍模式。 –

+0

如果我將cin >>輸入行註釋掉而不是輸入= 1(或其他),arduino將會像接收數據一樣閃爍(不是我編程的東西,它只是在接收數據時自動閃爍),然後返回閃爍模式,表明串行.read()返回-1。 –

回答

0

@ MvG。這是一個計時問題。我第一次運行它時,我使用了Sleep(1000)。我剛剛在write()函數前用斷點試了一下,然後一次向前走了1行,並且它正確地發送了數據。所以我用睡眠(10000),它的工作!