前言

前几天遇到这个需求,需要记录扳手每一次的周期数据,但是我不知道通信协议是什么,只知道是一个tcp的连接,问售后,也不给我网口调试软件(英格索兰自己家的软件)。经过我俩天的谷歌,终于找到了他们公司软件,在一个开放的ftp服务器上。

服务器地址:ftp://ftp.irco.com
用户:asSoftwareRead
密码:4&4erum6?a

其中包含我需要的 EOR网口测试工具 (Ethernet EOR Test Tool)

调试方法

找到这个工具后,一切都变得容易了:

这个是官方的用户手册的内容,其实流程就是,设置好ip地址,端口不用设置(也没法设置,默认为1069),然后点击connect,然后点击一个login(俩种类型login我不知道有啥区别,都可以使用), 看到,sent messages文本框中有一些数据,这个就是建立tcp 连接后发送的数据了。
类似这样:

然后,也是最后一步,需要点击 custom EOR act这个按钮,之后扳手运行才会正常记录数据(你在ics软件中自定义的数据格式)

就是这个界面定义的数据字段及格式,我第一次用standard那个按钮发现输出的数据和自己定义的不一致(想想名字也知道了,一个是标准,一个是自定义)

那么,知道这个流程后,来使用代码进行记录这些数据就简单了,这个是tcp连接,所以我用socket简单的实现了这个过程

代码实现

import socket
import logging
obj=socket.socket()
obj.connect(("192.168.4.4",1069))
obj.send("SES01Q0200000028ICS,ICS USER,INSIGHTWRITE,10".encode())
ret=obj.recv(1024)
obj.send("SES01A0200000000".encode())
logging.info(ret.decode())
time.sleep(0.1)
# 标准EOR
# obj.send("EOR01Q03000000011".encode())
#自定义EOR
obj.send("EOR02Q01000000011".encode())
ret=obj.recv(1024)
# obj.send("SES01A0300000000".encode())
obj.send("SES01A0100000000".encode())
logging.info("连接成功!")
while True:
ret=obj.recv(1024).decode().split(",")
if len(ret) == 1: #防止断开连接
logging.info(ret[0].replace("U","A"))
obj.send(ret[0].replace("U","A").encode())
else:
obj.send((ret[0][:-6][:-3].replace("U","A")+"000").encode())

这里我定义的EOR数据分割符是 如果你在ics软件中定义的是空格或者其他的请自行修改。

英格索兰扳手网口通信协议EOR原理的更多相关文章

  1. [中英对照]How PCI Works | PCI工作原理

    How PCI Works | PCI工作原理 Your computer's components work together through a bus. Learn about the PCI ...

  2. Base64编码原理分析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...

  3. Intel 英特尔

    英特尔 英特尔 基本资料   公司名称:英特尔(集成电路公司)    外文名称:Intel Corporation(Integrated Electronics Corporation)    总部地 ...

  4. UVA 10620 - A Flea on a Chessboard(鸽笼原理)

    UVA 10620 - A Flea on a Chessboard 题目链接 题意:给定一个跳蚤位置和移动方向.如今在一个国际象棋棋盘上,左下角为黑格,一个格子为s*s,推断是否能移动到白格子.问要 ...

  5. [网络编程之客户端/服务器架构,互联网通信协议,TCP协议]

    [网络编程之客户端/服务器架构,互联网通信协议,TCP协议] 引子 网络编程 客户端/服务器架构 互联网通信协议 互联网的本质就是一系列的网络协议 OSI七层协议 tcp/ip五层模型 客户端/服务器 ...

  6. 杂项:WWW

    ylbtech-杂项:WWW WWW是环球信息网的缩写,(亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wide Web”),中文名字为“万维网”,"环球网"等 ...

  7. some words that I always make mistake

    发音相似容易混淆的词汇 alteration  英 [ɔːltə'reɪʃ(ə)n; 'ɒl-]  美 [,ɔltə'reʃən]  n. 修改,改变:变更 alteration /ˌɔːltəˈre ...

  8. 新手必学的java报表开发工具FineReport实用技巧

    1.在制作模板时,如何将报表中的值传递到超链接网页呢? 在项目中以frame方法把F1.CPT放到项目的页面中,对F1.CPT做网络报表超链接F2.CPT,然后在F2.cpt页面中,做个超链接的网页, ...

  9. nba技能表

    球员名 主动技能名 主动技能效果 拆解技能名 拆解技能效果 巅峰-纳什 跑投三分 全队三分出手概率提高X%,但体力消耗增加Y% 稳固进攻 全队进攻增加X%,持续整场比赛 巅峰-科比 肉搏 对方全体行动 ...

  10. C#初入串口通信(串行通信)总结

    使用WinFrom来实现: 首先要知道串口通信协议以及原理 原理大概提一下:要自己翻阅看.(http://book.51cto.com/art/200911/162532.htm或者http://hi ...

随机推荐

  1. linux下安装Elasticsearch(单机版和集群版)

    一.linux下安装Elasticsearch(单机) 1.软件下载 下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsea ...

  2. Kubernetes 多租户:多租户介绍

    多租户集群由多个用户和/或工作负载共享,这些用户和/或工作负载被称为"租户".多租户集群的运营方必须将租户彼此隔离,以最大限度地减少被盗用的租户或恶意租户可能对集群和其他租户造成的 ...

  3. Elasticsearch 8.X 节点角色划分深入详解

    文章转载自: https://mp.weixin.qq.com/s/3486iH3VH7TV6lza-a7adQ 0.问题引出 如果你的 Elasticsearch 集群是 7.9 之前的版本,在配置 ...

  4. k8s中的ingress使用上层负载均衡进行设置访问

    注意:这种情况下需要有个前提条件,也就是ingress-nginx-controller安装后的service是NodePort或者hostNetwork模式,而不能是ClusterIP,因为负载均衡 ...

  5. vue 自定义千位符过滤器

    在main.js页面全局引入 Vue.filter('formatNum', function(value) { if(!value) return '' let num = value.toStri ...

  6. Wine 安装迅雷5.8.14.176

    测试过的系统版本:Kubuntu 22.04 测试过的Wine版本 Wine7.8 程序下载地址: https://pan.baidu.com/s/1pSgunVH3WtACssX5we3DdQ 提取 ...

  7. python的注释、变量

    注释 注释是代码的解释型语言,不会影响代码执行,就是专门给程序员看的. 注释是很重要的代码组成部分! # 单行注释 ''' 多行注释 连续输入三个单引号 ''' """ ...

  8. 二手商城集成jwt认证授权

    ------------恢复内容开始------------ 使用jwt进行认证授权的主要流程 参考博客(https://www.cnblogs.com/RayWang/p/9536524.html) ...

  9. ExcelHelper ->NPOI插件

    调用: var ms = ExcelHelper.PrintInvoiceToExcel("观看时长", headline, items, (row, item) => { ...

  10. 【C++】GoogleTest进阶之gMock

    gMock是什么 当我们去写测试时,有些测试对象很单纯简单,例如一个函数完全不依赖于其他的对象,那么就只需要验证其输入输出是否符合预期即可. 但是如果测试对象很复杂或者依赖于其他的对象呢?例如一个函数 ...