Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在运行ruby代码时遇到问题_Ruby - Fatal编程技术网

我在运行ruby代码时遇到问题

我在运行ruby代码时遇到问题,ruby,Ruby,我试图通过tcpip从IMPIN高速公路阅读器中提取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 TC

我试图通过tcpip从IMPIN高速公路阅读器中提取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有关。

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

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

如果你想多读一点书,可以看看有一些像你这样的简单例子的

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

你说的永不完成是什么意思?它不打印任何东西吗?你有一个无限的while循环,所以我不希望程序真的终止。
while true
永远不会终止。“我无论如何都不是程序员”-那是废话。您已经编写了代码(或正在尝试编写),因此您是一名程序员。不要因为你是新来的就把自己排除在外。不应该
TCPSocket.open('https://10.57.237.50”,14150)
会失败吗?我非常确定那里的主机名不应该包含协议。我根据jkeuhlen的帖子进行了更改,但它仍然挂在光标上。我正在使用textmate编写代码,14150以红色突出显示,这就是为什么我认为这是一个端口问题。套接字中有任何内容吗?阅读套接字的一般工作原理。如果它现在挂起,那是因为它正在等待一些东西进入套接字(这就是
get
正在做的,等待输入)。一旦你将某个内容输入到该套接字,它就会打印出来,然后程序就会结束。@jkeuhlen你提议的更改不会有任何区别。看来他根本没有得到任何意见,这是他的主要问题。