Commit 0865e1f3 authored by captainwong's avatar captainwong

update javademo

parent f2dc062d
...@@ -25,11 +25,13 @@ ...@@ -25,11 +25,13 @@
## Windows ## 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` 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` ## 作者对 `Java` 开发不熟悉,有任何意见、建议欢迎提 `issue` 及 `pr`
......
...@@ -22,14 +22,14 @@ BOOL APIENTRY DllMain( HMODULE hModule, ...@@ -22,14 +22,14 @@ BOOL APIENTRY DllMain( HMODULE hModule,
} }
#endif #endif
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_testPrint
(JNIEnv*, jobject) (JNIEnv *, jobject)
{ {
printf("native print\n"); printf("native print\n");
} }
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
(JNIEnv* env, jclass clazz, jstring pack, jint pack_len) (JNIEnv* env, jobject , jstring pack, jint pack_len)
{ {
ademco::AdemcoPacket ap; ademco::AdemcoPacket ap;
size_t commited = 0; size_t commited = 0;
...@@ -37,7 +37,7 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse ...@@ -37,7 +37,7 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
std::string s = env->GetStringUTFChars(pack, &iscopy); std::string s = env->GetStringUTFChars(pack, &iscopy);
auto result = ap.parse(s.data(), static_cast<size_t>(pack_len), commited); auto result = ap.parse(s.data(), static_cast<size_t>(pack_len), commited);
// Attempt to find the Version class. // 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 this class does not exist then return null.
if (clazz == 0) if (clazz == 0)
return 0; return 0;
...@@ -61,8 +61,8 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse ...@@ -61,8 +61,8 @@ JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse
return obj; return obj;
} }
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack
(JNIEnv* env, jclass clazz, jint seq, jint ademco_id, jint ademco_event, jint zone, jint gg) (JNIEnv* env, jobject, jint seq, jint ademco_id, jint ademco_event, jint zone, jint gg)
{ {
ademco::AdemcoPacket ap; ademco::AdemcoPacket ap;
char buff[1024]; char buff[1024];
...@@ -76,8 +76,8 @@ JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack ...@@ -76,8 +76,8 @@ JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack
return 0; return 0;
} }
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_packAck
(JNIEnv* env, jclass clazz, jint seq, jint ademco_id) (JNIEnv* env, jobject, jint seq, jint ademco_id)
{ {
ademco::AdemcoPacket ap; ademco::AdemcoPacket ap;
char buff[1024]; char buff[1024];
......
...@@ -9,35 +9,35 @@ extern "C" { ...@@ -9,35 +9,35 @@ extern "C" {
#endif #endif
/* /*
* Class: javademo_jni_AdemcoHbLibrary * Class: javademo_jni_AdemcoHbLibrary
* Method: nativePrint * Method: testPrint
* Signature: ()V * Signature: ()V
*/ */
JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePrint JNIEXPORT void JNICALL Java_javademo_jni_AdemcoHbLibrary_testPrint
(JNIEnv *, jobject); (JNIEnv *, jobject);
/* /*
* Class: javademo_jni_AdemcoHbLibrary * Class: javademo_jni_AdemcoHbLibrary
* Method: nativeParse * Method: parse
* Signature: (Ljava/lang/String;I)Ljavademo/jni/AdemcoHbLibrary/ParseResult; * Signature: (Ljava/lang/String;I)Ljavademo/jni/AdemcoHbLibrary/ParseResult;
*/ */
JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_nativeParse JNIEXPORT jobject JNICALL Java_javademo_jni_AdemcoHbLibrary_parse
(JNIEnv *, jclass, jstring, jint); (JNIEnv *, jobject, jstring, jint);
/* /*
* Class: javademo_jni_AdemcoHbLibrary * Class: javademo_jni_AdemcoHbLibrary
* Method: nativePack * Method: pack
* Signature: (IIIII)Ljava/lang/String; * Signature: (IIIII)Ljava/lang/String;
*/ */
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePack JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_pack
(JNIEnv *, jclass, jint, jint, jint, jint, jint); (JNIEnv *, jobject, jint, jint, jint, jint, jint);
/* /*
* Class: javademo_jni_AdemcoHbLibrary * Class: javademo_jni_AdemcoHbLibrary
* Method: nativePackAck * Method: packAck
* Signature: (II)Ljava/lang/String; * Signature: (II)Ljava/lang/String;
*/ */
JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_nativePackAck JNIEXPORT jstring JNICALL Java_javademo_jni_AdemcoHbLibrary_packAck
(JNIEnv *, jclass, jint, jint); (JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -19,7 +19,7 @@ public class AdemcoHbLibrary ...@@ -19,7 +19,7 @@ public class AdemcoHbLibrary
} }
} }
private native void nativePrint(); public native void testPrint();
public class ParseResult { public class ParseResult {
// 0 解析到正确、完整的一包; // 0 解析到正确、完整的一包;
...@@ -36,7 +36,7 @@ public class AdemcoHbLibrary ...@@ -36,7 +36,7 @@ public class AdemcoHbLibrary
* @param[in] pack_len 网络数据流有效长度 * @param[in] pack_len 网络数据流有效长度
* @return ParseResult * @return ParseResult
*/ */
private static native ParseResult nativeParse(String pack, int pack_len); public native ParseResult parse(String pack, int pack_len);
/* /*
* @brief 将远程控制命令打包成网络传输数据 * @brief 将远程控制命令打包成网络传输数据
...@@ -47,7 +47,7 @@ public class AdemcoHbLibrary ...@@ -47,7 +47,7 @@ public class AdemcoHbLibrary
* @param[in] gg 分防区号 * @param[in] gg 分防区号
* @return String * @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 * @brief 打包ACK
...@@ -55,24 +55,12 @@ public class AdemcoHbLibrary ...@@ -55,24 +55,12 @@ public class AdemcoHbLibrary
* @param[in] ademco_id 安定宝ID * @param[in] ademco_id 安定宝ID
* @return String * @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 void testPrint(){ 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 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 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);
}
} }
...@@ -7,7 +7,7 @@ public class SimpleServer { ...@@ -7,7 +7,7 @@ public class SimpleServer {
public static void main(String[] args) { public static void main(String[] args) {
AdemcoHbLibrary lib = new AdemcoHbLibrary(); AdemcoHbLibrary lib = new AdemcoHbLibrary();
lib.testPprint(); lib.testPrint();
// test parse // 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