Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ademco_hb
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
captainwong
ademco_hb
Commits
b5c539d7
Commit
b5c539d7
authored
May 27, 2020
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test pack/packAck ok
parent
bee6491a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
109 additions
and
36 deletions
+109
-36
javademo.sh
javademo.sh
+2
-1
dllmain.cpp
javademo/cpp/dllmain.cpp
+29
-0
javademo_jni_AdemcoHbLibrary.h
javademo/cpp/javademo_jni_AdemcoHbLibrary.h
+16
-0
AdemcoHbLibrary.java
javademo/jni/AdemcoHbLibrary.java
+20
-24
SimpleServer.java
javademo/jni/SimpleServer.java
+42
-11
No files found.
javademo.sh
View file @
b5c539d7
...
@@ -7,4 +7,5 @@ JAVA_INCLUDE='/usr/lib/jvm/java-8-openjdk-amd64/include'
...
@@ -7,4 +7,5 @@ JAVA_INCLUDE='/usr/lib/jvm/java-8-openjdk-amd64/include'
javac
-encoding
utf-8 javademo/jni/AdemcoHbLibrary.java
&&
javah
-d
javademo/cpp
-jni
javademo.jni.AdemcoHbLibrary
javac
-encoding
utf-8 javademo/jni/AdemcoHbLibrary.java
&&
javah
-d
javademo/cpp
-jni
javademo.jni.AdemcoHbLibrary
g++
-std
=
c++11
$JAVADEMO_SRC
/pch.cpp
$JAVADEMO_SRC
/dllmain.cpp
-I
$JAVADEMO_SRC
-Iinclude
-I
$JAVA_INCLUDE
-I
$JAVA_INCLUDE
/linux
-fPIC
-shared
-o
build/libademcojava.so
g++
-std
=
c++11
$JAVADEMO_SRC
/pch.cpp
$JAVADEMO_SRC
/dllmain.cpp
-I
$JAVADEMO_SRC
-Iinclude
-I
$JAVA_INCLUDE
-I
$JAVA_INCLUDE
/linux
-fPIC
-shared
-o
build/libademcojava.so
java javademo.jni.AdemcoHbLibrary
javac
-encoding
utf-8 javademo/jni/SimpleServer.java
java javademo.jni.SimpleServer 12345
javademo/cpp/dllmain.cpp
View file @
b5c539d7
...
@@ -63,3 +63,32 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
...
@@ -63,3 +63,32 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
return
obj
;
return
obj
;
}
}
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativePack
(
JNIEnv
*
env
,
jclass
clazz
,
jint
seq
,
jint
ademco_id
,
jint
ademco_event
,
jint
zone
,
jint
gg
)
{
ademco
::
AdemcoPacket
ap
;
char
buff
[
1024
];
auto
res
=
ap
.
make_hb
(
buff
,
sizeof
(
buff
),
static_cast
<
uint16_t
>
(
seq
),
nullptr
,
static_cast
<
size_t
>
(
ademco_id
),
static_cast
<
unsigned
char
>
(
gg
),
static_cast
<
ademco
::
ADEMCO_EVENT
>
(
ademco_event
),
static_cast
<
size_t
>
(
zone
));
if
(
res
>
0
)
{
buff
[
res
]
=
0
;
return
env
->
NewStringUTF
(
buff
);
}
return
0
;
}
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(
JNIEnv
*
env
,
jclass
clazz
,
jint
seq
,
jint
ademco_id
)
{
ademco
::
AdemcoPacket
ap
;
char
buff
[
1024
];
auto
res
=
ap
.
make_ack
(
buff
,
sizeof
(
buff
),
static_cast
<
uint16_t
>
(
seq
),
nullptr
,
static_cast
<
size_t
>
(
ademco_id
));
if
(
res
>
0
)
{
buff
[
res
]
=
0
;
return
env
->
NewStringUTF
(
buff
);
}
return
0
;
}
javademo/cpp/javademo_jni_AdemcoHbLibrary.h
View file @
b5c539d7
...
@@ -23,6 +23,22 @@ JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint
...
@@ -23,6 +23,22 @@ JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint
JNIEXPORT
jobject
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativeParse
JNIEXPORT
jobject
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativeParse
(
JNIEnv
*
,
jclass
,
jstring
,
jint
);
(
JNIEnv
*
,
jclass
,
jstring
,
jint
);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePack
* Signature: (IIIII)Ljava/lang/String;
*/
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativePack
(
JNIEnv
*
,
jclass
,
jint
,
jint
,
jint
,
jint
,
jint
);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePackAck
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT
jstring
JNICALL
Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(
JNIEnv
*
,
jclass
,
jint
,
jint
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
...
...
javademo/jni/AdemcoHbLibrary.java
View file @
b5c539d7
...
@@ -5,8 +5,7 @@ import java.nio.file.FileSystems;
...
@@ -5,8 +5,7 @@ import java.nio.file.FileSystems;
public
class
AdemcoHbLibrary
public
class
AdemcoHbLibrary
{
{
static
static
{
{
if
(
System
.
getProperty
(
"os.name"
).
startsWith
(
"Windows"
))
{
// Windows
if
(
System
.
getProperty
(
"os.name"
).
startsWith
(
"Windows"
))
{
// Windows
System
.
load
(
System
.
load
(
FileSystems
.
getDefault
()
FileSystems
.
getDefault
()
...
@@ -39,11 +38,30 @@ public class AdemcoHbLibrary
...
@@ -39,11 +38,30 @@ public class AdemcoHbLibrary
*/
*/
private
static
native
ParseResult
nativeParse
(
String
pack
,
int
pack_len
);
private
static
native
ParseResult
nativeParse
(
String
pack
,
int
pack_len
);
/*
* @brief 将远程控制命令打包成网络传输数据
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return String
*/
private
static
native
String
nativePack
(
int
seq
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
);
/*
* @brief 打包ACK
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @return String
*/
private
static
native
String
nativePackAck
(
int
seq
,
int
ademco_id
);
public
void
testPprint
(){
nativePrint
();
}
public
void
testPprint
(){
nativePrint
();
}
public
ParseResult
parse
(
String
pack
,
int
pack_len
){
return
nativeParse
(
pack
,
pack_len
);}
public
ParseResult
parse
(
String
pack
,
int
pack_len
){
return
nativeParse
(
pack
,
pack_len
);}
public
String
pack
(
int
seq
,
int
ademco_id
,
int
ademco_event
,
int
zone
,
int
gg
){
return
nativePack
(
seq
,
ademco_id
,
ademco_event
,
zone
,
gg
);}
public
String
packAck
(
int
seq
,
int
ademco_id
){
return
nativePackAck
(
seq
,
ademco_id
);}
public
static
void
main
(
String
[]
args
){
public
static
void
main
(
String
[]
args
){
AdemcoHbLibrary
lib
=
new
AdemcoHbLibrary
();
AdemcoHbLibrary
lib
=
new
AdemcoHbLibrary
();
...
@@ -57,26 +75,4 @@ public class AdemcoHbLibrary
...
@@ -57,26 +75,4 @@ public class AdemcoHbLibrary
}
}
/*
* @brief 将远程控制命令打包成网络传输数据
* @param[in|out] buff 缓冲区
* @param[in] buff_len 缓冲区长度
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @param[in] ademco_event 安定宝事件码
* @param[in] zone 防区号
* @param[in] gg 分防区号
* @return 大于0 成功,返回值代表包长;0 buff空间不足
*/
//DLL_FUNC int pack(char* buff, int buff_len, int seq, int ademco_id, int ademco_event, int zone, int gg);
/*
* @brief 打包ACK
* @param[in|out] buff 缓冲区
* @param[in] buff_len 缓冲区长度
* @param[in] seq 序号
* @param[in] ademco_id 安定宝ID
* @return 大于0 成功,返回值代表包长;0 buff空间不足
*/
//DLL_FUNC int pack_ack(char* buff, int buff_len, int seq, int ademco_id);
}
}
javademo/jni/SimpleServer.java
View file @
b5c539d7
...
@@ -5,22 +5,53 @@ import java.net.*;
...
@@ -5,22 +5,53 @@ import java.net.*;
public
class
SimpleServer
{
public
class
SimpleServer
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
AdemcoHbLibrary
lib
=
new
AdemcoHbLibrary
();
lib
.
testPprint
();
// test parse
{
System
.
out
.
println
(
"testing parse..."
);
String
data
=
"\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r"
;
System
.
out
.
println
(
"using data="
+
data
);
AdemcoHbLibrary
.
ParseResult
res
=
lib
.
parse
(
data
,
data
.
length
());
assert
(
res
.
result
==
0
);
assert
(
res
.
cb_commited
==
data
.
length
());
System
.
out
.
println
(
"parse result="
+
res
.
result
+
",cb_commited="
+
res
.
cb_commited
);
}
// test pack
{
System
.
out
.
println
(
"testing pack..."
);
System
.
out
.
println
(
"using seq=1234, ademco_id=666666, event=3400, zone=0, gg=0"
);
String
data
=
lib
.
pack
(
1234
,
666666
,
3400
,
0
,
0
);
System
.
out
.
println
(
"data="
+
data
);
}
// test pack ack
{
System
.
out
.
println
(
"testing packAck..."
);
System
.
out
.
println
(
"using seq=1234, ademco_id=666666"
);
String
data
=
lib
.
packAck
(
1234
,
666666
);
System
.
out
.
println
(
"data="
+
data
);
}
int
port
=
12345
;
int
port
=
12345
;
if
(
args
.
length
>
0
){
if
(
args
.
length
>
0
){
port
=
Integer
.
parseInt
(
args
[
0
]);
port
=
Integer
.
parseInt
(
args
[
0
]);
}
}
//
try (ServerSocket serverSocket = new ServerSocket(port)) {
try
(
ServerSocket
serverSocket
=
new
ServerSocket
(
port
))
{
//
System.out.println("Server is listening on port " + port);
System
.
out
.
println
(
"Server is listening on port "
+
port
);
//
while (true) {
while
(
true
)
{
//
Socket socket = serverSocket.accept();
Socket
socket
=
serverSocket
.
accept
();
//
System.out.println("New client connected");
System
.
out
.
println
(
"New client connected"
);
//
new SimpleServerThread(socket).start();
new
SimpleServerThread
(
socket
).
start
();
//
}
}
//
} catch (IOException ex) {
}
catch
(
IOException
ex
)
{
//
System.out.println("Server exception: " + ex.getMessage());
System
.
out
.
println
(
"Server exception: "
+
ex
.
getMessage
());
//
ex.printStackTrace();
ex
.
printStackTrace
();
//
}
}
}
}
}
}
\ No newline at end of file
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