【问题标题】:Python TCP/IP - sending commandsPython TCP/IP - 发送命令
【发布时间】:2018-10-22 03:56:01
【问题描述】:

我有望远镜,它是用 PLC siemens 管理的。这个望远镜是远程的。我有一组可以通过 TCP/IP 发送来执行的命令。此命令为 ASCII 格式。这是脚本的简单示例:

import socket


TCP_IP = ''
TCP_PORT = 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send('GLLG 0\r\n')
s.send('DOSO 0\r\n')
data = s.recv(1024)
print data
s.close()

我发送了两个命令。第一个用于登录,第二个用于打开圆顶。但我有两个半圆顶。当我发送这个打开穹顶的命令时,它只打开了穹顶的一半。

但是半圆顶打开之前需要一些时间,我必须等待发送下一个命令才能打开整个圆顶。我的问题是?

是否可以按照说明进行操作?

什么时候让一个命令自动发送另一个?

等到执行一个命令,然后再发送下一个命令?

【问题讨论】:

  • 如果在前半部分打开之前发送后半部分的打开请求会怎样?
  • 你发送的命令,完成后有回复吗?如果您可以控制协议,您可能会考虑在缺少协议时添加它。这种请求-响应在许多网络协议中非常很常见。
  • 没什么...当我发送三个命令时 - 登录 - doso - doso 首先执行第二个命令。第三没有。但是当半圆顶打开并再次发送 doso 命令时,第二个半圆顶打开
  • 是的,我得到重播 - 例如逻辑 1 我发送命令 login-doso-doso 并得到 1 1 1...但只执行前两个。
  • 如果每个命令都得到回复,那么您应该等待它再发送下一个命令。

标签: python tcp


【解决方案1】:

如果 PLC 将返回某种确认圆顶打开完成的响应,请阅读该响应,然后发送下一个命令。

除非您的 PLC 可以处理 unicode,否则请确保以二进制形式发送所有字符串。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2014-06-05
    • 2013-06-02
    • 2016-10-16
    • 1970-01-01
    • 2021-09-02
    • 2012-12-17
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多