Commit 375d86bf authored by captainwong's avatar captainwong

testing node

parent 9713cdaf
......@@ -3,6 +3,8 @@ swig/com/hb3344/ademco/
libademco_java_wrap.c
libademco_csharp_wrap.c
libademco_python_wrap.c
libademco_wrap.cxx
build/
.vscode/
.vs/
......
......@@ -245,6 +245,7 @@ const char* ademcoEventToString(AdemcoEvent ademcoEvent) {
}
}
#ifdef ADEMCO_ENABLE_CHINESE
const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) {
switch (ademcoEvent) {
case EVENT_ARM: return "布防";
......@@ -324,6 +325,7 @@ const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent) {
default: return "未定义的安定宝事件";
}
}
#endif
static const uint16_t crc16Table[256] = {
/* DEFINE THE FIRST ORDER POLYINOMIAL TABLE */
......
......@@ -35,7 +35,7 @@
extern "C" {
#endif
#ifdef SWIG
#if defined(SWIGJAVA) || defined(SWIGCSHARP)
#define ademco_char_t uint8_t
#else
#define ademco_char_t char
......@@ -377,8 +377,9 @@ ADEMCO_EXPORT_SYMBOL AdemcoEventLevel ademcoGetEventLevel(AdemcoEvent ademcoEven
//! 获取异常恢复事件所对应的异常事件
ADEMCO_EXPORT_SYMBOL AdemcoEvent ademcoGetExceptionEventByResumeEvent(AdemcoEvent resumeEvent);
ADEMCO_EXPORT_SYMBOL const char* ademcoEventToString(AdemcoEvent ademcoEvent);
#ifdef ADEMCO_ENABLE_CHINESE
ADEMCO_EXPORT_SYMBOL const char* ademcoEventToStringChinese(AdemcoEvent ademcoEvent);
#endif
//////////////////////// AdemcoDataSegment functions ////////////////////////
......
......@@ -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) {
switch (type) {
case HMT_WIFI: return "0 WiFi";
......@@ -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) {
switch (zp) {
case HZP_BUGLAR: return "HZP_BUGLAR";
......@@ -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) {
switch (zp) {
case HZP_BUGLAR: return "匪警全局";
......@@ -434,6 +435,7 @@ const char* hbZonePropertyToStringChinese(HbZoneProperty zp) {
default: return "无效属性";
}
}
#endif
const char* hbGetZoneFormatString(HbMachineType type) {
uint16_t zone = hbZoneMax(type);
......
......@@ -391,11 +391,13 @@ ADEMCO_EXPORT_SYMBOL AdemcoEvent hbMachineTypeToAdemcoEvent(HbMachineType type);
ADEMCO_EXPORT_SYMBOL HbMachineType hbMachineTypeFromAdemcoEvent(AdemcoEvent ademcoEvent);
ADEMCO_EXPORT_SYMBOL AdemcoEvent hbZonePropertyToAdemcoEvent(HbZoneProperty zp);
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* hbMachineTypeToStringChinese(HbMachineType type);
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);
#endif
ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type);
// 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1]
......
......@@ -39,3 +39,25 @@ brew install swig
### 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