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

2024-05-15 20:57:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python中的pyVisa通过以太网连接到温度室。设备只允许通过端口2049进行连接。我可以通过PuTTYHyperTerminal连接到它,但是当我在Python中尝试这个命令时

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

我得到这个错误:

VI_ERROR_RSRC_NFOUND: Insufficient location information or the requested device or resource is not present in the system

我知道这个设备在那里,因为我可以用PuTTY语言通过它,但是我似乎无法让Python代码工作。有什么线索吗?pyvisa默认使用SSH吗?


Tags: orthe端口import命令错误visa温度
3条回答

试试这个:

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

你确定温度箱支持局域网仪器协议吗?

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

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

(pyvisa默认不使用SSH)

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

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

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

  • 如果您已经安装了NI-MAX(来自National InstrumentsMeasurement&Automation Explorer是一个免费下载),请在“设备和接口”下,右键单击“网络设备”,选择“创建新的VISA TCP/IP资源…”,然后按照说明操作。NI-MAX将自动检测您的仪器并提供其VISA资源名称。注意现在这个资源将同时由list_resources()viFindRsrc()/viFindNext()列出
  • 如果没有,您必须提供VISA右边的资源名。如果您使用VISA passport(例如,对于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: Insufficient location information or the requested device or resource is not present in the system

也可以通过0xBFFF0011或返回值-1073807343来标识。

相关问题 更多 >