2010-03-28 109 views
0

我使用的是Ruby串行端口gem。打開端口後,我發送我想要的數據。Ruby串行端口

sp.write [200.chr, 30.chr, 7.chr, 5.chr, 1.chr, 2.chr, 0.chr, 245.chr].to_s 

它不工作,但如果我把它放在大約200次的循環:

200.times do 
    sp.write [200.chr, 30.chr, 7.chr, 5.chr, 1.chr, 2.chr, 0.chr, 245.chr].to_s 
end 

它的工作原理。任何想法爲什麼發生這種情況?

回答

1

它可以與某種緩衝區,只有被刷新(即:發送數據)時:

  1. 你明確你的字符串末尾發送CRLF
  2. 它(緩衝區)已滿

僅用於測試,如果您嘗試在字符串末尾添加\ r \ n,是否會出錯?

+0

試圖添加到最後,但它似乎沒有幫助。我正在監視正在發送的數據,它看起來並不像緩衝它,它實際上發送了200次字符串。 – 2010-03-28 16:43:45

+0

進一步研究,似乎硬件正在獲取數據,但它幾次響應錯誤的代碼。然後最終響應正確。所以我不認爲它與循環有什麼關係,謝謝你的幫助。 – 2010-03-28 18:00:33