繁体   English   中英

无法使用Python和PyVisa连接到特定的以太网端口

[英]Cannot connect to a specific Ethernet port using Python and PyVisa

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

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

我收到此错误:

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

我知道设备在那里是因为我可以在PuTTY中通过它进行讨论,但我似乎无法使Python代码工作。 任何提示? pyvisa默认使用SSH吗?

访问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标头 (用VICP替换TCPIP )。 然后,语法如下: [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来识别。

你确定临时室支持LAN仪器协议吗?

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

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

(pyvisa默认不使用SSH)

尝试这个:

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM