Commit 5c95addb authored by shaxuezheng's avatar shaxuezheng

merge origin

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