2020-7-25 15:30 /
有个终端设备,收发信号是通过(HEX)十六进制的方式进行传输(下文均为bot)
已经实现通过plc获取信号(绑定寄存器地址与预置位),Modbus poll读取(寄存器地址,这里是test),再通过java平台代码读取Modbus的寄存器地址后,来进行16进制的信号发送到bot 做出相应动作。
现在bot CV处理通过Python实现,需要通过Python读取到bot的预置位信息(非寄存器地址)所以通过Python的modbus包是不行的。
通过Netassist连接到bot发现bot在动作过程中实时有反馈信号,通过java平台发送的16进制的信号bot的动作信息能打印在console
我的python能力比较差,写了一个socket tcp cliet连上Netassist 不敢直接连bot(害怕暴走XD)能通数据也是正常,我修改IP和端口连上bot后,没有反馈信号。
我写了一个java socket tcp cliet连接Netassist 能通数据交互,连上bot后有反馈信号。
String res = CommonTools.serverResponse(socket);
这里就是String类型
    data = tcpCliSock.recv(BUFSIZ)
    if not data:
        break
    print(data.hex())
这里的data是字节类型,直接就可以点出hex函数,如果是str类型的话需要进行编码转换成unicode,这点不如java的string方便,已解决
Tags: 工作