Commit 5c95addb authored by shaxuezheng's avatar shaxuezheng

merge origin

parents 96689972 468680e9
......@@ -49,13 +49,16 @@ namespace ModbusDemo.Common
}
public static async Task vPublishAlarmPackageJson(IMqttClient mqttClient)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(Form1.sAlarmTopic)
.WithPayload(sAlarmJson)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
if (mqttClient.IsConnected == true)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(Form1.sAlarmTopic)
.WithPayload(sAlarmJson)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
}
}
public static void vSet_Modual_Alarm(byte byModbusID,ushort usAlarmCodde,bool bSetAlarm,byte byCommFailTimes,params string[] strChannalList)
{
......
......@@ -114,7 +114,6 @@ namespace ModbusDemo
{
while (m_Isbgw0_CanContinueRun)
{
int _n = 2;
this.Invoke(new Action(() =>
{
}));
......@@ -144,37 +143,46 @@ namespace ModbusDemo
public List<string> ListHandle = new List<string>();
private async Task Publish()
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttTopic)
.WithPayload(mqttData)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
if (mqttData != null)
if (mqttClient.IsConnected == true)
{
await mqttClient.PublishAsync(message);
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttTopic)
.WithPayload(mqttData)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
if (mqttData != null)
{
await mqttClient.PublishAsync(message);
}
}
}
private void vControlResponseBack()
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttBackTopic)
.WithPayload(mqttData_Back)
.WithAtLeastOnceQoS()
.WithRetainFlag(false)
.Build();
mqttClient.PublishAsync(message);
if (mqttClient.IsConnected == true)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttBackTopic)
.WithPayload(mqttData_Back)
.WithAtLeastOnceQoS()
.WithRetainFlag(false)
.Build();
mqttClient.PublishAsync(message);
}
}
private async Task vCfgResponseBack(string data)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttCfgResTopic)
.WithPayload(data)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
if (mqttClient.IsConnected == true)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttCfgResTopic)
.WithPayload(data)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
}
}
private async Task Subscribe()
{
......@@ -354,7 +362,6 @@ namespace ModbusDemo
}
})));
}
private void vMqtt_Receive_Handle()
{
while (true)
......@@ -373,8 +380,8 @@ namespace ModbusDemo
#region modbus线程
private static bool bSetDataIsRunning = false;
private Thread ModbusPollThread;
private void vModbusPoll()
{
while (true)
......@@ -389,7 +396,7 @@ namespace ModbusDemo
private void Sendout()
{
Control.CheckForIllegalCrossThreadCalls = false;
MQTTTimer.Interval = 20000;//120500
MQTTTimer.Interval = 20000l;//120500
MQTTTimer.Enabled = true;
MQTTTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
MQTTTimer.Start();
......@@ -989,6 +996,8 @@ namespace ModbusDemo
{
}
private void SubscribeBut_Click(object sender, EventArgs e)
{
......@@ -1044,12 +1053,25 @@ namespace ModbusDemo
SetMqtt();
MQTT_thread = new MethodInvoker(Sendout);
MQTT_thread.BeginInvoke(null, null);
await Task.Run(async () => { await ConnectMqttServerAsync(); });
ModbusComm.Modbus = ModbusSerialMaster.CreateRtu(comPort);
ModbusComm.Modbus.Transport.Retries = 0;
ModbusComm.Modbus.Transport.ReadTimeout = 1000;
ModbusComm.Modbus.Transport.WriteTimeout = 1000;
ModbusComm.Modbus.Transport.WaitToRetryMilliseconds = 0;
<<<<<<< HEAD
//t_AutoControl = new Thread(T_AutoControl);
//t_AutoControl.IsBackground = true;
//t_AutoControl.Start();
=======
//t_AutoControl = new Thread(T_AutoControl)
//{
// IsBackground = true
//};
//t_AutoControl.Start();
modbus_Timer.Enabled = true;
btOpenCOM.Enabled = false;
......@@ -1108,25 +1130,35 @@ namespace ModbusDemo
ModbusComm.Modbus.Transport.WriteTimeout = 1000;
ModbusComm.Modbus.Transport.WaitToRetryMilliseconds = 0;
t_AutoControl = new Thread(AtuoControl_run);
t_AutoControl.IsBackground = true;
t_AutoControl.Start();
//t_AutoControl = new Thread(T_AutoControl)
//{
// IsBackground = true
//};
//t_AutoControl.Start();
modbus_Timer.Enabled = true;
btOpenCOM.Enabled = false;
btCloseCOM.Enabled = true;
if (bCretaThead == false)
{
bCretaThead = true;
ModbusPollThread = new Thread(vModbusPoll);
ModbusPollThread.Start();
if (bCretaThead == false)
{
bCretaThead = true;
ModbusPollThread = new Thread(vModbusPoll);
ModbusPollThread.Start();
ModbusPollThread.Priority = ThreadPriority.Normal;
ModbusControlThread = new Thread(ModualControl.vControl_Poll);
ModbusControlThread.Start();
}
else
{
ModbusPollThread.Resume();
ModbusControlThread = new Thread(ModualControl.vControl_Poll);
ModbusControlThread.Start();
ModbusControlThread.Priority = ThreadPriority.BelowNormal;
MqttReceiveThread = new Thread(vMqtt_Receive_Handle);
MqttReceiveThread.Start();
MqttReceiveThread.Priority = ThreadPriority.AboveNormal;
Task task1 = Task.Factory.StartNew(async() => {await ModualControl.vControl_Res_Poll();});
}
}
totxt.Log(DateTime.Now.ToString() + " =>Open " + comPort.PortName + " sucessfully!");
await Subscribe();
......
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