Commit 375d86bf authored by captainwong's avatar captainwong

testing node

parent 9713cdaf
...@@ -3,6 +3,8 @@ swig/com/hb3344/ademco/ ...@@ -3,6 +3,8 @@ swig/com/hb3344/ademco/
libademco_java_wrap.c libademco_java_wrap.c
libademco_csharp_wrap.c libademco_csharp_wrap.c
libademco_python_wrap.c libademco_python_wrap.c
libademco_wrap.cxx
build/
.vscode/ .vscode/
.vs/ .vs/
......
...@@ -245,6 +245,7 @@ const char* ademcoEventToString(AdemcoEvent ademcoEvent) { ...@@ -245,6 +245,7 @@ const char* ademcoEventToString(AdemcoEvent ademcoEvent) {
} }
} }
#ifdef ADEMCO_ENABLE_CHINESE
const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) { const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) {
switch (ademcoEvent) { switch (ademcoEvent) {
case EVENT_ARM: return "布防"; case EVENT_ARM: return "布防";
...@@ -324,6 +325,7 @@ const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) { ...@@ -324,6 +325,7 @@ const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) {
default: return "未定义的安定宝事件"; default: return "未定义的安定宝事件";
} }
} }
#endif
static const uint16_t crc16Table[256] = { static const uint16_t crc16Table[256] = {
/* DEFINE THE FIRST ORDER POLYINOMIAL TABLE */ /* DEFINE THE FIRST ORDER POLYINOMIAL TABLE */
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
extern "C" { extern "C" {
#endif #endif
#ifdef SWIG #if defined(SWIGJAVA) || defined(SWIGCSHARP)
#define ademco_char_t uint8_t #define ademco_char_t uint8_t
#else #else
#define ademco_char_t char #define ademco_char_t char
...@@ -377,8 +377,9 @@ ADEMCO_EXPORT_SYMBOL AdemcoEventLevel ademcoGetEventLevel(AdemcoEvent ademcoEven ...@@ -377,8 +377,9 @@ ADEMCO_EXPORT_SYMBOL AdemcoEventLevel ademcoGetEventLevel(AdemcoEvent ademcoEven
//! 获取异常恢复事件所对应的异常事件 //! 获取异常恢复事件所对应的异常事件
ADEMCO_EXPORT_SYMBOL AdemcoEvent ademcoGetExceptionEventByResumeEvent(AdemcoEvent resumeEvent); ADEMCO_EXPORT_SYMBOL AdemcoEvent ademcoGetExceptionEventByResumeEvent(AdemcoEvent resumeEvent);
ADEMCO_EXPORT_SYMBOL const char* ademcoEventToString(AdemcoEvent ademcoEvent); ADEMCO_EXPORT_SYMBOL const char* ademcoEventToString(AdemcoEvent ademcoEvent);
#ifdef ADEMCO_ENABLE_CHINESE
ADEMCO_EXPORT_SYMBOL const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent); ADEMCO_EXPORT_SYMBOL const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent);
#endif
//////////////////////// AdemcoDataSegment functions //////////////////////// //////////////////////// AdemcoDataSegment functions ////////////////////////
......
...@@ -343,16 +343,6 @@ const char* hbMachineStatusToString(HbMachineStatus status) { ...@@ -343,16 +343,6 @@ const char* hbMachineStatusToString(HbMachineStatus status) {
} }
} }
const char* hbMachineStatusToStringChinese(HbMachineStatus status) {
switch (status) {
case HMS_ARM: return "布防";
case HMS_HALF_ARM: return "半布防";
case HMS_DISARM: return "撤防";
case HMS_SETTING: return "设置";
default: return "InvalidMachineStatus";
}
}
const char* hbMachineTypeToString(HbMachineType type) { const char* hbMachineTypeToString(HbMachineType type) {
switch (type) { switch (type) {
case HMT_WIFI: return "0 WiFi"; case HMT_WIFI: return "0 WiFi";
...@@ -372,25 +362,6 @@ const char* hbMachineTypeToString(HbMachineType type) { ...@@ -372,25 +362,6 @@ const char* hbMachineTypeToString(HbMachineType type) {
} }
} }
const char* hbMachineTypeToStringChinese(HbMachineType type) {
switch (type) {
case HMT_WIFI: return "0 WiFi主机";
case HMT_CAMERA: return "1 摄像头主机";
case HMT_GPRS_IOT: return "2 简化的物联卡主机";
case HMT_NETMOD: return "3 网络模块+工程主机";
case HMT_GPRS: return "4 GPRS主机";
case HMT_LCD: return "5 液晶主机";
case HMT_WIRED: return "6 网线主机";
case HMT_TRUE_COLOR: return "7 真彩主机";
case HMT_3_SECTION: return "8 三区段主机";
case HMT_IOT: return "9 物联卡主机";
case HMT_GPRS_PHONE: return "10 GPRS主机能打电话";
case HMT_NB: return "11 NB报警接收主机";
case HMT_WIFI2: return "12 WiFi主机新版";
default: return "未知主机";
}
}
const char* hbZonePropertyToString(HbZoneProperty zp) { const char* hbZonePropertyToString(HbZoneProperty zp) {
switch (zp) { switch (zp) {
case HZP_BUGLAR: return "HZP_BUGLAR"; case HZP_BUGLAR: return "HZP_BUGLAR";
...@@ -413,6 +384,36 @@ const char* hbZonePropertyToString(HbZoneProperty zp) { ...@@ -413,6 +384,36 @@ const char* hbZonePropertyToString(HbZoneProperty zp) {
} }
} }
#ifdef ADEMCO_ENABLE_CHINESE
const char* hbMachineStatusToStringChinese(HbMachineStatus status) {
switch (status) {
case HMS_ARM: return "布防";
case HMS_HALF_ARM: return "半布防";
case HMS_DISARM: return "撤防";
case HMS_SETTING: return "设置";
default: return "InvalidMachineStatus";
}
}
const char* hbMachineTypeToStringChinese(HbMachineType type) {
switch (type) {
case HMT_WIFI: return "0 WiFi主机";
case HMT_CAMERA: return "1 摄像头主机";
case HMT_GPRS_IOT: return "2 简化的物联卡主机";
case HMT_NETMOD: return "3 网络模块+工程主机";
case HMT_GPRS: return "4 GPRS主机";
case HMT_LCD: return "5 液晶主机";
case HMT_WIRED: return "6 网线主机";
case HMT_TRUE_COLOR: return "7 真彩主机";
case HMT_3_SECTION: return "8 三区段主机";
case HMT_IOT: return "9 物联卡主机";
case HMT_GPRS_PHONE: return "10 GPRS主机能打电话";
case HMT_NB: return "11 NB报警接收主机";
case HMT_WIFI2: return "12 WiFi主机新版";
default: return "未知主机";
}
}
const char* hbZonePropertyToStringChinese(HbZoneProperty zp) { const char* hbZonePropertyToStringChinese(HbZoneProperty zp) {
switch (zp) { switch (zp) {
case HZP_BUGLAR: return "匪警全局"; case HZP_BUGLAR: return "匪警全局";
...@@ -434,6 +435,7 @@ const char* hbZonePropertyToStringChinese(HbZoneProperty zp) { ...@@ -434,6 +435,7 @@ const char* hbZonePropertyToStringChinese(HbZoneProperty zp) {
default: return "无效属性"; default: return "无效属性";
} }
} }
#endif
const char* hbGetZoneFormatString(HbMachineType type) { const char* hbGetZoneFormatString(HbMachineType type) {
uint16_t zone = hbZoneMax(type); uint16_t zone = hbZoneMax(type);
......
...@@ -391,11 +391,13 @@ ADEMCO_EXPORT_SYMBOL AdemcoEvent hbMachineTypeToAdemcoEvent(HbMachineType type); ...@@ -391,11 +391,13 @@ ADEMCO_EXPORT_SYMBOL AdemcoEvent hbMachineTypeToAdemcoEvent(HbMachineType type);
ADEMCO_EXPORT_SYMBOL HbMachineType hbMachineTypeFromAdemcoEvent(AdemcoEvent ademcoEvent); ADEMCO_EXPORT_SYMBOL HbMachineType hbMachineTypeFromAdemcoEvent(AdemcoEvent ademcoEvent);
ADEMCO_EXPORT_SYMBOL AdemcoEvent hbZonePropertyToAdemcoEvent(HbZoneProperty zp); ADEMCO_EXPORT_SYMBOL AdemcoEvent hbZonePropertyToAdemcoEvent(HbZoneProperty zp);
ADEMCO_EXPORT_SYMBOL const char* hbMachineStatusToString(HbMachineStatus status); ADEMCO_EXPORT_SYMBOL const char* hbMachineStatusToString(HbMachineStatus status);
ADEMCO_EXPORT_SYMBOL const char* hbMachineStatusToStringChinese(HbMachineStatus status);
ADEMCO_EXPORT_SYMBOL const char* hbMachineTypeToString(HbMachineType type); ADEMCO_EXPORT_SYMBOL const char* hbMachineTypeToString(HbMachineType type);
ADEMCO_EXPORT_SYMBOL const char* hbMachineTypeToStringChinese(HbMachineType type);
ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToString(HbZoneProperty zp); ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToString(HbZoneProperty zp);
#ifdef ADEMCO_ENABLE_CHINESE
ADEMCO_EXPORT_SYMBOL const char* hbMachineStatusToStringChinese(HbMachineStatus status);
ADEMCO_EXPORT_SYMBOL const char* hbMachineTypeToStringChinese(HbMachineType type);
ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToStringChinese(HbZoneProperty zp); ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToStringChinese(HbZoneProperty zp);
#endif
ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type); ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type);
// 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1] // 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1]
......
...@@ -39,3 +39,25 @@ brew install swig ...@@ -39,3 +39,25 @@ brew install swig
### 2.2 其他系统 ### 2.2 其他系统
请自行研究。 请自行研究。
## 3. Node.js 绑定
### Windows 环境
1. 安装 `node-gyp`: `npm install -g node-gyp`
2. 使用 `swig` 生成代码
```
swig -c++ -javascript -node libademco.swig
```
将生成 `libademco_wrap.cxx`.
3. 编译
执行 `node-gyp configure build`,将以配置文件 `binding.gyp` 生成工程并编译得到 `libadmeco_js.node``Windows` 下应为 `build/Release/libadmeoc_js.node`
4. 运行示例
`node nodejs-demo.js`
{
"targets":[
{
"target_name": "libademco_js",
"sources":[
"libademco_wrap.cxx",
"../ademco.c",
"../hb_com.c",
]
}
]
}
\ No newline at end of file
const assert = require('assert');
const libademco = require('./build/Release/libademco_js');
libademco.ademcoPrint("hello nodejs", "hello nodejs".length);
console.log(libademco);
console.log("test parse...");
var str = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
var cb = libademco.new_size_tp();
var pkt = new libademco.AdemcoPacket();
var res = libademco.ademcoPacketParse(str, str.length, pkt, cb);
assert.strictEqual(res, libademco.RESULT_OK);
assert.strictEqual(libademco.size_tp_value(cb), str.length);
assert.strictEqual(pkt.crc, 0xC5C3);
assert.strictEqual(pkt.len, 0x0053);
assert.strictEqual(pkt.id, libademco.AID_HB);
assert.strictEqual(pkt.seq, 0);
assert.strictEqual(pkt.acct, "90219125916578");
assert.strictEqual(pkt.data.ademcoId, 0);
assert.strictEqual(pkt.data.ademcoEvent, libademco.EVENT_I_AM_WIRE_MACHINE);
assert.strictEqual(pkt.data.gg, 0);
assert.strictEqual(pkt.data.zone, 0);
console.log("res=%d, commited=%d", res, libademco.size_tp_value(cb));
\ No newline at end of file
C:\Users\Jack\Downloads\swigwin-4.1.1\swig.exe -c++ -javascript -node libademco.swig
node-gyp configure build
rem node nodejs-demo.js
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