Commit 0865e1f3 authored by captainwong's avatar captainwong

update javademo

parent f2dc062d
......@@ -25,11 +25,13 @@
## Windows
1. `javac -encoding utf-8 javademo/jni/AdemcoHbLibrary.java && javah -d javademo/cpp -jni javademo.jni.AdemcoHbLibrary`
1. `javac -encoding utf-8 ./javademo/jni/AdemcoHbLibrary.java && javah -d ./javademo/cpp -jni javademo.jni.AdemcoHbLibrary`
2. 使用 `Visual Studio 2019` 打开 `ademco_hb.sln`, 以 `Release/x64` 编译 `ademco_java` 项目,可能需要修改项目属性 `C/C++` --> `Additional Include Directories`,将与 `Java` 相关的路径修改,生成 `x64/Release/ademco_java.dll`
3. `java javademo.jni.SimpleServer 12345` 进行测试
3. `javac javademo/jni/SimpleServer.java` 编译示例
4. `java javademo.jni.SimpleServer 12345` 进行测试
## 作者对 `Java` 开发不熟悉,有任何意见、建议欢迎提 `issue` 及 `pr`
......
......@@ -22,14 +22,14 @@ BOOL APIENTRY DllMain( HMODULE hModule,
}
#endif
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint
(JNIEnv*, jobject)
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_testPrint
(JNIEnv *, jobject)
{
printf("native print\n");
}
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
(JNIEnv* env, jclass clazz, jstring pack, jint pack_len)
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
(JNIEnv* env, jobject , jstring pack, jint pack_len)
{
ademco::AdemcoPacket ap;
size_t commited = 0;
......@@ -37,7 +37,7 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
std::string s = env->GetStringUTFChars(pack, &iscopy);
auto result = ap.parse(s.data(), static_cast<size_t>(pack_len), commited);
// Attempt to find the Version class.
clazz = env->FindClass("javademo/jni/AdemcoHbLibrary$ParseResult");
jclass clazz = env->FindClass("javademo/jni/AdemcoHbLibrary$ParseResult");
// If this class does not exist then return null.
if (clazz == 0)
return 0;
......@@ -61,8 +61,8 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
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)
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack
(JNIEnv* env, jobject, jint seq, jint ademco_id, jint ademco_event, jint zone, jint gg)
{
ademco::AdemcoPacket ap;
char buff[1024];
......@@ -76,8 +76,8 @@ JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack
return 0;
}
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(JNIEnv* env, jclass clazz, jint seq, jint ademco_id)
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_packAck
(JNIEnv* env, jobject, jint seq, jint ademco_id)
{
ademco::AdemcoPacket ap;
char buff[1024];
......
......@@ -9,35 +9,35 @@ extern "C" {
#endif
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePrint
* Method: testPrint
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_testPrint
(JNIEnv *, jobject);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativeParse
* Method: parse
* Signature: (Ljava/lang/String;I)Ljavademo/jni/AdemcoHbLibrary/ParseResult;
*/
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
(JNIEnv *, jclass, jstring, jint);
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
(JNIEnv *, jobject, jstring, jint);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePack
* Method: pack
* Signature: (IIIII)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack
(JNIEnv *, jclass, jint, jint, jint, jint, jint);
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack
(JNIEnv *, jobject, jint, jint, jint, jint, jint);
/*
* Class: javademo_jni_AdemcoHbLibrary
* Method: nativePackAck
* Method: packAck
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck
(JNIEnv *, jclass, jint, jint);
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_packAck
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
......
......@@ -19,7 +19,7 @@ public class AdemcoHbLibrary
}
}
private native void nativePrint();
public native void testPrint();
public class ParseResult {
// 0 解析到正确、完整的一包;
......@@ -36,7 +36,7 @@ public class AdemcoHbLibrary
* @param[in] pack_len 网络数据流有效长度
* @return ParseResult
*/
private static native ParseResult nativeParse(String pack, int pack_len);
public native ParseResult parse(String pack, int pack_len);
/*
* @brief 将远程控制命令打包成网络传输数据
......@@ -47,7 +47,7 @@ public class AdemcoHbLibrary
* @param[in] gg 分防区号
* @return String
*/
private static native String nativePack(int seq, int ademco_id, int ademco_event, int zone, int gg);
public native String pack(int seq, int ademco_id, int ademco_event, int zone, int gg);
/*
* @brief 打包ACK
......@@ -55,24 +55,12 @@ public class AdemcoHbLibrary
* @param[in] ademco_id 安定宝ID
* @return String
*/
private static native String nativePackAck(int seq, int ademco_id);
public native String packAck(int seq, int ademco_id);
public void testPprint(){ nativePrint(); }
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){
AdemcoHbLibrary lib = new AdemcoHbLibrary();
lib.testPprint();
String data = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
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);
}
// public void testPrint(){ nativePrint(); }
// 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);}
}
......@@ -7,7 +7,7 @@ public class SimpleServer {
public static void main(String[] args) {
AdemcoHbLibrary lib = new AdemcoHbLibrary();
lib.testPprint();
lib.testPrint();
// test parse
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment