6

我正在尝试使用 Python 中的 pyVisa 通过以太网连接连接到温度室。该设备仅允许通过端口 2049 进行连接。我通过PuTTYHyperTerminal连接到它没有问题,但是当我在 Python 中尝试此命令时

import visa
chamber = visa.instrument("TCPIP::10.2.17.130::2049")

我收到此错误:

VI_ERROR_RSRC_NFOUND:位置信息不足或系统中不存在请求的设备或资源

我知道该设备在那里,因为我可以在 PuTTY 中通过它进行交谈,但我似乎无法让 Python 代码工作。有什么提示吗?pyvisa 默认使用SSH吗?

4

3 回答 3

6

访问VISA 资源的最简单方法(恕我直言)仍然是使用VISA 设备检测,该检测将通过:

  • visa.ResourceManager().list_resources(), 如果你正在使用pyVisa
  • 或者viFindRsrc()viFindNext()如果您使用该visa32.dll库。

现在默认情况下,使用任何一种方法都不会检测到LAN连接。这让您有两个选择:

  • 如果您已安装NI-MAXNational InstrumentsMeasurement & Automation Explorer免费下载),请在“设备和接口”下,右键单击“网络设备”,选择“创建新的 VISA TCP/IP 资源”。 .'并按照说明进行操作。NI-MAX将自动检测您的仪器并提供其VISA资源名称。请注意,现在此资源将由和/list_resources()viFindRsrc()viFindNext()
  • 如果没有,您必须向VISA提供正确的资源名称。如果您使用VISA 护照(例如LeCroy 示波器的VICP),那么您应该适当地更改VISA 标头(将TCPIP替换为VICP)。然后,语法如下:[visa-header]::[instrument-ip]::INSTR[visa-header]::[instrument-ip]::[instrument-port]::INSTR

实际上,它并不总是INSTR,具体取决于资源类(请参阅http://zone.ni.com/reference/en-XX/help/371361J-01/lvinstio/visa_resource_name_generic/)。

请务必将字节字符串发送到仪器(尤其是使用Python 3+时),否则您将收到以下错误:

VI_ERROR_RSRC_NFOUND:位置信息不足或系统中不存在请求的设备或资源

也可以通过0xBFFF0011或 的返回值来识别-1073807343

于 2014-03-11T11:52:37.467 回答
4

您确定温度室支持 LAN 仪器协议吗?

如果不确定,请尝试使用原始套接字,即

chamber = visa.instrument("TCPIP::10.2.17.130::2049::SOCKET")

(pyvisa 默认不使用 SSH)

于 2012-07-17T11:39:06.690 回答
1

尝试这个:

import socket
HOST = "10.2.17.130"    # The remote host
PORT = 2049             # The same port as used by the server

    s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
于 2014-07-16T19:39:02.333 回答