首先建立一个简单的主界面,这里以报警灯为例
传输过程为:报警灯-继电器-4150-串口服务器
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="报警灯"
android:textSize="50sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.31" />
<Button
android:id="@+id/up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打开"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.247"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.499" />
<Button
android:id="@+id/down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.758"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.499" />
之后开始在java文件中定义刚才设置的按钮
private Button up, down;
引用
up = findViewById(R.id.up);
down = findViewById(R.id.down);
由于连接的是4150,不是安卓自带的,所以要加入jar包
jar包路径为
然后就可以引用4150了
如下
private Modbus4150 modbus4150;
将4150引用(括号内表示的是串口的ip地址和端口号,这里连接的是com2)
modbus4150 = new Modbus4150(DataBusFactory.newSocketDataBus("172.18.12.15", 6002));
连接ip地址需要一个获取权限的语句
位置和代码如下:
<uses-permission android:name="android.permission.INTERNET"/>
在主界面设置的是用up来打开继电器
代码如下
up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
modbus4150.openRelay(0, new MdBus4150RelayListener() {
@Override
public void onCtrl(boolean isSuccess) {
if (isSuccess) {
Log.d(TAG,"控制成功!打开");
}else {
Log.d(TAG,"控制失败!关闭");
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
});
第一行为指针,表示当输入up时执行下面的语句
openRelay表示的是打开继电器
第五行的0表示为继电器连接4150的端口,我这里连接的是DO0,所以写0
if语句的作用是方便查看命令是否传输到为,省略也可
关闭继电器指令则是换一个指针(我在这里设置的是down)
再把openRelay换成closeRelay即可
将手机连接至串口连接的wifi,将程序导入至手机,即可实现区域内控制
这是一个初学者的笔记,目的是为了便于复习和给跟我一样的初学者一些小小的帮助
如有错误的地方,欢迎大佬们提出问题,我会一一改正!