Commit 64f6c08d by 周田

init

parents
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.linkor</groupId>
<artifactId>HslDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.github.dathlin</groupId>
<artifactId>HslCommunication</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.linkor;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.linkor.callback.OnMessageCallback;
import org.linkor.setting.Setting;
public class Main {
public static void main(String[] args) {
Setting.init();
try {
// host为主机名,test为 clientId 即连接MQTT的客户端ID,一般以客户端唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
MqttClient client = new MqttClient(Setting.BROKER, Setting.CLIENT_ID, new MemoryPersistence());
// MQTT的连接设置
MqttConnectOptions options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
// 设置连接的用户名
options.setUserName(Setting.USERNAME);
// 设置连接的密码
options.setPassword(Setting.PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
// 设置回调函数
client.setCallback(OnMessageCallback.getInstance());
// 建立连接
System.out.println("连接到 broker: " + Setting.BROKER);
client.connect(options);
System.out.println("连接成功.");
//订阅消息
client.subscribe(Setting.TOPIC, Setting.QOS);
// client.subscribe("ModbusTcp/数据名字", Setting.QOS);
System.out.println("开始监听: " + Setting.TOPIC);
System.out.println("==========================================");
client.publish("ModbusTcp/压力", new MqttMessage("400".getBytes()));
}
catch (Exception e) {
e.printStackTrace();
}
}
}
\ No newline at end of file
package org.linkor.callback;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
/**
* mqtt 回调函数
*/
public class OnMessageCallback implements MqttCallback {
@Override
public void connectionLost(Throwable throwable) {
// 连接丢失后,一般在这里面进行重连
System.out.println("连接断开,可以做重连");
}
@Override
public void messageArrived(String topic, MqttMessage message) {
// subscribe后得到的消息会执行到这里面
System.out.println("topic: " + topic + ", content: " + message.toString());
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
// publish 后会执行到这里
System.out.println("deliveryComplete---------" + token.isComplete());
}
public static OnMessageCallback getInstance() {
return new OnMessageCallback();
}
}
package org.linkor.setting;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Properties;
/**
* 配置信息
*/
public class Setting {
public static int QOS;
// public final static String BROKER = "tcp://127.0.0.1:521";
public static String BROKER;
// public final static String TOPIC = "ModbusTcp/#";
public static String TOPIC;
public static String CLIENT_ID =
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss")) + Math.random();
public static String USERNAME;
public static String PASSWORD;
public static void init() {
// read from setting.properties
try {
Properties properties = new Properties();
properties.load(Setting.class.getClassLoader().getResourceAsStream("setting.properties"));
QOS = Integer.parseInt(properties.getProperty("qos"));
BROKER = properties.getProperty("broker");
TOPIC = properties.getProperty("topic");
USERNAME = properties.getProperty("username");
PASSWORD = properties.getProperty("password");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
qos=1
# broker=tcp://192.168.0.176:1883
broker=tcp://127.0.0.1:521
topic=ModbusTcp/#
username=admin
password=123456
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment