Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
PastureGateway
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
steven.sha
PastureGateway
Commits
a510cf6a
Commit
a510cf6a
authored
Jun 20, 2019
by
leon.huang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add nothing
parent
918658a8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
70 additions
and
189 deletions
+70
-189
ModualAlarm.cs
ModbusDemo/Common/ModualAlarm.cs
+10
-7
Form1.cs
ModbusDemo/windows/Form1.cs
+60
-182
No files found.
ModbusDemo/Common/ModualAlarm.cs
View file @
a510cf6a
...
...
@@ -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
)
{
...
...
ModbusDemo/windows/Form1.cs
View file @
a510cf6a
...
...
@@ -114,7 +114,6 @@ namespace ModbusDemo
{
while
(
m_Isbgw0_CanContinueRun
)
{
int
_n
=
2
;
this
.
Invoke
(
new
Action
(()
=>
{
}));
...
...
@@ -144,42 +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
();
<<<<<<<
HEAD
mqttClient
.
PublishAsync
(
message
);
totxt
.
Log
(
"我在247,执行了Back"
);
=======
await
mqttClient
.
PublishAsync
(
message
);
>>>>>>>
refs
/
remotes
/
origin
/
master
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
()
{
...
...
@@ -359,7 +362,6 @@ namespace ModbusDemo
}
})));
}
private
void
vMqtt_Receive_Handle
()
{
while
(
true
)
...
...
@@ -378,127 +380,17 @@ namespace ModbusDemo
#
region
modbus
线程
private
static
bool
bSetDataIsRunning
=
false
;
<<<<<<<
HEAD
private
Thread
ModbusPollThread
;
private
void
T_AutoControl
()
{
AutoControl
.
Control
usEcontrol
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usEcontrolB
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usWcontrol
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usWcontrolB
=
new
AutoControl
.
Control
();
while
(
true
)
{
FileInfo
file
=
new
FileInfo
(
InIHelper
.
FileName
);
if
(
ModualControl
.
cPoolLevelConfig
.
Count
!=
0
)
{
for
(
int
i
=
0
;
i
<
ModualControl
.
cPoolLevelConfig
.
Count
;
i
++)
{
for
(
int
j
=
0
;
j
<
ModualPoll
.
byX18xNumber
;
j
++)
{
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
0
])
{
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usWcontrol
.
modularx
=
j
;
usWcontrol
.
modbusID
=
LevelmodbusID
[
0
];
}
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
1
])
{
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usEcontrol
.
modularx
=
j
;
usEcontrol
.
modbusID
=
LevelmodbusID
[
1
];
}
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
0
])
{
usWcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usWcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usWcontrol
.
Name
=
"西·中转池"
;
usWcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"西液位通道"
,
usWcontrol
.
modularx
.
ToString
());
AutoControl
.
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
1
])
{
usEcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usEcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usEcontrol
.
Name
=
"东·中转池"
;
usEcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"东液位通道"
,
usEcontrol
.
modularx
.
ToString
());
AutoControl
.
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
}
AutoControl
.
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
if
(
file
.
Length
!=
0
)
{
usEcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"东液位通道"
);
usWcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"西液位通道"
);
usWcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"西·中转池"
);
usWcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"西·中转池"
);
usEcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"东·中转池"
);
usEcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"东·中转池"
);
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usEcontrol
.
modularx
].
dNowConvertData
[
0
];
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usWcontrol
.
modularx
].
dNowConvertData
[
0
];
AutoControl
.
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
AutoControl
.
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
AutoControl
.
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
{
usWcontrol
.
status
=
false
;
usEcontrol
.
status
=
false
;
AutoControl
.
Automatic_control
(
usWcontrol
.
status
,
usEcontrol
.
status
);
totxt
.
Log
(
"Self - control has not started"
);
}
}
}
=======
private
Thread
ModbusPollThread
;
>>>>>>>
refs
/
remotes
/
origin
/
master
private
void
vModbusPoll
()
{
while
(
true
)
{
Parallel
.
Invoke
(
()
=>
{
bSetDataIsRunning
=
true
;
ModualPoll
.
vAllNodePoll
();
mqttData
=
ModualPoll
.
stAll_Poll_Package
();
ModualPoll
.
vCheckAlarm_And_Send
(
mqttClient
);
label5
.
Text
=
ModbusComm
.
usCommunFailTimes
.
ToString
();
},
()
=>
{
AutoControl
.
T_AutoControl
();
})
;
bSetDataIsRunning
=
true
;
ModualPoll
.
vAllNodePoll
();
mqttData
=
ModualPoll
.
stAll_Poll_Package
();
ModualPoll
.
vCheckAlarm_And_Send
(
mqttClient
);
label5
.
Text
=
ModbusComm
.
usCommunFailTimes
.
ToString
();
}
}
private
void
Sendout
()
...
...
@@ -1104,12 +996,10 @@ namespace ModbusDemo
{
}
<<<<<<<
HEAD
private
async
void
SubscribeBut_Click
(
object
sender
,
EventArgs
e
)
=======
private
void
SubscribeBut_Click
(
object
sender
,
EventArgs
e
)
>>>>>>>
refs
/
remotes
/
origin
/
master
{
}
...
...
@@ -1163,29 +1053,15 @@ namespace ModbusDemo
SetMqtt
();
MQTT_thread
=
new
MethodInvoker
(
Sendout
);
MQTT_thread
.
BeginInvoke
(
null
,
null
);
<<<<<<<
HEAD
Task
.
Run
(
async
()
=>
{
await
ConnectMqttServerAsync
();
});
=======
await
Task
.
Run
(
async
()
=>
{
await
ConnectMqttServerAsync
();
});
>>>>>>>
refs
/
remotes
/
origin
/
master
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();
>>>>>>>
refs
/
remotes
/
origin
/
master
modbus_Timer
.
Enabled
=
true
;
btOpenCOM
.
Enabled
=
false
;
btCloseCOM
.
Enabled
=
true
;
...
...
@@ -1223,7 +1099,7 @@ namespace ModbusDemo
}
private
async
void
run
()
{
comPort
.
PortName
=
"COM
1
"
;
comPort
.
PortName
=
"COM
6
"
;
comPort
.
BaudRate
=
9600
;
comPort
.
Parity
=
Parity
.
None
;
comPort
.
StopBits
=
StopBits
.
One
;
...
...
@@ -1243,27 +1119,29 @@ namespace ModbusDemo
ModbusComm
.
Modbus
.
Transport
.
WriteTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WaitToRetryMilliseconds
=
0
;
//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
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment