Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-WIC-Opencpc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-WIC-Opencpc
Commits
d11e5a0c
Commit
d11e5a0c
authored
Mar 25, 2018
by
joliu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
变更为同时处理多任务
parent
454598de
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
88 additions
and
78 deletions
+88
-78
hfv/workProcess.py
hfv/workProcess.py
+43
-37
tests/hfv2/workProcess.py
tests/hfv2/workProcess.py
+45
-41
No files found.
hfv/workProcess.py
View file @
d11e5a0c
...
@@ -4,7 +4,8 @@
...
@@ -4,7 +4,8 @@
* 1. 检查任务队列是否存在任务 *
* 1. 检查任务队列是否存在任务 *
* 2. 从任务队列中取任务并执行 *
* 2. 从任务队列中取任务并执行 *
* 3. 发送控制命令到指定的智能体 *
* 3. 发送控制命令到指定的智能体 *
* 4. 未来或许可以根据配置的智能体参数, *
* 4. 读取全部任务队列中任务,并依次执行 *
* 5. 未来或许可以根据配置的智能体参数, *
* 动态修改智能体的计算资源等 *
* 动态修改智能体的计算资源等 *
* *
* *
* author: joliu<joliu@s-an.org> *
* author: joliu<joliu@s-an.org> *
...
@@ -20,7 +21,7 @@ import time
...
@@ -20,7 +21,7 @@ import time
def
findTask
():
def
findTask
():
try
:
try
:
sql
=
"select * from task
LIMIT 1
"
sql
=
"select * from task"
conn
=
sqlite3
.
connect
(
"task.db"
)
conn
=
sqlite3
.
connect
(
"task.db"
)
cursor
=
conn
.
cursor
()
cursor
=
conn
.
cursor
()
cursor
.
execute
(
sql
)
cursor
.
execute
(
sql
)
...
@@ -37,57 +38,62 @@ def findTask():
...
@@ -37,57 +38,62 @@ def findTask():
return
(
status
,
output
)
return
(
status
,
output
)
# 根据符号来比较两个数值的大小
# 根据任务队列中任务,依次执行
def
compare
(
signal
,
value1
,
value2
):
def
doTask
():
if
signal
==
'>'
:
(
status
,
outputs
)
=
findTask
()
return
value1
>
value2
if
status
!=
1
:
elif
signal
==
'<'
:
return
(
status
,
outputs
)
return
value1
<
value2
for
output
in
outputs
:
elif
signal
==
'='
:
return
value1
==
value2
else
:
return
False
def
mainWhileProcess
(
input_ctime
):
ctime
=
input_ctime
while
True
:
print
(
ctime
)
time
.
sleep
(
ctime
)
(
status
,
output
)
=
findTask
()
if
status
==
-
1
:
print
(
output
)
# 如果数据库为空,或者错误,恢复初始设置
ctime
=
input_ctime
continue
(
task
,
taskid
,
ctime
)
=
output
(
task
,
taskid
,
ctime
)
=
output
if
len
(
task
.
split
(
';'
))
!=
2
or
len
(
task
.
split
(
':'
))
!=
3
:
if
len
(
task
.
split
(
';'
))
!=
2
or
len
(
task
.
split
(
':'
))
!=
3
:
print
(
"Error task: %s"
%
task
)
print
(
"Error task: %s"
%
task
)
continue
continue
# 初步定义task字符串模式 eg: >30;192.168.1.1:3000:off
# 初步定义task字符串模式 eg: >30;192.168.1.1:3000:off
(
condition
,
command
)
=
task
.
split
(
';'
)
(
condition
,
command
)
=
task
.
split
(
';'
)
(
ip
,
port
,
method
)
=
command
.
split
(
':'
)
(
ip
,
port
,
method
)
=
command
.
split
(
':'
)
# 构建控制命令
# 构建控制指令
method
=
'device&'
+
method
method
=
'device&'
+
method
# 读取传感器数值
# 读取传感器数值
(
status
,
output
)
=
sendCommandToDevice
(
method
)
(
status
,
data
)
=
sendCommandToDevice
(
method
)
# 针对dht11的数据格式做一个简单的数据预处理
# 千杀的dht11,需要处理下数据
output
=
output
.
split
(
'&'
)[
0
]
data
=
data
.
split
(
'&'
)[
0
]
print
(
output
)
if
status
==
-
1
:
if
status
==
-
1
:
print
(
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
print
(
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
continue
return
(
status
,
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
if
compare
(
condition
[
0
],
float
(
output
),
float
(
condition
[
1
:])):
if
compare
(
condition
[
0
],
float
(
data
),
float
(
condition
[
1
:])):
# 当结果为真,向目标传感器发出指令
# 当结果为真,向目标传感器发出指令
(
status
,
output
)
=
sendBySocket
(
ip
,
int
(
port
),
method
)
(
status
,
recvdata
)
=
sendBySocket
(
ip
,
int
(
port
),
method
)
print
(
output
)
print
(
recvdata
)
time
.
sleep
(
ctime
)
else
:
else
:
pass
pass
return
(
1
,
'success'
)
# 根据符号来比较两个数值的大小
def
compare
(
signal
,
value1
,
value2
):
if
signal
==
'>'
:
return
value1
>
value2
elif
signal
==
'<'
:
return
value1
<
value2
elif
signal
==
'='
:
return
value1
==
value2
else
:
return
False
def
mainWhileProcess
(
input_ctime
):
while
True
:
print
(
"cycle time :"
+
str
(
input_ctime
))
time
.
sleep
(
input_ctime
)
(
status
,
output
)
=
doTask
()
print
(
output
)
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
mainWhileProcess
(
5
)
mainWhileProcess
(
5
)
tests/hfv2/workProcess.py
View file @
d11e5a0c
...
@@ -4,7 +4,8 @@
...
@@ -4,7 +4,8 @@
* 1. 检查任务队列是否存在任务 *
* 1. 检查任务队列是否存在任务 *
* 2. 从任务队列中取任务并执行 *
* 2. 从任务队列中取任务并执行 *
* 3. 发送控制命令到指定的智能体 *
* 3. 发送控制命令到指定的智能体 *
* 4. 未来或许可以根据配置的智能体参数, *
* 4. 读取全部任务队列中任务,并依次执行 *
* 5. 未来或许可以根据配置的智能体参数, *
* 动态修改智能体的计算资源等 *
* 动态修改智能体的计算资源等 *
* *
* *
* author: joliu<joliu@s-an.org> *
* author: joliu<joliu@s-an.org> *
...
@@ -26,11 +27,11 @@ def sendCommandToDevice(cmd):
...
@@ -26,11 +27,11 @@ def sendCommandToDevice(cmd):
def
findTask
():
def
findTask
():
try
:
try
:
sql
=
"select * from task
LIMIT 1
"
sql
=
"select * from task"
conn
=
sqlite3
.
connect
(
"task.db"
)
conn
=
sqlite3
.
connect
(
"task.db"
)
cursor
=
conn
.
cursor
()
cursor
=
conn
.
cursor
()
cursor
.
execute
(
sql
)
cursor
.
execute
(
sql
)
data
=
cursor
.
fetch
one
()
data
=
cursor
.
fetch
all
()
if
data
is
None
:
if
data
is
None
:
(
status
,
output
)
=
(
-
1
,
'database is empty!'
)
(
status
,
output
)
=
(
-
1
,
'database is empty!'
)
else
:
else
:
...
@@ -43,6 +44,43 @@ def findTask():
...
@@ -43,6 +44,43 @@ def findTask():
return
(
status
,
output
)
return
(
status
,
output
)
# 根据任务队列中任务,依次执行
def
doTask
():
(
status
,
outputs
)
=
findTask
()
if
status
!=
1
:
return
(
status
,
outputs
)
for
output
in
outputs
:
(
task
,
taskid
,
ctime
)
=
output
if
len
(
task
.
split
(
';'
))
!=
2
or
len
(
task
.
split
(
':'
))
!=
3
:
print
(
"Error task: %s"
%
task
)
continue
# 初步定义task字符串模式 eg: >30;192.168.1.1:3000:off
(
condition
,
command
)
=
task
.
split
(
';'
)
(
ip
,
port
,
method
)
=
command
.
split
(
':'
)
# 构建控制命令
method
=
'device&'
+
method
# 读取传感器数值
(
status
,
data
)
=
sendCommandToDevice
(
method
)
# 千杀的dht11,需要处理下数据
data
=
data
.
split
(
'&'
)[
0
]
print
(
output
)
if
status
==
-
1
:
print
(
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
return
(
status
,
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
if
compare
(
condition
[
0
],
float
(
data
),
float
(
condition
[
1
:])):
# 当结果为真,向目标传感器发出指令
(
status
,
recvdata
)
=
sendBySocket
(
ip
,
int
(
port
),
method
)
print
(
recvdata
)
time
.
sleep
(
ctime
)
else
:
pass
return
(
1
,
'success'
)
# 通过socket发送信息
# 通过socket发送信息
def
sendBySocket
(
ip
,
port
,
cmd
):
def
sendBySocket
(
ip
,
port
,
cmd
):
try
:
try
:
...
@@ -92,46 +130,12 @@ def compare(signal, value1, value2):
...
@@ -92,46 +130,12 @@ def compare(signal, value1, value2):
def
mainWhileProcess
(
input_ctime
):
def
mainWhileProcess
(
input_ctime
):
ctime
=
input_ctime
while
True
:
while
True
:
print
(
ctime
)
print
(
"cycle time :"
+
str
(
input_ctime
))
time
.
sleep
(
ctime
)
time
.
sleep
(
input_ctime
)
(
status
,
output
)
=
findTask
()
(
status
,
output
)
=
doTask
()
if
status
==
-
1
:
print
(
output
)
# 如果数据库为空,或者错误,恢复初始设置
ctime
=
input_ctime
continue
(
task
,
taskid
,
ctime
)
=
output
if
len
(
task
.
split
(
';'
))
!=
2
or
len
(
task
.
split
(
':'
))
!=
3
:
print
(
"Error task: %s"
%
task
)
continue
# 初步定义task字符串模式 eg: >30;192.168.1.1:3000:off
(
condition
,
command
)
=
task
.
split
(
';'
)
(
ip
,
port
,
method
)
=
command
.
split
(
':'
)
# 构建控制命令
method
=
'device&'
+
method
# 读取传感器数值
(
status
,
output
)
=
sendCommandToDevice
(
method
)
# 千杀的dht11,需要处理下数据
output
=
output
.
split
(
'&'
)[
0
]
print
(
output
)
print
(
output
)
if
status
==
-
1
:
print
(
"get device data failed! ip: %s, method: %s"
%
(
ip
,
method
))
continue
if
compare
(
condition
[
0
],
float
(
output
),
float
(
condition
[
1
:])):
# 当结果为真,向目标传感器发出指令
(
status
,
output
)
=
sendBySocket
(
ip
,
int
(
port
),
method
)
#print(output)
else
:
pass
print
(
1212
)
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
mainWhileProcess
(
5
)
mainWhileProcess
(
5
)
#print(doTask())
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