Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
signal
traffic-signal-platform
Commits
b2c7f8a8
Commit
b2c7f8a8
authored
Apr 01, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 海信方案环相位解析
parent
d0734422
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
407 additions
and
26 deletions
+407
-26
HisenseTurnEnum.java
...n/java/net/wanji/utc/common/typeenum/HisenseTurnEnum.java
+48
-0
HiseseDirEnum.java
...ain/java/net/wanji/utc/common/typeenum/HiseseDirEnum.java
+65
-0
RingPhaseInfoDTO.java
...rc/main/java/net/wanji/utc/dto/ring/RingPhaseInfoDTO.java
+27
-0
HisenseSchemeRingTask.java
...c/main/java/net/wanji/utc/task/HisenseSchemeRingTask.java
+82
-26
CommonUtils.java
...service/src/main/java/net/wanji/utc/util/CommonUtils.java
+185
-0
No files found.
signal-utc-service/src/main/java/net/wanji/utc/common/typeenum/HisenseTurnEnum.java
0 → 100644
View file @
b2c7f8a8
package
net
.
wanji
.
utc
.
common
.
typeenum
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2024/11/12 15:14
*/
@Getter
@AllArgsConstructor
public
enum
HisenseTurnEnum
{
/**
*
*/
TURN_1
(
1
,
1
,
"左"
),
TURN_2
(
2
,
2
,
"直"
),
TURN_3
(
3
,
3
,
"右"
),
TURN_4
(
4
,
4
,
"调头"
),
TURN_5
(
5
,
1
,
"左调头"
),
TURN_6
(
6
,
2
,
"左直"
),
TURN_7
(
7
,
1
,
"左右"
),
TURN_8
(
8
,
2
,
"直右"
),
TURN_9
(
9
,
2
,
"左直右"
),
TURN_11
(
11
,
21
,
"入口行人"
),
TURN_10
(
10
,
2
,
"直调头"
),
TURN_12
(
12
,
22
,
"出口行人"
),
TURN_13
(
13
,
20
,
"出入口行人"
),
TURN_14
(
14
,
2
,
"左直调头"
),
TURN_15
(
15
,
3
,
"右调头"
),
TURN_16
(
16
,
1
,
"左右调头"
),
TURN_17
(
17
,
2
,
"直右掉头"
),
TURN_18
(
18
,
2
,
"左直右掉头"
);
private
Integer
hisenseTurn
;
private
Integer
wjLightsTurn
;
private
String
desc
;
public
static
Integer
getWjLightsTurn
(
Integer
hisenseTurn
)
{
for
(
HisenseTurnEnum
value
:
HisenseTurnEnum
.
values
())
{
if
(
Objects
.
equals
(
hisenseTurn
,
value
.
getHisenseTurn
()))
{
return
value
.
getWjLightsTurn
();
}
}
return
0
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/common/typeenum/HiseseDirEnum.java
0 → 100644
View file @
b2c7f8a8
package
net
.
wanji
.
utc
.
common
.
typeenum
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2024/11/12 15:04
*/
@Getter
@AllArgsConstructor
public
enum
HiseseDirEnum
{
// '灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北',
ZERO
(
0
,
1
,
"北"
),
ONE
(
1
,
3
,
"东"
),
TWO
(
2
,
5
,
"南"
),
THREE
(
3
,
7
,
"西"
),
FOUR
(
4
,
2
,
"东北"
),
FIVE
(
5
,
4
,
"东南"
),
SIX
(
6
,
6
,
"西南"
),
SEVEN
(
7
,
8
,
"西北"
);
private
Integer
hisenseDir
;
private
Integer
wjLightsDir
;
private
String
desc
;
public
static
Integer
getWjLightsDir
(
Integer
hisenseDir
)
{
for
(
HiseseDirEnum
value
:
HiseseDirEnum
.
values
())
{
if
(
Objects
.
equals
(
hisenseDir
,
value
.
getHisenseDir
()))
{
return
value
.
getWjLightsDir
();
}
}
return
0
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
format
=
String
.
format
(
"%16s"
,
Integer
.
toBinaryString
(
26
)).
replace
(
' '
,
'0'
);
char
[]
chars
=
format
.
toCharArray
();
List
<
Integer
>
result
=
new
ArrayList
<>();
int
length
=
chars
.
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
chars
[
i
]
==
'1'
)
{
result
.
add
(
length
-
i
);
}
}
Collections
.
sort
(
result
);
result
.
forEach
(
i
->
{
System
.
err
.
println
(
i
);
});
}
}
signal-utc-service/src/main/java/net/wanji/utc/dto/ring/RingPhaseInfoDTO.java
View file @
b2c7f8a8
...
...
@@ -2,6 +2,8 @@ package net.wanji.utc.dto.ring;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2025/03/28 14:41
...
...
@@ -9,8 +11,18 @@ import lombok.Data;
@Data
public
class
RingPhaseInfoDTO
{
private
Integer
schemeNo
;
private
Integer
offset
;
private
Integer
cycleLen
;
private
Integer
ringNo
;
private
Integer
phaseId
;
private
Integer
sort
;
private
Integer
phaseTime
;
private
Integer
redTime
;
...
...
@@ -23,6 +35,10 @@ public class RingPhaseInfoDTO {
private
Integer
maxGTime
;
/**
* 字段 Direction 和 ChannelDim 都表示相位的放行方向,但 Direction 不包含行人放行
* 信息,因此,建议使用 ChannelDim 字段,保留 Direction 字段仅为兼容之前版本。
*/
private
Integer
direction
;
private
Integer
channel
;
...
...
@@ -30,4 +46,15 @@ public class RingPhaseInfoDTO {
private
Integer
concurrent
;
private
Integer
phaseStatus
;
private
List
<
DirTurn
>
dirTurnInfoList
;
/**
* 转换后万集的方向转向,不包含行人
*/
@Data
public
static
class
DirTurn
{
private
Integer
dir
;
private
Integer
turn
;
}
}
signal-utc-service/src/main/java/net/wanji/utc/task/HisenseSchemeRingTask.java
View file @
b2c7f8a8
This diff is collapsed.
Click to expand it.
signal-utc-service/src/main/java/net/wanji/utc/util/CommonUtils.java
0 → 100644
View file @
b2c7f8a8
package
net
.
wanji
.
utc
.
util
;
import
cn.hutool.core.util.HexUtil
;
import
freemarker.template.utility.StringUtil
;
import
net.wanji.common.utils.tool.ScheduleUtil
;
import
net.wanji.utc.common.typeenum.HisenseTurnEnum
;
import
net.wanji.utc.common.typeenum.HiseseDirEnum
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/20 15:07
*/
public
class
CommonUtils
{
/**
* 将数组转化为16进制字符串
*
* @param array
* @return
*/
public
static
String
getHex4Array
(
int
[]
array
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
:
array
)
{
sb
.
append
(
i
);
}
Integer
binary
=
Integer
.
valueOf
(
sb
.
reverse
().
toString
(),
2
);
return
HexUtil
.
toHex
(
binary
);
}
/**
* 将时间转化为16进制 00:00 --> 061E0
*
* @param time
* @return
*/
public
static
String
getHourMinuteHex
(
String
time
)
{
StringBuffer
sb
=
new
StringBuffer
();
String
[]
split
=
time
.
split
(
":"
);
String
hour
=
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
split
[
0
]));
String
minute
=
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
split
[
1
]));
return
sb
.
append
(
hour
).
append
(
minute
).
toString
();
}
/**
* 将相位转化为64位数组,在转化为16位的16进制
*
* @param param
* @return
*/
public
static
String
getBinary
(
Integer
param
)
{
int
[]
array
=
new
int
[
64
];
array
[
param
-
1
]
=
1
;
StringBuffer
resultSb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
array
.
length
/
8
;
i
++)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
j
=
0
;
j
<
8
;
j
++)
{
sb
.
append
(
array
[
i
*
8
+
j
]);
}
String
hex
=
String
.
format
(
"%02x"
,
Integer
.
parseInt
(
sb
.
reverse
().
toString
(),
2
));
resultSb
.
insert
(
0
,
hex
);
}
return
StringUtil
.
leftPad
(
resultSb
.
toString
(),
16
,
"0"
);
}
/**
* 将单个参数转化为4位二进制
*
* @param param
* @return
*/
public
static
Integer
get4BinaryInteger
(
Integer
param
)
{
int
[]
array
=
new
int
[
4
];
int
index
=
param
%
4
;
if
(
param
%
4
!=
0
)
{
array
[
4
-
index
]
=
1
;
}
else
{
array
[
0
]
=
1
;
}
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
sb
.
append
(
array
[
j
]);
}
return
Integer
.
parseInt
(
sb
.
toString
(),
2
);
}
/**
* 通过灯组编号获取灯组转向, 1 左转 2 直 3 右 20 行人
*
* @param lightId
* @return
*/
public
static
Integer
getTurnByLightsId
(
Integer
lightId
)
{
Integer
turn
=
null
;
if
(
lightId
%
4
==
0
)
{
turn
=
1
;
}
if
(
lightId
%
4
==
1
)
{
turn
=
2
;
}
if
(
lightId
%
4
==
2
)
{
turn
=
3
;
}
if
(
lightId
%
4
==
3
)
{
turn
=
20
;
}
return
turn
;
}
public
static
Integer
getDirByLightsId
(
Integer
lightsId
)
{
Integer
dir
=
null
;
if
(
lightsId
<
4
)
{
dir
=
1
;
}
if
(
lightsId
>=
4
&&
lightsId
<
8
)
{
dir
=
3
;
}
if
(
lightsId
>=
8
&&
lightsId
<
12
)
{
dir
=
5
;
}
if
(
lightsId
>=
12
&&
lightsId
<
16
)
{
dir
=
7
;
}
return
dir
;
}
/**
* @Description 将字符串分成八个一组,不够的最前面补0
* @Param [input]
* @return java.util.List<java.lang.String>
**/
public
static
List
<
String
>
groupStringFromRight
(
String
input
)
{
List
<
String
>
list
=
new
ArrayList
<>();
if
(
input
==
null
||
input
.
isEmpty
())
{
return
null
;
}
// 计算需要多少个完整的8字符组
int
fullGroups
=
input
.
length
()
/
8
;
// 计算最后一个组中的字符数
int
lastGroupSize
=
input
.
length
()
%
8
;
StringBuilder
result
=
new
StringBuilder
(
input
);
String
str
=
""
;
if
(
lastGroupSize
>
0
)
{
// 计算需要补多少个0
int
padding
=
8
-
lastGroupSize
;
for
(
int
i
=
0
;
i
<
padding
;
i
++)
{
str
=
str
+
"0"
;
}
}
input
=
str
+
result
.
toString
();
int
size
=
input
.
length
()/
8
;
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
String
substring
=
input
.
substring
(
i
*
8
,
(
i
+
1
)
*
8
);
list
.
add
(
substring
);
}
return
list
;
}
public
static
void
main
(
String
[]
args
)
{
int
l
=
6442253
;
String
binaryString
=
Integer
.
toBinaryString
(
l
);
List
<
String
>
readUtf8Lines
=
groupStringFromRight
(
binaryString
);
System
.
out
.
println
(
readUtf8Lines
.
size
());
for
(
String
readUtf8Line
:
readUtf8Lines
)
{
System
.
out
.
println
(
readUtf8Line
);
String
dir
=
readUtf8Line
.
substring
(
0
,
3
);
// 高三位 方向
String
turn
=
readUtf8Line
.
substring
(
3
);
// 低五位 转向
System
.
out
.
println
(
ScheduleUtil
.
binaryIntToDecimalism
(
dir
)+
"_"
+
ScheduleUtil
.
binaryIntToDecimalism
(
turn
));
Integer
wjLightsDir
=
HiseseDirEnum
.
getWjLightsDir
(
Integer
.
parseInt
(
dir
,
2
));
Integer
wjLightsTurn
=
HisenseTurnEnum
.
getWjLightsTurn
(
Integer
.
parseInt
(
turn
,
2
));
System
.
out
.
println
(
"wjLightsDir "
+
wjLightsDir
);
System
.
out
.
println
(
"wjLightsTurn "
+
wjLightsTurn
);
System
.
out
.
println
(
"======================================"
);
}
}
}
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