android udp端口释放,迅速上手android UDP控制网络开关量,以及常见坑

[目标]

透过android设备,实现对某一开关量的控制,达到给电子门锁通电打开的目的。

网络开关量控制器如下:

81b592671038?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

本质上就是一个把以太网协议转换成对输出开关量的动作的硬件模块。

[设备]

NR01 网络开关量控制器。含以太网口一个

普通家用路由器,型号TP- LINK WR541G+(10年前的型号了)

商用android设备一台

[设计思路]

虽然开关量控制器提供ModBus协议,但是给android来控制,有点大材小用了。

直接用它提供的UDP模式,发个包控制继电器输出开一下,给门锁信号就行了。

根据网络开关量控制器报文,android设备发送一个UDP包on1:01 代表1号继电器开发闭合1秒。

如果网络开发控制器收到了,就回应一个UDP包,内容是on1

分为一个UDP发送线程和一个UDP接收线程。 发送一次,就等待接收一会儿。收到on1就不再发送UDP开锁包了。超时收不到就再发送一次。即使UDP经常丢包,在局域网里,试3次到5次也够了。

[实做]

UDP发送很简单,网上文章很多。接收也描述的很多,不过好多是描述对UDP支持多么的不好。

这次用的是Android一个商用设备,对系统篡改少一些。

[踩坑]

最主要的是DatagramSocket对发送和接收来讲一定只用一个实例

否则代码中UDP一个字节都接收不到。

至于发送和接收是1个线程还是2个线程,并不重要。

[代码]

ShopDoor.java

/*******************************************************************************

* Copyright 2018 Stephen Zhu

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值