插座用法
确保你导入插座在脚本的顶部包含套接字库,并确定主机(无论是硬编码,本地主机还是作为参数)。然后:
创建一个插座:
s = socket.socket(socket.af_inet,socket.sock_stream)使用该插座与主机在端口2001上制作的元组连接到控制器:
s.connect((主机,端口))#ex。主机='127.0.0.1'(字符串),端口= 2001(integer)二进制编码数据数组,并通过套接字发送:
结果= s.send(bytearray(mybytes))#'mybytes'是构建的16个输入阵列。
笔记:s.send()返回发送和读取块请求的字节数必须为16个字节,因此结果!= 16然后出现问题,在调试时知道这很有帮助。保存响应:
data = s.recv(24)#读取块响应为24个字节长
现在数据持有请求的读取数据(或取决于事务代码,写确认),并采用格式(#,)具有实际值#。但是,这是二进制编码和小型字节订购的背后 - 因此,我们必须逆转字节并解码响应以获取该字节。
解开包装数据
在读取块响应的情况下,数据长度在字节12-15中保存,实际数据块是响应的最后一个四句(四个字节),16-19。自从socket.recv()返回一个字符串,我们可以将此响应软件包视为阵列,并将其切成片段,从16开始,以20结束,以便我们抓住第19个字节。
data_block=数据[[16:20这是给予的
现在我们使用内置功能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软件包为了凹槽史诗。
参考
OPTOMMP协议手册(表格1465)
Python包为了凹槽史诗