Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
zhengyuan-danger-chemistry-manage
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
耿迪迪
zhengyuan-danger-chemistry-manage
Commits
554d875d
Commit
554d875d
authored
Jan 15, 2023
by
吴卿华
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
5aa43a79
88d3e149
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1050 additions
and
1 deletion
+1050
-1
Bx06Controller.java
...java/com/zehong/web/controller/system/Bx06Controller.java
+24
-0
SecurityConfig.java
...main/java/com/zehong/framework/config/SecurityConfig.java
+1
-1
Bx06Vo.java
...tem/src/main/java/com/zehong/system/domain/vo/Bx06Vo.java
+13
-0
LedserviceImpl.java
...n/java/com/zehong/system/service/impl/LedserviceImpl.java
+254
-0
led.java
...age-system/src/main/java/com/zehong/system/utils/led.java
+452
-0
ledCallBack.java
...em/src/main/java/com/zehong/system/utils/ledCallBack.java
+13
-0
index.vue
...r-manage-web/src/views/educationPlanExam/census/index.vue
+293
-0
No files found.
danger-manage-admin/src/main/java/com/zehong/web/controller/system/Bx06Controller.java
0 → 100644
View file @
554d875d
package
com
.
zehong
.
web
.
controller
.
system
;
import
com.zehong.common.core.domain.AjaxResult
;
import
com.zehong.system.domain.vo.Bx06Vo
;
import
com.zehong.system.service.impl.LedserviceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Api
(
"大屏推送"
)
@RestController
@RequestMapping
(
"bx"
)
public
class
Bx06Controller
{
@ApiOperation
(
"测试推送"
)
@PutMapping
(
"/send"
)
public
AjaxResult
send
(
Bx06Vo
bx06Vo
)
throws
Exception
{
LedserviceImpl
.
SendProgram
(
bx06Vo
);
return
AjaxResult
.
success
();
}
}
danger-manage-framework/src/main/java/com/zehong/framework/config/SecurityConfig.java
View file @
554d875d
...
...
@@ -98,7 +98,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.
authorizeRequests
()
// 对于登录login 验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/captchaImage"
).
anonymous
()
.
antMatchers
(
"/login"
,
"/captchaImage"
,
"/bx/send"
).
anonymous
()
.
antMatchers
(
HttpMethod
.
GET
,
"/*.html"
,
...
...
danger-manage-system/src/main/java/com/zehong/system/domain/vo/Bx06Vo.java
0 → 100644
View file @
554d875d
package
com
.
zehong
.
system
.
domain
.
vo
;
import
lombok.Data
;
@Data
public
class
Bx06Vo
{
private
String
[]
contents
;
private
String
content
=
"柏坡正元欢迎您"
;
private
Integer
width
=
192
;
private
Integer
height
=
96
;
private
Integer
colorType
=
1
;
private
Integer
grayLevel
=
0
;
}
danger-manage-system/src/main/java/com/zehong/system/service/impl/LedserviceImpl.java
0 → 100644
View file @
554d875d
package
com
.
zehong
.
system
.
service
.
impl
;
import
com.listenvision.led
;
import
com.zehong.system.domain.vo.Bx06Vo
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
java.io.Console
;
@Service
public
class
LedserviceImpl
{
@PostConstruct
public
void
qidong
()
throws
Exception
{
led
.
InitLedType
(
0
);
}
public
static
void
SendProgram
(
Bx06Vo
bx06Vo
)
{
String
strIp
=
"192.168.11.128"
;
int
ledWidth
=
bx06Vo
.
getWidth
();
//屏的宽度
int
ledHeight
=
bx06Vo
.
getHeight
();
//屏的高度
int
colorType
=
bx06Vo
.
getColorType
();
//屏的颜色 1.单色 2.双基色 3.三基色 注:C卡全彩参数为3 X系列卡参数固定为 4
int
grayLevel
=
bx06Vo
.
getGrayLevel
();
//灰度等级 赋值 1-5对应的灰度等级分别为 无,4,8,16,32 除C卡外,其它卡传0
System
.
out
.
println
(
"w:"
+
bx06Vo
.
getWidth
()+
"--h:"
+
bx06Vo
.
getHeight
()+
"--c:"
+
bx06Vo
.
getColorType
()+
"--g:"
+
bx06Vo
.
getGrayLevel
());
//初始化LED类型,程序启动,初始化调用一次即可
//led.InitLedType(0);//卡型号 0 T/A/U/XC/W 1 E 2 X 3 C
//Example 1 Basic screen parameter settings(设置基本屏参)
//onSetBasicInfo(strIp,ledWidth,ledHeight,colorType,grayLevel);
//Example 2 Switch screen(开关屏)
//onPowerOnOff(strIp);
//Example 3 Calibration time(校时)
//onAdjustTime(strIp);
//Example 4 Single line text program(一个节目下只有一个连接左移的单行文本区)
//onSingleLineText(strIp,ledWidth,ledHeight,colorType,grayLevel,bx06Vo.getContent());
onMultiLineText
(
strIp
,
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
bx06Vo
.
getContents
());
//Example 5 Multi-line text program(一个节目下只有一个多行文本区)
//onMultiLineText(strIp,ledWidth,ledHeight,colorType,grayLevel);
//Example 6 Picture program(一个节目下只有一个图片区)
//onPicture(strIp,ledWidth,ledHeight,colorType,grayLevel);
//Example 7 A single-line text area and a picture area program(一个节目下有一个连续上移的单行文本区和一个图片区)
//onTwoAreas(strIp,ledWidth,ledHeight,colorType,grayLevel);
//Example 8 A single-line text area program and a digital clock area program(两个节目下各有一个单行文本区和一个数字时钟区)
//onTwoPrograms(strIp,ledWidth,ledHeight,colorType,grayLevel);
/***************广域网开发简单示例 C2M C4M型号才支持*************/
//打开服务端口
/*ledCallBack cb = new ledCallBack()
{
//上下线只会通知一次
public void LedServerCallback(int Msg, int wParam, String networkIdStr)
{
switch(Msg){
case 1://控制卡连上
System.out.println("connected ID:"+networkIdStr);
onSingleLineText(networkIdStr,ledWidth,ledHeight,colorType,grayLevel);
break;
case 2://控制卡断开
System.out.println("disconnect ID:"+networkIdStr);
break;
default :
break;
}
}
};
led.LedInitServer(10012);
led.RegisterLedServerCallback(cb);
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//断开服务
led.LedShudownServer();*/
/*******************************************************/
}
//Basic screen parameter settings(设置基本屏参)
public
static
void
onSetBasicInfo
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
)
{
int
errCode
=
led
.
SetBasicInfo
(
strIp
,
colorType
,
grayLevel
,
ledWidth
,
ledHeight
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"设置基本屏参成功"
);
}
//Switch screen(开关屏)
public
static
void
onPowerOnOff
(
String
strIp
)
{
int
errCode
=
led
.
PowerOnOff
(
strIp
,
0
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"开关屏成功"
);
}
//Calibration time(校时)
public
static
void
onAdjustTime
(
String
strIp
)
{
int
errCode
=
led
.
AdjustTime
(
strIp
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"校时成功"
);
}
//Single line text program(一个节目下只有一个连接左移的单行文本区)
public
static
void
onSingleLineText
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
,
String
content
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
led
.
AddImageTextArea
(
hProgram
,
0
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
1
);
led
.
AddSinglelineTextToImageTextArea
(
hProgram
,
0
,
1
,
0
,
content
,
"宋体"
,
20
,
0xff
,
0
,
0
,
0
,
6
,
10
,
0
);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送节目成功"
);
}
//Multi-line text program(一个节目下只有一个多行文本区)
public
static
void
onMultiLineText
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
,
String
[]
contents
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
//led.AddImageTextArea(hProgram, 0, 1, 0, 0, ledWidth/2, ledHeight/2, 1);
//led.AddImageTextArea(hProgram, 0, 2, 0, ledHeight/2, ledWidth/2, ledHeight/2, 1);
//You can add multiple sub-items to the graphic area(可以添加多个子项到图文区,如下添加可以选一个或多个添加)
for
(
int
i
=
0
;
i
<
contents
.
length
;
i
++){
led
.
AddImageTextArea
(
hProgram
,
0
,
i
+
1
,
0
,
ledHeight
/
6
*
i
,
ledWidth
,
ledHeight
/
6
,
1
);
led
.
AddMultiLineTextToImageTextArea
(
hProgram
,
0
,
i
+
1
,
0
,
contents
[
i
],
"宋体"
,
9
,
0xff
,
1
,
0
,
0
,
0
,
4
,
10
,
0
,
0
);
}
//led.AddMultiLineTextToImageTextArea(hProgram,0,1,0,"第一行","宋体",9,0xff,1,0,0,0,4,10,0,0);
//led.AddMultiLineTextToImageTextArea(hProgram,0,2,0,"第二行\\n第三行","宋体",9,0xff,1,0,0,0,4,10,0,0);
//led.AddMultiLineTextToImageTextArea(hProgram,0,1,0,"上海灵信视觉","宋体",12,0xff,1,0,0,0,4,10,0,0);
//led.AddMultiLineTextToImageTextArea(hProgram,0,1,0,"上海灵信视觉2","simsun.ttc",14,0xff,0,0,0,0,10,5,0,0);
//led.AddMultiLineTextToImageTextArea(hProgram,0,1,0,"上海灵信视觉3","simsun.ttc",14,0xff,0,0,0,0,10,5,0,0);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送文本节目成功"
);
}
//Picture program(一个节目下只有一个图片区)
public
static
void
onPicture
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
led
.
AddImageTextArea
(
hProgram
,
0
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
1
);
//You can add multiple sub-items to the graphic area(可以添加多个子项到图文区,如下添加可以选一个或多个添加)
led
.
AddFileToImageTextArea
(
hProgram
,
0
,
1
,
"test.bmp"
,
1
,
4
,
2
);
//led.AddFileToImageTextArea(hProgram, 0, 1, "test.jpg", 1, 4, 2);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送节目成功"
);
}
//A single-line text area and a picture area program(一个节目下有一个连续上移的单行文本区和一个图片区)
public
static
void
onTwoAreas
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
led
.
AddImageTextArea
(
hProgram
,
0
,
1
,
0
,
0
,
ledWidth
,
ledHeight
/
2
,
1
);
led
.
AddSinglelineTextToImageTextArea
(
hProgram
,
0
,
1
,
0
,
"Listen"
,
"宋体"
,
12
,
0xff
,
0
,
0
,
0
,
6
,
20
,
0
);
led
.
AddImageTextArea
(
hProgram
,
0
,
2
,
0
,
ledHeight
/
2
,
ledWidth
,
ledHeight
/
2
,
1
);
led
.
AddFileToImageTextArea
(
hProgram
,
0
,
2
,
"test.bmp"
,
1
,
4
,
2
);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送节目成功"
);
}
//A single-line text area program and a digital clock area program(两个节目下各有一个单行文本区和一个数字时钟区)
public
static
void
onTwoPrograms
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
//添加单行文本节目
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
led
.
AddImageTextArea
(
hProgram
,
0
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
1
);
led
.
AddSinglelineTextToImageTextArea
(
hProgram
,
0
,
1
,
0
,
"上海灵信视觉"
,
"宋体"
,
12
,
0xff
,
0
,
0
,
0
,
6
,
8
,
0
);
//添加数字时钟节目
led
.
AddProgram
(
hProgram
,
1
,
0
,
1
);
led
.
AddDigitalClockArea
(
hProgram
,
1
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
"宋体"
,
8
,
0xff
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0xff
,
0
,
0xff
,
0
,
0xff
,
1
);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送节目成功"
);
}
public
static
void
onMuchPrograms
(
String
strIp
,
int
ledWidth
,
int
ledHeight
,
int
colorType
,
int
grayLevel
,
String
[]
contents
)
{
long
hProgram
=
led
.
CreateProgram
(
ledWidth
,
ledHeight
,
colorType
,
grayLevel
,
0
);
//添加单行文本节目
led
.
AddProgram
(
hProgram
,
0
,
0
,
1
);
led
.
AddImageTextArea
(
hProgram
,
0
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
1
);
led
.
AddSinglelineTextToImageTextArea
(
hProgram
,
0
,
1
,
0
,
"上海灵信视觉"
,
"宋体"
,
12
,
0xff
,
0
,
0
,
0
,
6
,
8
,
0
);
//添加数字时钟节目
led
.
AddProgram
(
hProgram
,
1
,
0
,
1
);
led
.
AddDigitalClockArea
(
hProgram
,
1
,
1
,
0
,
0
,
ledWidth
,
ledHeight
,
"宋体"
,
8
,
0xff
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0xff
,
0
,
0xff
,
0
,
0xff
,
1
);
int
errCode
=
led
.
NetWorkSend
(
strIp
,
hProgram
);
led
.
DeleteProgram
(
hProgram
);
if
(
errCode
!=
0
)
{
System
.
out
.
println
(
"失败:"
+
errCode
);
}
else
System
.
out
.
println
(
"发送节目成功"
);
}
}
danger-manage-system/src/main/java/com/zehong/system/utils/led.java
0 → 100644
View file @
554d875d
package
com
.
listenvision
;
// 注意:此命名空间不可改,否则会报错
//import com.zehong.system.utils.ledCallBack;
public
class
led
{
/********************************************************************************************
* InitLedType 初始化控制卡型号,程序启动,初始化调用一次即可
*
* 参数说明
* LedType 卡型号 0 T/A/U/XC/W 系列
1 E 系列
2 X 系列
3 C 系列
********************************************************************************************/
public
native
static
void
InitLedType
(
int
LedType
);
/********************************************************************************************
* CreateProgram 创建节目对象,成功返回节目对象句柄,注意此处屏宽高及颜色参数必需与设置屏参的屏宽高及颜色一致,否则发送时会提示错误
*
* 参数说明
* LedWidth 屏的宽度
* LedHeight 屏的高度
* ColorType 屏的颜色 1.单色 2.双基色 3.三基色 注:C卡全彩参数为3 X系列卡参数固定为 4
* GrayLevel 灰度等级 赋值 1-5对应的灰度等级分别为 无,4,8,16,32 除C卡外,其它卡传0
* SaveType 节目保存位置,默认为0保存为flash节目,3保存为ram节目。注:flash节目掉电不清除,ram节目掉电清除。应用场景需要实时刷新的,建议保持为ram节目
* 返回值
* 0 创建节目对象失败
* 非0 创建节目对象成功
********************************************************************************************/
public
native
static
long
CreateProgram
(
int
LedWidth
,
int
LedHeight
,
int
ColorType
,
int
GrayLevel
,
int
SaveType
);
/*********************************************************************************************
* AddProgram 添加一个节目
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* ProgramTime 节目播放时长 0.节目播放时长 非0.指定播放时长
* LoopCount 循环播放次数 1-255
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddProgram
(
long
hProgram
,
int
ProgramNo
,
int
ProgramTime
,
int
LoopCount
);
/*********************************************************************************************
* LV_AddImageTextArea 添加一个图文区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* l 区域左上角横坐标
* t 区域左上角纵坐标
* w 区域宽度
* h 区域高度
* nLayout 区域层号,0.前景区(默认) 1.背景区 注:除C系列,其它默认为1
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddImageTextArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
l
,
int
t
,
int
w
,
int
h
,
int
nLayout
);
/*********************************************************************************************
* AddFileToImageTextArea 添加一个文件到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* FilePath 文件路径,支持的文件类型有 txt rtf bmp gif png jpg jpeg tiff
* InStyle 入场特技(取值范围 0-38)具体查看开发文档
* nSpeed 特技速度 (取值范围1-255)值越大,速度越慢
* DelayTime 停留时间 (1-65535) 秒
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddFileToImageTextArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
String
FilePath
,
int
InStyle
,
int
nSpeed
,
int
DelayTime
);
/*********************************************************************************************
* AddMultiLineTextToImageTextArea 添加一个多行文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径 换行符(\n)
* FontName 字体名
* FontSize 字体大小
* FontColor 字体颜色 格式BBGGRR 0xff 红色 0xff00 绿色 0xffff黄色
* FontBold 是否加粗 0不加粗 1加粗
* FontItalic 是否是斜体 0 不斜 1斜
* FontUnderline 是否下划线 0不加下划线 1加下划线
* InStyle 入场特技(取值范围 0-38)具体查看开发文档
* nSpeed 特技速度 (取值范围1-255)值越大,速度越慢
* DelayTime 停留时间 (1-65535) 秒 注:当入场特技为连续左移、连续右移、连续上移、连续下移时,此参数无效
* nAlignment 左右居中对齐方式 0.左对齐 1.右对齐 2.水平居中 (注意:只对字符串和txt文件有效)
* IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddMultiLineTextToImageTextArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
AddType
,
String
AddStr
,
String
FontName
,
int
FontSize
,
int
FontColor
,
int
FontBold
,
int
FontItalic
,
int
FontUnderline
,
int
InStyle
,
int
nSpeed
,
int
DelayTime
,
int
nAlignment
,
int
IsVCenter
);
/*********************************************************************************************
* AddStaticTextToImageTextArea 添加一个静止文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径
* FontName 字体名
* FontSize 字体大小
* FontColor 字体颜色 格式BBGGRR 0xff 红色 0xff00 绿色 0xffff黄色
* FontBold 是否加粗 0不加粗 1加粗
* FontItalic 是否是斜体 0 不斜 1斜
* FontUnderline 是否下划线 0不加下划线 1加下划线
* DelayTime 停留时间 (1-65535) 秒 注:当入场特技为连续左移、连续右移、连续上移、连续下移时,此参数无效
* nAlignment 左右居中对齐方式 0.左对齐 1.右对齐 2.水平居中 (注意:只对字符串和txt文件有效)
* IsVCenter 是否垂直居中 0.置顶(默认) 1.垂直居中
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddStaticTextToImageTextArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
AddType
,
String
AddStr
,
String
FontName
,
int
FontSize
,
int
FontColor
,
int
FontBold
,
int
FontItalic
,
int
FontUnderline
,
int
DelayTime
,
int
nAlignment
,
int
IsVCenter
);
/*********************************************************************************************
* AddSinglelineTextToImageTextArea 添加一个单行文本到图文区
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* AddType 添加的类型 0.为字符串 1.文件(只支持txt和rtf文件)
* AddStr AddType为0则为字符串数据,AddType为1则为文件路径
* FontName 字体名
* FontSize 字体大小
* FontColor 字体颜色 0xff 红色 0xff00 绿色 0xffff黄色
* FontBold 是否加粗 0不加粗 1加粗
* FontItalic 是否是斜体 0 不斜 1斜
* FontUnderline 是否下划线 0不加下划线 1加下划线
* InStyle 入场特技(取值范围 0-38)体查看开发文档
* nSpeed 特技速度 (取值范围1-255)值越大,速度越慢
* DelayTime 停留时间 (1-65535) 秒
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddSinglelineTextToImageTextArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
AddType
,
String
AddStr
,
String
FontName
,
int
FontSize
,
int
FontColor
,
int
FontBold
,
int
FontItalic
,
int
FontUnderline
,
int
InStyle
,
int
nSpeed
,
int
DelayTime
);
/*********************************************************************************************
* AddSinglelineTextToImageTextArea 添加一个数字时钟区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* l 区域左上角横坐标
* t 区域左上角纵坐标
* w 区域宽度
* h 区域高度
* FontName 字体名
* FontSize 字体大小
* FontColor 字体颜色 0xff 红色 0xff00 绿色 0xffff黄色
* FontBold 是否加粗 0不加粗 1加粗
* FontItalic 是否是斜体 0 不斜 1斜
* FontUnderline 是否下划线 0不加下划线 1加下划线
* IsYear 是否显示年 1为显示 0不显示 下同
* IsWeek 是否显示星期
* IsMonth 是否显示月
* IsDay 是否显示日
* IsHour 是否显示时
* IsMinute 是否显示分
* IsSecond 是否显示秒
* DateFormat 日期格式 0.YYYY年MM月DD日 1.YY年MM月DD日 2.MM/DD/YYYY 3.YYYY/MM/DD 4.YYYY-MM-DD 5.YYYY.MM.DD 6.MM.DD.YYYY 7.DD.MM.YYYY
* DateColor 日期字体颜色0xff 红色 0xff00 绿色 0xffff黄色
* WeekFormat 星期格式 0.星期X 1.Monday 2.Mon.
* WeekColor 星期字体颜色0xff 红色 0xff00 绿色 0xffff黄色
* TimeFormat 时间格式 0.HH时mm分ss秒 1.HH時mm分ss秒 2.HH:mm:ss 3.上午 HH:mm:ss 4.AM HH:mm:ss 5.HH:mm:ss 上午 6.HH:mm:ss AM
* TimeColor 时间字体颜色0xff 红色 0xff00 绿色 0xffff黄色
* IsMutleLineShow 0 单行 1多行
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddDigitalClockArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
l
,
int
t
,
int
w
,
int
h
,
String
FontName
,
int
FontSize
,
int
FontColor
,
int
FontBold
,
int
FontItalic
,
int
FontUnderline
,
int
IsYear
,
int
IsWeek
,
int
IsMonth
,
int
IsDay
,
int
IsHour
,
int
IsMinute
,
int
IsSecond
,
int
DateFormat
,
int
DateColor
,
int
WeekFormat
,
int
WeekColor
,
int
TimeFormat
,
int
TimeColor
,
int
IsMutleLineShow
);
/*********************************************************************************************
* AddTimeArea 添加一个计时区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* l 区域左上角横坐标
* t 区域左上角纵坐标
* w 区域宽度
* h 区域高度
* FontName 字体名
* FontSize 字体大小
* //FontColor 字体颜色 格式BBGGRR 0xff 红色 0xff00 绿色 0xffff黄色
* FontBold 是否加粗 0不加粗 1加粗
* FontItalic 是否是斜体 0 不斜 1斜
* FontUnderline 是否下划线 0不加下划线 1加下划线
* TimeColor 时间字体颜色0xff 红色 0xff00 绿色 0xffff黄色
* TxtColor 自定义文字字体颜色0xff 红色 0xff00 绿色 0xffff黄色
* ShowStyle 显示格式 0.xx天xx时xx分xx秒 1.xx天xx時xx分xx秒 2.xxDayxxHourxxMinxxSec 3.XXdXXhXXmXXs 4.xx:xx:xx:xx
* IsMutleLineShow 0 单行 1多行
* TxtStr 自定义文字字符串
* nYear; 结束年
* nMonth; 结束月
* nDay; 结束日
* nHour; 结束时
* nMinute; 结束分
* nSecond; 结束秒
* IsShowDay; 是否显示天
* IsShowHour; 是否显示时
* IsShowMinute; 是否显示分
* IsShowSecond; 是否显示秒
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddTimeArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
l
,
int
t
,
int
w
,
int
h
,
String
FontName
,
int
FontSize
,
int
FontBold
,
int
FontItalic
,
int
FontUnderline
,
int
TimeColor
,
int
TxtColor
,
int
ShowStyle
,
int
IsMutleLineShow
,
String
TxtStr
,
int
nYear
,
int
nMonth
,
int
nDay
,
int
nHour
,
int
nMinute
,
int
nSecond
,
int
IsShowDay
,
int
IsShowHour
,
int
IsShowMinute
,
int
IsShowSecond
);
/*********************************************************************************************
* AddVoiceArea 添加一个语音区域 (文本中可以加入文本控制标记来对语音合成发音人、音量、语速、语调等的设置,文本控制标记请查看语音协议)
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* VoiceStr; 文本
* DelayTime; 间隔时间
* PlayCount; 播放次数
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddVoiceArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
String
VoiceStr
,
int
DelayTime
,
int
PlayCount
);
/*********************************************************************************************
* AddNeiMaArea 添加一个内码区域
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* l 区域左上角横坐标
* t 区域左上角纵坐标
* w 区域宽度
* h 区域高度
* NeiMaStr 字符串
* FontSize 字体大小 16 24 32
* FontColor 字体颜色 格式BBGGRR 0xff 红色 0xff00 绿色 0xffff黄色
* InStyle 入场特技 (取值范围 0-9)
* nSpeed 特技速度 (取值范围1-255)
* DelayTime 停留时间 (1-65535)
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddNeiMaArea
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
l
,
int
t
,
int
w
,
int
h
,
String
NeiMaStr
,
int
FontSize
,
int
FontColor
,
int
InStyle
,
int
nSpeed
,
int
DelayTime
);
/*********************************************************************************************
* DeleteProgram 销毁节目对象(注意:如果此节目对象不再使用,请调用此函数销毁,否则会造成内存泄露)
*
* 参数说明
* hProgram 节目对象句柄
********************************************************************************************/
public
native
static
void
DeleteProgram
(
long
hProgram
);
/*********************************************************************************************
* NetWorkSend 发送节目,此发送为一对一发送
*
* 参数说明
* IpStr LED屏IP 格式例如 192.168.1.100 / 广域网开发时,指定LED屏网络唯一ID
* hProgram 节目对象句柄
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
NetWorkSend
(
String
IpStr
,
long
hProgram
);
/*********************************************************************************************
* SetBasicInfo 设置基本屏参
*
* 参数说明
* IpStr LED屏的IP 格式例如 192.168.1.100
* ColorType 屏的颜色 1.单色 2.双基色 3.三基色 注:C卡全彩参数为3 X系列卡参数固定4
* GrayLevel 灰度等级, 赋值 1-5对应的灰度等级分别为 无,4,8,16,32
* LedWidth 屏的宽度点数
* LedHeight 屏的高度点数
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
SetBasicInfo
(
String
IpStr
,
int
ColorType
,
int
GrayLevel
,
int
LedWidth
,
int
LedHeight
);
/*********************************************************************************************
* SetOEDA 设置OE DA
*
* 参数说明
* IpStr LED屏的IP
* Oe OE 0.低有效 1.高有效
* Da DA 0.负极性 1.正极性
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
SetOEDA
(
String
IpStr
,
int
Oe
,
int
Da
);
/*********************************************************************************************
* AdjustTime 校时
*
* 参数说明
* IpStr LED屏的IP
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AdjustTime
(
String
IpStr
);
/*********************************************************************************************
* PowerOnOff 开关屏
*
* 参数说明
* IpStr LED屏的IP
* OnOff 开关值 0.开屏 1.关屏 2.重启
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
PowerOnOff
(
String
IpStr
,
int
OnOff
);
/*********************************************************************************************
* TimePowerOnOff 定时开关屏
*
* 参数说明 注:当参数起始时间和结束时间都都为0时,既是取消定时开关屏
* IpStr LED屏的IP
* StartHour 起始小时
* StartMinute 起始分钟
* EndHour 结束小时
* EndMinute 结束分钟
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
TimePowerOnOff
(
String
IpStr
,
int
StartHour
,
int
StartMinute
,
int
EndHour
,
int
EndMinute
);
/*********************************************************************************************
* SetBrightness 设置亮度
*
* 参数说明
* IpStr LED屏的IP
* BrightnessValue 亮度值 0~15
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
SetBrightness
(
String
IpStr
,
int
BrightnessValue
);
/*********************************************************************************************
* TestOnline LED测试通讯是否正常
*
* 参数说明
* IpStr LED屏的IP
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
TestOnline
(
String
IpStr
);
/*********************************************************************************************
* LedInitServer 启动控制卡心跳包服务。注:C2M C4M才支持
*
* 参数说明
* port 监听的端口
* 返回值
* 0 成功
* 非0 失败,调用LV_GetError来获取错误信息
********************************************************************************************/
public
native
static
int
LedInitServer
(
int
port
);
/*********************************************************************************************
* LedShudownServer 断开控制卡心跳包服务。注:C2M C4M才支持
********************************************************************************************/
public
native
static
int
LedShudownServer
();
/*********************************************************************************************
* RegisterLedServerCallback 注册回调,动态库才会调用LedServerCallback,实时告知上下线控制卡。注:C2M C4M才支持
* cb 回调对象
********************************************************************************************/
public
native
static
void
RegisterLedServerCallback
(
com
.
listenvision
.
ledCallBack
cb
);
/*********************************************************************************************
* AddBorder 添加一个边框
*
* 参数说明
* hProgram 节目对象句柄
* ProgramNo 节目号 (取值范围0-255)(从0开始)
* AreaNo 区域号 (取值范围1-255)
* l 区域左上角横坐标
* t 区域左上角纵坐标
* w 区域宽度
* h 区域高度
* BorderType 边框类型 0:单色 1:炫色 2:全彩
* BorderValue 边框的值 具体可参考PC客户端软件对应的选项
* BorderColor 边框颜色 只有单色才可设置颜色
* BorderStyle 边框特技 0:固定 1:顺时针 2:逆时针 3: 闪烁
* BorderSpeed 边框速度 0-31 越大越慢
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
AddBorder
(
long
hProgram
,
int
ProgramNo
,
int
AreaNo
,
int
l
,
int
t
,
int
w
,
int
h
,
int
BorderType
,
int
BorderValue
,
int
BorderColor
,
int
BorderStyle
,
int
BorderSpeed
);
/*********************************************************************************************
* SetLedCommunicationParameter 设置LED屏的网络信息
*
* 参数说明
* IpStr LED屏的IP
* NewIp LED屏的新IP
* NewNetMask LED屏的新子网掩码
* NewGateway LED屏的新网关
* NewMac LED屏的新mac地址
* IsClient 1为启动客户端模式 0为不起动 //当为0时,以下参数设置为0
* ServerIp 服务器IP
* ServerPort 端口
* IsDHCP 1自动分配 0手动配置
* IsHeartBeat 1启动心跳包 0不起动心跳包
* HeartBeatTime LED心跳包时间
* 返回值
* 0 成功
* 非0 失败
********************************************************************************************/
public
native
static
int
SetLedCommunicationParameter
(
String
IpStr
,
String
NewIp
,
String
NewNetMask
,
String
NewGateway
,
String
NewMac
,
int
IsClient
,
String
ServerIp
,
int
ServerPort
,
int
IsDHCP
,
int
IsHeartBeat
,
int
HeartBeatTime
);
static
{
//System.loadLibrary("lv_led");
System
.
load
(
"D:\\User\\Desktop\\demo(java)\\src\\lv_led.dll"
);
}
}
danger-manage-system/src/main/java/com/zehong/system/utils/ledCallBack.java
0 → 100644
View file @
554d875d
package
com
.
listenvision
;
/*********************************************************************************************
* LedServerCallback 动态库回调Java方法,实时告知上下线控制卡
* Msg 1,有控制卡上线 2。有控制卡下线
* wParam 暂时没用
* networkIdStr 控制卡唯一标识
********************************************************************************************/
public
interface
ledCallBack
{
public
abstract
void
LedServerCallback
(
int
Msg
,
int
wParam
,
String
networkIdStr
);
}
danger-manage-web/src/views/educationPlanExam/census/index.vue
0 → 100644
View file @
554d875d
<
template
>
<div
style=
"width: 100%"
>
<div
class=
"division"
>
<div
style=
" width: 500px;height: calc(50vh - 84px)"
>
<div
id=
"myChartone"
style=
"text-align:center;width:80%;height:80%;margin:auto;padding-top:30px;"
></div>
</div>
<div
id=
"myChartfour"
style=
" width: 1000px;height: calc(50vh - 84px)"
></div>
</div>
<div
class=
"division"
>
<div
style=
" width: 500px;height: calc(50vh - 84px)"
>
<div
id=
"myCharttwo"
style=
"text-align:center;width:80%;height:80%;margin:auto;padding-top:30px;"
></div>
</div>
<div
id=
"myChartthree"
style=
" width: 1000px;height: calc(50vh - 84px)"
></div>
</div>
</div>
</
template
>
<
script
>
import
{
getStatistics
}
from
"@/api/system/alarm"
;
import
*
as
echarts
from
'echarts'
;
export
default
{
name
:
"chartindex"
,
data
()
{
return
{
statistics
:{}
};
},
created
()
{
this
.
getTong
();
},
methods
:
{
getTong
()
{
getStatistics
().
then
(
response
=>
{
this
.
statistics
=
response
.
data
;
this
.
drawLine
();
this
.
drawLine2
();
this
.
drawLine3
();
this
.
drawLine4
();
});
},
drawLine
()
{
console
.
log
(
this
.
statistics
);
// 基于准备好的dom,初始化echarts实例
let
myChart1
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"myChartone"
));
// 绘制图表
myChart1
.
setOption
({
color
:[
'#ff0000'
,
'#ff7744'
,
'#ffaa33'
,
'#bbbb00'
,
'#ccff33'
],
tooltip
:
{
trigger
:
'item'
},
legend
:
{
top
:
'0'
,
left
:
'center'
},
series
:
[
{
name
:
'报警级别'
,
type
:
'pie'
,
radius
:
[
'40%'
,
'80%'
],
avoidLabelOverlap
:
false
,
//itemStyle: {
// borderRadius: 50,
// borderColor: '#fff',
// borderWidth: 5
// },
label
:
{
show
:
false
,
position
:
'center'
},
emphasis
:
{
label
:
{
show
:
true
,
fontSize
:
'30'
,
fontWeight
:
'bold'
}
},
labelLine
:
{
show
:
false
},
data
:
this
.
statistics
.
levelList
// data: [
// { value: 1048, name: '高高报' },
// { value: 735, name: '高报' },
// { value: 580, name: '低报' },
// { value: 484, name: '低低报' },
// { value: 300, name: '开关量' }
// ],
}
]
});
},
drawLine2
()
{
// 基于准备好的dom,初始化echarts实例
let
myChart1
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"myCharttwo"
));
// 绘制图表
myChart1
.
setOption
({
color
:[
'#109CF1'
,
'#ff0000'
],
angleAxis
:
{
clockwise
:
false
,
// 刻度增长是否按顺时针,默认顺时针(true)。
axisLine
:
{
show
:
false
},
axisLabel
:
{
show
:
false
},
splitLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
min
:
0
,
max
:
this
.
statistics
.
notProcessed
+
this
.
statistics
.
processed
,
//一圈的刻度值
startAngle
:
0
//初始角度
},
radiusAxis
:
{
type
:
'category'
,
data
:
[
'1'
,
'2'
,
'3'
,
'4'
],
// 极坐标径向轴中的类目,这边有几个数,
// 就代表径向轴分了几份,和series中的data对应,这样就可以撑开圆环
z
:
10
,
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
show
:
false
},
},
polar
:
{
},
series
:
[{
type
:
'bar'
,
data
:
[
0
,
0
,
0
,
this
.
statistics
.
processed
],
coordinateSystem
:
'polar'
,
name
:
'已处理'
,
roundCap
:
true
,
stack
:
'a'
,
itemStyle
:
{
borderRadius
:
10
,
borderColor
:
'#fff'
,
borderWidth
:
3
},
},
{
type
:
'bar'
,
data
:
[
0
,
0
,
0
,
this
.
statistics
.
notProcessed
],
// 前面的0,累计还是0,这样径向轴上的对应的分区总数就是0,不会显示圆环
coordinateSystem
:
'polar'
,
name
:
'未处理'
,
stack
:
'a'
,
roundCap
:
true
,
itemStyle
:
{
borderRadius
:
10
,
borderColor
:
'#fff'
,
borderWidth
:
3
},
}
],
legend
:
{
show
:
true
,
top
:
'90%'
,
// data: ['待整改', '已整改']
}
});
},
drawLine3
()
{
// 基于准备好的dom,初始化echarts实例
let
myChart1
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"myChartthree"
));
// 绘制图表
myChart1
.
setOption
({
title
:
{
text
:
'每天设备报警数量(30天)'
},
tooltip
:
{
trigger
:
'axis'
},
legend
:
{
data
:
[
'报警设备'
]
},
grid
:
{
left
:
'3%'
,
right
:
'4%'
,
bottom
:
'3%'
,
containLabel
:
true
},
toolbox
:
{
feature
:
{
saveAsImage
:
{}
}
},
xAxis
:
{
type
:
'category'
,
boundaryGap
:
false
,
data
:
this
.
statistics
.
dateLabel
// data: ['1', '2', '3', '4', '5', '6', '7','8', '9', '10', '10', '12', '13', '14',
// '15', '16', '17', '18', '19', '20','21', '22', '23', '24', '25', '26', '27', '28', '29', '30']
},
yAxis
:
{
type
:
'value'
},
series
:
[
{
name
:
'报警设备数量'
,
type
:
'line'
,
stack
:
'Total'
,
data
:
this
.
statistics
.
dateNum
// data: [150, 230, 224, 218, 135, 147, 260, 230, 224, 218, 135, 147, 260, 230, 224, 218, 135, 147,
// 230, 224, 218, 135, 147, 260, 230, 224, 218, 135, 147, 260]
}
]
});
},
drawLine4
()
{
// 基于准备好的dom,初始化echarts实例
let
myChart1
=
this
.
$echarts
.
init
(
document
.
getElementById
(
"myChartfour"
));
// 绘制图表
myChart1
.
setOption
({
legend
:
{},
tooltip
:
{},
dataset
:
{
dimensions
:
[
'product'
,
'2015'
,
'2016'
,
'2017'
,
'2018'
],
source
:
[
{
product
:
'Matcha Latte'
,
2015
:
43.3
,
2016
:
85.8
,
2017
:
93.7
,
2018
:
90.7
},
{
product
:
'Milk Tea'
,
2015
:
83.1
,
2016
:
73.4
,
2017
:
55.1
,
2018
:
90.7
},
{
product
:
'Cheese Cocoa'
,
2015
:
86.4
,
2016
:
65.2
,
2017
:
82.5
,
2018
:
90.7
},
{
product
:
'Walnut Brownie'
,
2015
:
72.4
,
2016
:
53.9
,
2017
:
39.1
,
2018
:
90.7
}
]
},
xAxis
:
{
type
:
'category'
},
yAxis
:
{},
// Declare several bar series, each will be mapped
// to a column of dataset.source by default.
series
:
[{
type
:
'bar'
},
{
type
:
'bar'
},
{
type
:
'bar'
},
{
type
:
'bar'
}]
// title: {
// text: '不同类型设备报警数量(30天)',
// },
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// type: 'shadow'
// }
// },
// grid: {
// left: '3%',
// right: '4%',
// bottom: '3%',
// containLabel: true
// },
// xAxis: [
// {
// type: 'category',
// //data: ['液位', '压力', '温度', '有毒气体', '可燃气体'],
// data:this.statistics.typeLabel,
// axisTick: {
// alignWithLabel: true
// }
// }
// ],
// yAxis: [
// {
// type: 'value'
// }
// ],
// series: [
// {
// name: '报警设备数',
// type: 'bar',
// barWidth: '60%',
// //data: [10, 52, 200, 334, 390, 330, 220]
// data: this.statistics.typeNum
// }
// ]
});
},
},
}
</
script
>
<
style
scoped
>
.division
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
flex-start
;
}
</
style
>
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