Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ACSingleStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 265d3dda
由
刘韬
编写于
2024-05-21 16:05:57 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
优化声波传感器 检测间隔
1 个父辈
ab493891
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
37 行增加
和
23 行删除
source/DeviceLibrary/DauxiKS107Controller.cs
source/DeviceLibrary/DauxiKS107Controller.cs
查看文件 @
265d3dd
...
...
@@ -20,21 +20,20 @@ public class DauxiKS107Controller
System
.
Timers
.
Timer
timer
;
public
volatile
int
Distance
;
public
bool
IsRunning
{
get
=>
timer
.
Enabled
;
}
public
DauxiKS107Controller
(
int
Elapsms
=
5000
)
public
DauxiKS107Controller
(
int
Elapsms
=
5000
)
{
timer
=
new
System
.
Timers
.
Timer
(
Elapsms
);
timer
.
Elapsed
+=
Timer_Elapsed
;
timer
.
AutoReset
=
true
;
timer
.
Enabled
=
false
;
}
~
DauxiKS107Controller
()
{
LogUtil
.
info
(
$
"{comPortName}液位传感器退出"
);
~
DauxiKS107Controller
()
{
LogUtil
.
info
(
$
"{comPortName}声波传感器退出"
);
timer
.
Enabled
=
false
;
if
(
_serialPort
!=
null
)
{
_serialPort
.
Close
();
}
_serialPort
?.
Close
();
}
List
<
int
>
distantlist
=
new
List
<
int
>()
{
1000
,
100
,
100
,
100
,
10
};
List
<
int
>
distantlist
=
new
List
<
int
>()
{
1000
,
100
,
100
,
100
,
10
};
private
void
Timer_Elapsed
(
object
sender
,
System
.
Timers
.
ElapsedEventArgs
e
)
{
bool
readok
=
true
;
...
...
@@ -42,7 +41,7 @@ public class DauxiKS107Controller
{
if
(
Quary
(
out
int
value
,
out
string
errmsg
))
{
Debug
.
WriteLine
(
$
"{comPortName}读取到
液位
:{value}mm,err:{errmsg}"
);
Debug
.
WriteLine
(
$
"{comPortName}读取到
声波距离
:{value}mm,err:{errmsg}"
);
readok
=
true
;
if
(
value
>
0
&&
value
<
500
)
{
...
...
@@ -54,20 +53,24 @@ public class DauxiKS107Controller
{
distantlist
.
RemoveAt
(
0
);
}
Distance
=
TrimMean
(
distantlist
,
0.8
);
Distance
=
TrimMean
(
distantlist
,
0.8
);
}
return
;
}
else
readok
=
false
;
}
else
{
else
{
readok
=
false
;
}
}
if
(!
readok
)
{
LogUtil
.
info
(
$
"{comPortName}液位传感器读取失败,重新打开"
);
if
(!
OpenPort
(
comPortName
,
out
string
errmsg
))
{
LogUtil
.
info
(
$
"{comPortName}液位传感器打开失败:"
+
errmsg
);
LogUtil
.
info
(
$
"{comPortName}声波传感器读取失败,重新打开"
);
if
(!
OpenPort
(
comPortName
,
out
string
errmsg
))
{
LogUtil
.
info
(
$
"{comPortName}声波传感器打开失败:"
+
errmsg
);
}
}
}
...
...
@@ -76,7 +79,7 @@ public class DauxiKS107Controller
/// 打开串口资源
/// <returns>返回bool类型</returns>
/// </summary>
public
bool
OpenPort
(
string
_comport
,
out
string
errmsg
)
public
bool
OpenPort
(
string
_comport
,
out
string
errmsg
)
{
comPortName
=
_comport
;
...
...
@@ -84,10 +87,18 @@ public class DauxiKS107Controller
errmsg
=
""
;
if
(
_serialPort
==
null
)
{
try
{
_serialPort
=
new
SerialPort
(
comPortName
,
baudRate
,
parity
,
dataBits
,
stopBits
);
_serialPort
.
RtsEnable
=
true
;
//自动请求
_serialPort
.
ReadTimeout
=
100
;
//超时
}
catch
(
Exception
e
)
{
errmsg
=
"串口打开失败:"
+
e
;
return
false
;
}
}
errmsg
+=
"初始化."
;
if
(
_serialPort
.
IsOpen
)
_serialPort
.
Close
();
...
...
@@ -97,10 +108,11 @@ public class DauxiKS107Controller
try
{
//打开串口
errmsg
+=
"打开串口
."
;
errmsg
+=
$
"打开串口:{comPortName}
."
;
_serialPort
.
Open
();
for
(
int
i
=
1
;
i
<
10
;
i
++)
{
for
(
int
i
=
1
;
i
<
10
;
i
++)
{
Thread
.
Sleep
(
100
);
errmsg
+=
"检测数据."
;
Quary
(
out
int
value
,
out
string
err
);
...
...
@@ -115,22 +127,23 @@ public class DauxiKS107Controller
}
catch
(
Exception
Ex
)
{
errmsg
=
Ex
.
ToString
();
errmsg
+
=
Ex
.
ToString
();
//throw Ex;
}
return
ok
;
}
static
byte
[]
quarycommand
=
new
byte
[]
{
0xe8
,
0x02
,
0xb0
};
public
bool
Quary
(
out
int
value
,
out
string
errmsg
)
{
public
bool
Quary
(
out
int
value
,
out
string
errmsg
)
{
errmsg
=
""
;
byte
[]
buf
=
new
byte
[
8
];
value
=
0
;
try
{
_serialPort
.
Write
(
quarycommand
,
0
,
quarycommand
.
Length
);
Thread
.
Sleep
(
1
0
);
Thread
.
Sleep
(
8
0
);
var
readlen
=
_serialPort
.
Read
(
buf
,
0
,
buf
.
Length
);
if
(
readlen
>
=
2
)
if
(
readlen
=
=
2
)
{
var
c
=
new
byte
[]
{
buf
[
1
],
buf
[
0
]
};
value
=
(
int
)
BitConverter
.
ToUInt16
(
c
,
0
);
...
...
@@ -141,7 +154,8 @@ public class DauxiKS107Controller
return
false
;
}
}
catch
(
Exception
ex
){
catch
(
Exception
ex
)
{
errmsg
=
ex
.
ToString
();
return
false
;
}
...
...
@@ -161,11 +175,11 @@ public class DauxiKS107Controller
templist
.
RemoveAt
(
0
);
templist
.
RemoveAt
(
templist
.
Count
-
1
);
return
(
int
)
templist
.
Average
();
}
catch
(
Exception
ex
)
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
ex
.
ToString
());
return
0
;
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论