none
用RS-232接收資料出現問題 RRS feed

  • 問題

  • 嗨~~~大家好

    小弟在跟硬體資料傳輸出點問題,不知道是哪裡錯了~~以下是我的說明

    首先給他一個命令,他會直接傳給我一個回應
    EX: serialPort1->Write(qq,0,20)
          serialPort1->Read(qq1,0,20)

    到這邊都很正常.

    但是我再傳輸一個命令給他之後,他所給的回應卻少了一堆,只有 qq1[0] 有訊息 其餘皆為空白
    EX: serialPort1->Write(qq,0,20);
          serialPort1->Read(qq1,0,20);

    但是,當我再多按一至兩次,qq1又能接收到我要的回應...

    請問:我少了什麼步驟嗎?? 還是我擷取資訊方式不對??

    在資料傳送跟接收之後,我都會多加這一步qq->Clear(qq,0,20);  qq1->Clear(qq1,0,20);

     

    謝謝指教~~~

     

    2006年8月11日 上午 09:17

解答

  • 我之前也有遇過這樣的問題

    在Write後馬上執行Read的動作

    結果造成所讀到的資料均不是預期的結果

    所以一樣使用了Sleep來延遲一段時間 (視機器處理時間長短不一)

    可能稍微要注意的是TimeOut時間, 必須把Sleep時間調整在TimeOut時間之內

    而優缺點可能是每次下Command就必須延遲這個時間 (機器對於每個Command處理的時間不一致)

    但延遲這個時間才能準確地抓取到回傳資料

    2006年8月15日 上午 03:37

所有回覆

  • 你好,可能是由於你傳送給SerialPort所連接的裝置(應該是讀卡機吧)來不及回應你送出去的資訊,所以可能在你的write和read之間做sleep的動作,可能會抓的到資料。但是這種作法並不是很好, 我的建議是最好去瞭解一下,有關SerialPort的程式設計書籍,比較能夠瞭解完整的程式架構。
    2006年8月11日 下午 05:47
  • 恩~~~謝謝你的建議

    我會再去了解的~~~

    但是~~為什麼在write & read 之間做sleep動作會不好????

    我在一本C#的書上,看到敎讀者如何使用sleep~~~但是書上並沒有明說優缺點!只有敎使用方法~~

     

     

    謝謝指教

     

    2006年8月12日 上午 04:01
  • 我之前也有遇過這樣的問題

    在Write後馬上執行Read的動作

    結果造成所讀到的資料均不是預期的結果

    所以一樣使用了Sleep來延遲一段時間 (視機器處理時間長短不一)

    可能稍微要注意的是TimeOut時間, 必須把Sleep時間調整在TimeOut時間之內

    而優缺點可能是每次下Command就必須延遲這個時間 (機器對於每個Command處理的時間不一致)

    但延遲這個時間才能準確地抓取到回傳資料

    2006年8月15日 上午 03:37
  • 恩~~謝謝你的說明~~

     

    2006年8月16日 上午 02:43