2010-03-28 101 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