扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
由于公司是做自动售卖机系统的,所以最近在做Java的过程中接触到了后台与机台端的一系列的通讯,想记录下自己的一点心得和想法,抛砖引玉,有相关技术的牛人还请多多指教。
10年积累的网站设计制作、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有德惠免费网站建设让你可以放心的选择与我们合作。
首先我先介绍一下DTU这个概念,DTU是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备,可能这个概念有点笼统,我理解的是将机器端的指令通过DTU转化为相应的数据发送给服务器端,相应的后台发送相应信息,DTU负责接收转化并传输到机台端进行处理。
介绍了DTU的概念之后,接下来来说一下我们后台与机器端的通讯的相关流程。
举个例子来说,后台想要发送一个指令给机台端让机台端出货。
1.首先,后台与机台端开发人员商定好一个通讯规则并且按照DTU协议封装,然后后台发送消息将其递交给TCP服务。
2.将消息发送到TCP服务后,TCP封装数据。
3.TCP服务将封装好的数据推送给DTU。
4.DTU再根据DTU协议来解析数据。
5.设备接收到指令,找到相对应的指令,然后执行相应的操作。
在设备收到相应消息之后这整个流程并没有结束,机台端还要向后台发送一个反馈,反馈是否出货成功的指令。具体流程如下:
1.设备返回响应结果给DTU。
2.DTU根据相应协议封装数据信息。
3.DTU将封装好的数据信息发送到TCP服务。
4.TCP服务收到反馈信息后,然后根据协议解析相应数据。
5.最后将解析后的数据发送给后台。
可以参照下图进行理解。
后台与机台端的通讯流程大致就是这样,毕竟初学者,可能有一些地方理解的不到位,望大家海涵。
一切安好,便是晴天。
Tank
楼主说的意思是不是要用JAVA实现一个开关门的硬件操作,如果是这样你应该知道java虽然是一门高级语言,但是他是基于虚拟机运行 是不能直接操作硬件的,对于操作底层的硬件一般都是通过C/C++实现。但是java可以通过 java native interface---JNI来实现,用java通过接口调用C/C++完成。前提是你要会C/C++
先不说公司的保密协议
一个项目的代码能在这里全贴出来,还给你讲解的清楚?
、不过整个取款机流程是很简单的,就是用户进行不同的操作,
java 调用 JNI驱动硬件执行相应的操作,关键就是组织各种类型的报文,
通过DTU发送到银联那边,比如说支付报文,冲正报文,日结报文……
这些报文的组织一般java 也只管传入JNI 中C++组装好以后再调用 DTU驱动发送
java 这一块就是处理一些逻辑或者页面流转之类的、
代码是不可能贴的,保密协议还是有一定的约束力的
MyView myView = new MyView();
myView.anyView = this;
this.remove(this.xxPanel);
this.add(myView.getPanel());
this.repaint();
串口是数据透传接口,一般使用串口调试软件的默认 8n11模式就可以,高能的来了:第一点:modbus就是一次用串口连续发多个字节!!!!!就这么简单!!!!
如果想在深入一些,那我再告诉你,第二点:连续发出的多个字节是按顺序排好的就可以了
如果想要完成一个双向通信,那你还要再了解一点就是第三点:发多少个字节?字节顺序如何排列?
本篇只讲主站读,子站发,看明白之后,再点击我的用户名,查看主站写,子站接的经验
先说一下DTU RTU区别:modbus dtu是数字数据传输协议,gsm ,gps可以用,但是如果需要采集模拟量,比如我要询问gsm设备的电池电压,那就要用rtu,,他可以采集模拟量信息,其实对于自己做产品,你都用rtu也可以。也就是说就这点儿区别
知道了dtu rtu的区别,可以尝试分析和编写通信协议了,不需要了解太多,你只需要知道上面提到的第三点就可以了!
先说第三点,从机应该发多少数据给主机?答案是:主机请求N个寄存器,从站就发2N个字节(特别注意,一个寄存器是16位的,而且这个数据长度是不算报文头,不算crc,不算功能码的,下面有图说明)下面看一下真实的通信情况此处主机请求一个寄存器,主机发出10 03 00 00 00 02 c7 4a 注意数据高位在前,crc是低位在前
这是一条完整的从机正常相应命令
返回一个寄存器的数据
好了,通信协议,就这样的,你可以使用modscan和usb转串口设备测试一下
modscan设置如下
现在开始实测一下,先确定电脑至少有两个串口,一个串口作为modscan的发送,一个串口用串口调试助手发数据
波特率都一样就可以,其他默认
然后modscan 点击连接后,自动下发数据
串口调试软件,收到数据后,点一下发送就可以了,可以观看到modscan已经成功收到并显示数据了
END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流