回到使用Python构建您的第一个OPTOMMP数据包

插座用法

确保你导入插座在脚本的顶部包含套接字库,并确定主机(无论是硬编码,本地主机还是作为参数)。然后:

  1. 创建一个插座:

    s = socket.socket(socket.af_inet,socket.sock_stream)

  2. 使用该插座与主机在端口2001上制作的元组连接到控制器:

    s.connect((主机,端口))#ex。主机='127.0.0.1'(字符串),端口= 2001(integer)

  3. 二进制编码数据数组,并通过套接字发送:

    结果= s.send(bytearray(mybytes))#'mybytes'是构建的16个输入阵列。

    笔记:s.send()返回发送和读取块请求的字节数必须为16个字节,因此结果!= 16然后出现问题,在调试时知道这很有帮助。

  4. 保存响应:

    data = s.recv(24)#读取块响应为24个字节长

现在数据持有请求的读取数据(或取决于事务代码,写确认),并采用格式(#,)具有实际值。但是,这是二进制编码和小型字节订购的背后 - 因此,我们必须逆转字节并解码响应以获取该字节。

最佳

解开包装数据

在读取块响应的情况下,数据长度在字节12-15中保存,实际数据块是响应的最后一个四句(四个字节),16-19。自从socket.recv()返回一个字符串,我们可以将此响应软件包视为阵列,并将其切成片段,从16开始,以20结束,以便我们抓住第19个字节。

data_block=数据[[1620这是给予的

现在我们使用内置功能bytearray()要将字符串转换为字节,然后将其交给外部结构图书馆(您必须导入结构)从字节数组中获取整数响应。

笔记: data_block以大型订单保存字节(首先存储了最重要的数字),因此请确保包括标志>对于大型和一世用于整数值。
输出=结构uncack_from(('> i',,,,Bytearray((data_block))

在这个阶段输出持有格式的响应($,)。现在,我们可以切除第一个和最后两个字符,((,将其余的打印到屏幕上,我们都完成了!

打印str((输出)[1-2这是给予的

最佳

代码

查看下面的代码样本,以查看所有这些运动部件,并随时修改它们以供自己使用。

本指南参考了三个示例python脚本的材料:
getuptime.py返回MS中控制器的正常运行时间。IP是一个可选的参数,默认为localhost。
readmodch.py采用两个参数(模块和频道编号),并在该数字点返回值。
writemodchval.py采用三个参数:模块,频道和要编写的值(0或1)。


继续示例Python脚本


或回到使用Python构建您的第一个OPTOMMP数据包


或查看预制的Python软件包为了凹槽史诗。

参考