Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
李勇
/
McuClient
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
李勇
8 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
71e6a4a4ab2f96713706669e2d4ea6a987dd595a
71e6a4a4
1 parent
92e440e2
1.优化白板标注模块发送的数据,对坐标点数组进行压缩优化,减少字节数;解压收到的坐标点数据还原成数组;目前这个版本能显示以前的数据,这个版本发送的标注,老版本的sdk将无法显示
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
117 行增加
和
15 行删除
src/EngineEntrance.js
src/EngineUtils.js
src/RecordPlayBackParse.js
src/apes/VideoApe.js
src/apes/WhiteBoardApe.js
src/EngineEntrance.js
查看文件 @
71e6a4a
...
...
@@ -58,7 +58,7 @@ export default class MessageEntrance extends Emiter {
constructor
()
{
super
();
//sdk 信息
GlobalConfig
.
sdkVersion
=
"v1.7
8.4.20170820
"
;
GlobalConfig
.
sdkVersion
=
"v1.7
9.3.20170821
"
;
loger
.
warn
(
"sdkVersion:"
+
GlobalConfig
.
sdkVersion
);
//设置
...
...
src/EngineUtils.js
查看文件 @
71e6a4a
...
...
@@ -15,17 +15,17 @@ class EngineUtils{
try
{
return
JSON
.
stringify
(
_param
);
}
catch
(
err
){
console
.
log
(
"arrayToJsonString error
:"
+
err
.
message
);
console
.
warn
(
"数组转JSON失败->ERROR
:"
+
err
.
message
);
}
return
null
;
return
""
;
}
static
arrayFromJsonString
(
_param
){
try
{
return
JSON
.
parse
(
_param
);
}
catch
(
err
){
console
.
log
(
"arrayFromJsonString error
:"
+
err
.
message
);
console
.
warn
(
"JSON转数组失败->ERROR
:"
+
err
.
message
);
}
return
null
;
return
[]
;
}
//生成时间戳后9位 保证唯一
...
...
@@ -91,7 +91,106 @@ class EngineUtils{
console
.
log
(
"objectFromBase64 err:"
+
err
.
message
);
return
null
;
}
return
null
return
null
;
}
//优化压缩坐标点数组,去除一些连续重复坐标的点,返回一个数组
static
compressPoint
(
_arr
){
if
(
!
_arr
){
return
[];
}
if
(
_arr
.
length
<
5
){
//点,直线,矩形 坐标点小于5不需要处理
return
_arr
;
}
let
tempPointArr
=
_arr
;
let
newPointArr
=
[];
newPointArr
.
push
(
tempPointArr
[
0
]);
let
lastW
=
tempPointArr
[
0
].
w
;
let
continueNum
=
0
;
//坐标相同的连续次数
//先筛除水平方向的连续重复坐标点
let
len
=
tempPointArr
.
length
-
1
;
for
(
let
i
=
1
;
i
<
len
;
i
++
){
let
item
=
tempPointArr
[
i
];
if
(
item
&&
item
.
w
!=
lastW
){
lastW
=
item
.
w
;
if
(
continueNum
>
0
){
newPointArr
.
push
(
tempPointArr
[
i
-
1
]);
}
newPointArr
.
push
(
item
);
continueNum
=
0
;
}
else
{
continueNum
++
;
}
}
//如果最终的坐标点数量小于2,需要把最后一个坐标点添加
if
(
tempPointArr
[
len
]){
newPointArr
.
push
(
tempPointArr
[
len
]);
}
//如果坐标点已经小于等于2不需要继续检测
if
(
newPointArr
.
length
<=
2
){
return
newPointArr
;
}
//筛除水垂直向的连续重复坐标点
let
finalPointArr
=
[];
finalPointArr
.
push
(
newPointArr
[
0
]);
let
lastH
=
newPointArr
[
0
].
h
;
continueNum
=
0
;
len
=
newPointArr
.
length
-
1
;
for
(
let
k
=
1
;
k
<
len
;
k
++
){
let
item
=
newPointArr
[
k
];
if
(
item
&&
item
.
h
!=
lastH
){
lastH
=
item
.
h
;
if
(
continueNum
>
0
){
finalPointArr
.
push
(
newPointArr
[
k
-
1
]);
}
finalPointArr
.
push
(
item
);
continueNum
=
0
;
}
else
{
continueNum
++
;
}
}
if
(
newPointArr
[
len
]){
finalPointArr
.
push
(
newPointArr
[
len
]);
}
return
finalPointArr
;
}
//压缩数据,把坐标点数组转换为字符串,返回字符串
static
optimizePoint
(
_pointGroup
){
if
(
!
_pointGroup
){
return
""
;
}
let
tempStr
=
""
;
try
{
tempStr
=
JSON
.
stringify
(
_pointGroup
);
}
catch
(
err
){
return
""
;
}
let
regexp1
=
/},{"w":/g
;
let
regexp2
=
/,"h":/g
;
tempStr
=
tempStr
.
replace
(
regexp1
,
"#"
);
tempStr
=
tempStr
.
replace
(
regexp2
,
"&"
);
//console.log("标注压缩后的字符长度->",tempStr.length);
return
tempStr
;
}
//把字符串坐标点集合转换为数组,返回数组的JSON
static
unPackOptimizePoint
(
_str
){
if
(
!
_str
){
return
""
;
}
let
tempStr
=
_str
;
let
regexp1
=
/#/g
;
let
regexp2
=
/&/g
;
tempStr
=
tempStr
.
replace
(
regexp1
,
'},{"w":'
);
tempStr
=
tempStr
.
replace
(
regexp2
,
',"h":'
);
let
dataArr
=
[];
try
{
dataArr
=
JSON
.
parse
(
tempStr
);
}
catch
(
err
){
}
return
dataArr
;
}
}
export
default
EngineUtils
;
\ No newline at end of file
...
...
src/RecordPlayBackParse.js
查看文件 @
71e6a4a
...
...
@@ -570,8 +570,8 @@ class RecordPlayBackParse extends Emiter {
for
(
let
i
=
0
;
i
<
messageItem
.
length
;
i
++
)
{
this
.
_everSocketMsgReceivedHandler
(
messageItem
[
i
].
byteData
,
0
);
counter
++
;
if
(
counter
>
100
){
loger
.
warn
(
"SEEK->最多处理历史消息100条"
);
if
(
counter
>
40
){
loger
.
warn
(
"SEEK->最多处理历史消息40条"
);
return
;
}
}
...
...
src/apes/VideoApe.js
查看文件 @
71e6a4a
...
...
@@ -286,13 +286,12 @@ class VideoApe extends Ape {
}
//释放nodeId占用的所有频道
_releaseNodeIdAllChannel
(
nodeId
){
loger
.
log
(
nodeId
,
"_releaseNodeIdAllChannel"
,
this
.
mcu
.
connected
);
if
(
!
this
.
mcu
.
connected
){
clearTimeout
(
this
.
releaseTimeId
);
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"已经断开连接"
};
}
loger
.
log
(
"释放nodeId占用的所有频道->"
,
nodeId
);
let
openingChannelInfo
=
this
.
mediaModule
.
getOpeningMediaChannelForNodeId
(
nodeId
);
if
(
openingChannelInfo
.
channelId
==
0
)
{
loger
.
warn
(
nodeId
,
"没有占用channel不需要处理"
);
...
...
@@ -335,13 +334,13 @@ class VideoApe extends Ape {
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"sendVideoCommandMsg失败,参数错误"
};
}
// to, message
loger
.
log
(
'
发送Video
消息.'
,
_param
);
loger
.
log
(
'
视频模块广播
消息.'
,
_param
);
if
(
_param
.
actionType
!=
null
&&
_param
.
actionType
==
ApeConsts
.
MEDIA_ACTION_OPEN_CAMERA
)
{
//判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启
let
freeChannel
=
this
.
mediaModule
.
getFreeMediaChannel
();
if
(
freeChannel
==
0
)
{
loger
.
warn
(
'
sendVideoCommandMsg,
不能再打开更多的设备'
,
_param
);
loger
.
warn
(
'
视频模块广播消息->
不能再打开更多的设备'
,
_param
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"不能再打开更多的设备"
,
"mediaChannels"
:
this
.
mediaModule
.
mediaChannels
};
}
}
...
...
src/apes/WhiteBoardApe.js
查看文件 @
71e6a4a
...
...
@@ -458,7 +458,10 @@ class WhiteBoardApe extends Ape {
whiteBoardModelPdu
.
parentId
=
GlobalConfig
.
activeDocId
;
//当前激活的文档id
whiteBoardModelPdu
.
curPageNo
=
GlobalConfig
.
activeDocCurPage
;
//当前激活的文档页码
whiteBoardModelPdu
.
pointGroup
=
EngineUtils
.
arrayToJsonString
(
_param
.
pointGroup
);
let
compressPointArr
=
EngineUtils
.
compressPoint
(
_param
.
pointGroup
);
//优化坐标点,去除一些连续重复的点
let
pointGroupStr
=
EngineUtils
.
optimizePoint
(
compressPointArr
);
//数组转换为JSON字符串,压缩数据
//console.log("发送压缩后的标注->",pointGroupStr);
whiteBoardModelPdu
.
pointGroup
=
pointGroupStr
||
''
;
whiteBoardModelPdu
.
color
=
_param
.
color
||
"#000000"
;
whiteBoardModelPdu
.
thickness
=
_param
.
thickness
||
1
;
...
...
@@ -469,8 +472,9 @@ class WhiteBoardApe extends Ape {
try
{
//loger.log("白板标注数据->unPackPdu");
let
whiteBoardModelPdu
=
pdu
[
'RCWhiteBoardDataModelPdu'
].
decode
(
itemData
);
let
_pointGroup
=
EngineUtils
.
arrayFromJsonString
(
whiteBoardModelPdu
.
pointGroup
);
whiteBoardModelPdu
.
pointGroup
=
_pointGroup
;
//let _pointGroup = EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup);
let
pointGroup
=
EngineUtils
.
unPackOptimizePoint
(
whiteBoardModelPdu
.
pointGroup
);
//还原压缩后的数据
whiteBoardModelPdu
.
pointGroup
=
pointGroup
;
this
.
annoInfos
[
itemIdx
]
=
whiteBoardModelPdu
;
return
whiteBoardModelPdu
;
}
catch
(
err
)
{
...
...
请
注册
或
登录
后发表评论