我正试图通过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有关。
答案 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。感谢所有想要帮助的人。