英格索兰扳手网口通信协议EOR原理
前言
前几天遇到这个需求,需要记录扳手每一次的周期数据,但是我不知道通信协议是什么,只知道是一个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原理的更多相关文章
- [中英对照]How PCI Works | PCI工作原理
How PCI Works | PCI工作原理 Your computer's components work together through a bus. Learn about the PCI ...
- Base64编码原理分析
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...
- Intel 英特尔
英特尔 英特尔 基本资料 公司名称:英特尔(集成电路公司) 外文名称:Intel Corporation(Integrated Electronics Corporation) 总部地 ...
- UVA 10620 - A Flea on a Chessboard(鸽笼原理)
UVA 10620 - A Flea on a Chessboard 题目链接 题意:给定一个跳蚤位置和移动方向.如今在一个国际象棋棋盘上,左下角为黑格,一个格子为s*s,推断是否能移动到白格子.问要 ...
- [网络编程之客户端/服务器架构,互联网通信协议,TCP协议]
[网络编程之客户端/服务器架构,互联网通信协议,TCP协议] 引子 网络编程 客户端/服务器架构 互联网通信协议 互联网的本质就是一系列的网络协议 OSI七层协议 tcp/ip五层模型 客户端/服务器 ...
- 杂项:WWW
ylbtech-杂项:WWW WWW是环球信息网的缩写,(亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wide Web”),中文名字为“万维网”,"环球网"等 ...
- some words that I always make mistake
发音相似容易混淆的词汇 alteration 英 [ɔːltə'reɪʃ(ə)n; 'ɒl-] 美 [,ɔltə'reʃən] n. 修改,改变:变更 alteration /ˌɔːltəˈre ...
- 新手必学的java报表开发工具FineReport实用技巧
1.在制作模板时,如何将报表中的值传递到超链接网页呢? 在项目中以frame方法把F1.CPT放到项目的页面中,对F1.CPT做网络报表超链接F2.CPT,然后在F2.cpt页面中,做个超链接的网页, ...
- nba技能表
球员名 主动技能名 主动技能效果 拆解技能名 拆解技能效果 巅峰-纳什 跑投三分 全队三分出手概率提高X%,但体力消耗增加Y% 稳固进攻 全队进攻增加X%,持续整场比赛 巅峰-科比 肉搏 对方全体行动 ...
- C#初入串口通信(串行通信)总结
使用WinFrom来实现: 首先要知道串口通信协议以及原理 原理大概提一下:要自己翻阅看.(http://book.51cto.com/art/200911/162532.htm或者http://hi ...
随机推荐
- 可靠的自托管「GitHub 热点速览 v.22.37」
自托管(Self-Hosted) 是很多开源项目主打的亮点:数据在手,安全我有.本周 GitHub 热点榜单上有多款自托管的项目,当中自然不能少了之前 HG 小伙伴 @makes world simp ...
- [Python]-字典-实践经验总结
字典是Python中常用的一个数据类型. 与列表有相似的用法,表现在列表的下标和字典的键值可以通过相似的方式读取数据: list_name[0] = value dict_name['key'] = ...
- 如何在JavaScript中使用高阶函数
将另一个函数作为参数的函数,或者定义一个函数作为返回值的函数,被称为高阶函数. JavaScript可以接受高阶函数.这种处理高阶函数的能力以及其他特点,使JavaScript成为非常适合函数式编程的 ...
- Java的线程状态
在我们平时写code的时候,经常会使用到多线程.其中线程所处的状态就是我们需要进程思考的问题. 线程有哪些状态 NEW: 一个线程刚被创建,但是没有被使用就是处于这个状态 RUNNABLE: 一个线程 ...
- Django 聚合分组F与Q查询及choices
一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...
- Kibana:运用索引模式的 formatter 来探索 IP 信息
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/107484674
- TTD 专题 (第一篇):C# 那些短命线程都在干什么?
一:背景 1.讲故事 在分析的众多dump中,经常会遇到各种奇葩的问题,仅通过dump这种快照形式还是有很多问题搞不定,而通过 perfview 这种粒度又太粗,很难找到问题之所在,真的很头疼,比如本 ...
- 洛谷P3810 陌上花开 (cdq)
最近才学了cdq,所以用cdq写的代码(这道题也是cdq的模板题) 这道题是个三维偏序问题,先对第一维排序,然后去掉重复的,然后cdq分治即可. 为什么要去掉重复的呢?因为相同的元素互相之间都能贡献, ...
- C#中Math.Round()实现中国式四舍五入问题
C#中的Math.Round()并不是使用的"四舍五入"法.实际上是四舍六入五取偶. 对于这个问题我们常见的解决方式是使用MidpointRounding.AwayFromZero ...
- 创建SpringMVC工程
引入依赖 <dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframe ...