校门门闸控制系统
前沿:
本次程序是基于新大陆提供的jar包进行开发,如有冒犯。
可联系作者进行删除:oldthank7@gmail.com
任务需求:
1. 按住前进按钮,推杆能够前进,松开即停止
2. 按住后退按钮,推杆能够后退,松开即停止
3. 显示当前状态可以根据推杆的状态实时变化,包括前进、后退、停止。
常见问题:
socket failed: EACCES (Permission denied);
1、网络权限没权限。
2、其他设备正在连接串口服务器。
failed to connect to /172.16.3.15 (port 6001): connect failed: EHOSTUNREACH (No route to host);
移动终端-串口服务器是否在同一个局域网
可以尝试ping 查看网络是否通畅
程序已开源到GitHub
链接: 直达GitHub.
主要实现
- 用户保存连接实例
public static Modbus4150 modbus4150;
private static String IP;
private static Integer Port;
private static Integer PutterOpen;
private static Integer PutterClose;
- 连接方式可根据需求进行切换
public void Conection(View view) {
SettingUtils settingUtils = new SettingUtils();
settingUtils.setIP(editip.getText().toString());
settingUtils.setPort(editToInteger(editport));
settingUtils.setPutterOpen(editToInteger(putteropen));
settingUtils.setPutterClose(editToInteger(putterclose));
if (SettingUtils.getModbus4150() == null) {
String ip = SettingUtils.getIP();
Integer port = SettingUtils.getPort();
//Socket-连接
Modbus4150 modbus4150 = new Modbus4150(DataBusFactory.newSocketDataBus(ip,port));
//串口服务器-连接
// Modbus4150 modbus4150 = new Modbus4150(DataBusFactory.newSerialDataBus(0,9600));
SettingUtils.setModbus4150(modbus4150);
}else{
Toast.makeText(this, "TCP已连接...", Toast.LENGTH_SHORT).show();
}
}
- 重点实现
/**
* 任务需求:可以查询README.md
* @param v
* @param event
* @return
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
//判断按钮状态是不是松开
if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP){
//切换相应的图片进行交互
runOnUiThread(()->imageView.setImageResource(R.drawable.ic_media_play));
try {
//松开我们将进行相应的控制,关闭所设置的继电器
modbus4150.closeRelay(SettingUtils.getPutterOpen(),(i)->{});
modbus4150.closeRelay(SettingUtils.getPutterClose(),(i)->{});
} catch (Exception e) {
e.printStackTrace();
}
}else if(action == MotionEvent.ACTION_DOWN) // 按下状态
{
switch (v.getId()) {
case R.id.imagebtnOpen:
try {
modbus4150.openRelay(SettingUtils.getPutterOpen(),(open)->{
System.out.println("open = " + open);
//ui图片进行切换
runOnUiThread(()->imageView.setImageResource(R.drawable.ic_media_rew));
});
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.imagebtnClose:
try {
modbus4150.openRelay(SettingUtils.getPutterClose(),(close)->{
System.out.println("close = " + close);
//ui图片进行切换
runOnUiThread(()->imageView.setImageResource(R.drawable.ic_media_ff));
});
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
return true;
}
效果图