[問題] 等待資料回傳的邏輯
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C/C++
問題(Question):
目前在寫單晶片的程式
系統非常簡單, 只有接RS232跟電腦互相傳送字串
用來控制周邊動作, 如LED, 馬達...etc
1. 我打算用RS232模擬command line進行一些硬體動作
對於RS232字串的Parsing實在不太好做,
剛剛爬文有使用Stringstream, strtok
(不確定單晶片的C++有沒有stringstream, 但是確定有strtok)
太晚來爬, 所以已經用sscanf來做,
遇到的問題是是不能用空白鍵當分隔字元
所以我就用逗點當PC傳到單晶片的命令, 如
open,led,1
open,motor,1
open,led,2
close,motor,1
close,led,2
close,led,1 (<=下這種好白癡的命令)
其實...我想做的跟command一樣, 但是做不出來XD
想請問各位, 空白鍵該怎麼在sscanf的%[]下實作呢?
2. 另一個問題是程式運作的邏輯問題
就是通電之後單晶片就開始動作,
用RS232跟一個sensor要資料,
sensor會在幾秒後回傳資料
所以我在main()裡面用無窮迴圈讓程式一直運作, 類似
/* 程式是虛構的 */
void main()
{
...... // 系統的初始化
while(1)
{
Send_Sensor_Request_Command(); // 傳送命令給sensor
while ( Wait_Sensor_Response() ) // 等待sensor回傳資料
{ // 回傳1表示收到sensor資料
Do_Something(); // 執行一些動作
}
Other_Operation(); // 其他與sensor無關的動作
}
}
因為sensor會隔幾秒後才傳, 所以程式會卡在等待sensor資料的地方
然後後面一些該做的都沒做....
我有想過用個變數來表示已經收到sensor的資料,
不要讓while ( Wait_Sensor_Response() ) 卡住整個程式, 如
if( Sensor_Data_Ready ) // 1表示收到sensor資料
{
Do_Something();
}
但是感覺這不是很好的做法,
sensor一多, 就會多出一狗票的變數 >_<
想問問各位有怎樣的作法或是程式運作的邏輯可以改善?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.254.139.100
※ 編輯: killop 來自: 111.254.139.100 (02/14 22:26)
※ 編輯: killop 來自: 111.254.139.100 (02/14 22:27)
※ 編輯: killop 來自: 111.254.139.100 (02/14 22:29)
→
02/15 07:55, , 1F
02/15 07:55, 1F
→
02/15 07:56, , 2F
02/15 07:56, 2F
→
02/15 09:59, , 3F
02/15 09:59, 3F
推
02/15 11:10, , 4F
02/15 11:10, 4F
→
02/15 13:23, , 5F
02/15 13:23, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章