全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:764
推到 Plurk!
推到 Facebook!

請幫忙想一個關於邏輯的流程

缺席
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-25 01:37:23 IP:211.76.xxx.xxx 未訂閱
狀況: 某種硬體設備,會傳送該硬體的機號及狀態碼,正常狀況下,一次會送出:機號 x3 次、狀態碼 x3 次,如: 1234 1234 1234 0001 0001 0001 【機號 機號 機號 狀態 狀態 狀態】 但是,某【一】種例外情況下,只會送一次機號,且不會送狀態碼,如: 1234 【機號】 現在我想在傳送完畢後,去做某一段程式(記錄機號及狀態),上述之「例外情況」也算是另一種狀態,請問該如何判斷? 註:由於使用TCP/IP傳送,故目前使用元件 ServerSocket 接收,但若是網路封包過大的話,會自動分批傳送,所以不能在 ServerSocket 的 OnClientRead EVENT 中一次處理(若分三次送,該 event 就會做三次)
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-25 01:52:02 IP:203.204.xxx.xxx 未訂閱
MichaelChien 你好
引言: 一次會送出:機號 x3 次、狀態碼 x3 次 1234 1234 1234 0001 0001 0001 【機號 機號 機號 狀態 狀態 狀態】
連續三次機號及三次的狀態碼 是在同一個Data進來時收到的還是陸陸續續收到的中間是否會穿插另一例外狀況?,另外其是使用TCP或UDP呢? 我想該硬體一定有其送出訊息的原則或規則,不妨先作個測試,把收到的訊憩(字串),分次記錄(收到後不予以分析,直接寫成一行)到Memo中應該很容易找到其規則的。 發表人 - chance36 於 2004/04/25 02:41:58
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-25 20:30:21 IP:211.76.xxx.xxx 未訂閱
硬體會一次送,但電腦會分次收到(因為封包過大)。 使用TCP。 現在直接跳過收訊號的問題,換個方式問吧: 狀況:在收到信號時先放在Memo裏,硬體送的只會是4碼 or 24碼, 如果我去判斷Memo裏的字串長度,4碼的做4碼的事、24碼的做24碼的事, 問題如下:如果這次送進來的是24碼,電腦一定會先去做4碼的事(長度一定會大於4),我該如何區分它??
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-25 21:22:01 IP:203.204.xxx.xxx 未訂閱
MichaelChien 你好     判斷字元數多者先處理,就可以避開了呀(使用if 邏輯判斷)或用Case判斷
Len := Length(Str); // 取得字元數
Case Len Of
  1..4:Begin  // 處理1至4字元的字串
    ....
  End;
  24 : Begin  // 只處理24字元的字串
    ....
  End;
  ......
  Else Begin
    .... //額外狀況處理
  End;
End;
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-26 01:24:11 IP:211.76.xxx.xxx 未訂閱
嗯~~~可是......唉,等我想到應該怎麼問比較清楚時再發問好了,感謝您的回答。
系統時間:2024-05-17 19:31:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!