我有问题让我的ruby代码运行

时间:2015-08-11 13:32:29

标签: ruby

我正试图通过tcpip从Impinj Speedway阅读器中提取RFID标签信息。要从阅读器访问信息,我必须通过HTTPS和特定端口。我的代码:

require 'socket'

# The IP address or hostname of your reader 
READER_HOSTNAME = 'https://10.57.237.50'
# The TCP port specified in Speedway Connect
READER_PORT = 14150

# Create a TCP socket connection to the reader 
s = TCPSocket.open('https://10.57.237.50', 14150)
# Receive data in an infinite loop
while true
  # Read one line at a time
  line = s.gets 
  # Print it to the screen
  print line      
end

这似乎在运行,但永远不会完成。 Ruby挂在一个闪烁的光标上。我认为它与端口有关,甚至可能与安全的HTTP有关。

2 个答案:

答案 0 :(得分:2)

你的问题是你有一个无限循环。

while true # This runs FOREVER (or at least until ctrl-c)
  # Read one line at a time
  line = s.gets 
  # Print it to the screen
  print line      
end

你真的应该改为:

while line = s.gets # Read one line at a time
  # Print it to the screen
  print line      
end

这将读取打印到套接字的每一行,然后在用完行时结束。最后,您需要记住最后关闭套接字。

s.close

如果你想做更多的阅读,请查看Ruby documentation on sockets这有一些像你这样的简单例子。

答案 1 :(得分:0)

在Impinj支持的帮助下,我们发现Speedway Connect中存在一个错误,如果选择的天线端口多于可用的天线端口(默认选择All),程序将挂起。在我的配置中(Reader +(2)天线集线器上的4个端口)端口:1-8 + 9-16 + 17 + 25。感谢所有想要帮助的人。