json stuff
This commit is contained in:
parent
41a38f2d50
commit
3d551201e8
@ -52,6 +52,10 @@ export namespace MeterbusLibLongFrame {
|
||||
this._signature = this._data.slice(10, 12)
|
||||
}
|
||||
|
||||
toJSON() : any {
|
||||
return MeterbusLibUtils.jsonPrepaper(this, ["_data"])
|
||||
}
|
||||
|
||||
getJSON() : string {
|
||||
return JSON.stringify(this)
|
||||
}
|
||||
|
@ -15,6 +15,9 @@ let inputOkLongFrame_1phase_electric = "68 38 38 68 08 53 72 17 00 13 00 2E 19 2
|
||||
let inputNOkLongFrame_1phase_electric_wrong_medium = "68 38 38 68 08 53 72 17 00 13 00 2E 19 24 FE D6 00 00 00 8C 10 04 01 02 00 00 8C 11 04 01 02 00 00 02 FD C9 FF 01 E4 00 02 FD DB FF 01 03 00 02 AC FF 01 01 00 82 40 AC FF 01 FA FF 1c 16"
|
||||
let inputNOkLongFrame_1phase_electric_wrong_signature = "68 38 38 68 08 53 72 17 00 13 00 2E 19 24 02 D6 00 00 01 8C 10 04 01 02 00 00 8C 11 04 01 02 00 00 02 FD C9 FF 01 E4 00 02 FD DB FF 01 03 00 02 AC FF 01 01 00 82 40 AC FF 01 FA FF 21 16"
|
||||
|
||||
let json_1phase_electric = '{"telegram":[104,56,56,104,8,83,114,23,0,19,0,46,25,36,2,214,0,0,0,140,16,4,1,2,0,0,140,17,4,1,2,0,0,2,253,201,255,1,228,0,2,253,219,255,1,3,0,2,172,255,1,1,0,130,64,172,255,1,250,255,32,22],"cField":8,"address":83,"ciField":114,"fixedDataHeader":{"identNo":17001300,"manufacturer":"FIN","version":36,"medium":"Electrity","accessNo":214,"status":0,"signature":[0,0]}}'
|
||||
|
||||
|
||||
// electricity
|
||||
let inputOkLongFrame_3phase_electric = "68 92 92 68 08 50 72 81 14 01 11 2E 19 16 02 88 00 00 00 8C 10 04 58 43 86 00 8C 11 04 58 43 86 00 8C 20 04 00 00 00 00 8C 21 04 00 00 00 00 02 FD C9 FF 01 E4 00 02 FD DB FF 01 5A 00 02 AC FF 01 D2 00 82 40 AC FF 01 00 00 02 FD C9 FF 02 DF 00 02 FD DB FF 02 0F 00 02 AC FF 02 21 00 82 40 AC FF 02 FD FF 02 FD C9 FF 03 E3 00 02 FD DB FF 03 04 00 02 AC FF 03 02 00 82 40 AC FF 03 F4 FF 02 FF 68 00 00 02 AC FF 00 F5 00 82 40 AC FF 00 F1 FF 01 FF 13 00 F4 16"
|
||||
|
||||
@ -173,6 +176,9 @@ describe('The Meterbus Library', () => {
|
||||
expect((telegram.frame as MeterbusLibLongFrame.LongFrame).fixedDataHeader.signature)
|
||||
.to.deep.equal([0,0])
|
||||
})
|
||||
it('should prepare itself as JSON', () => {
|
||||
expect((telegram.frame as MeterbusLibLongFrame.LongFrame).getJSON()).to.equal(json_1phase_electric)
|
||||
})
|
||||
})
|
||||
|
||||
})
|
@ -1,5 +1,5 @@
|
||||
import {MeterbusLibExceptions} from './exceptions'
|
||||
|
||||
import {MeterbusLibUtils} from './utils'
|
||||
|
||||
export namespace MeterbusLibFrames {
|
||||
export abstract class Frame {
|
||||
@ -19,6 +19,16 @@ export namespace MeterbusLibFrames {
|
||||
|
||||
}
|
||||
|
||||
|
||||
toJSON() : any {
|
||||
return MeterbusLibUtils.jsonPrepaper(this, ["_startCharacter", "_frameLength",
|
||||
"_firstPayload", "_payloadLength" ])
|
||||
}
|
||||
|
||||
getJSON() : string {
|
||||
return JSON.stringify(this)
|
||||
}
|
||||
|
||||
verifyChecksumAndEnd() {
|
||||
if (this._firstPayload != 0) {
|
||||
if (this._telegram[this._telegram.length - 1] != 0x16) {
|
||||
|
17
src/utils.ts
17
src/utils.ts
@ -13,4 +13,19 @@ export namespace MeterbusLibUtils {
|
||||
let v : number = (data[1] << 8) + data[0]
|
||||
return String.fromCharCode((((v >> 10) & 0x1f) + 64), (((v >> 5) & 0x1f) + 64), ((v & 0x1f) + 64))
|
||||
}
|
||||
}
|
||||
|
||||
export function jsonPrepaper(obj:any, hideKeys:string[]) : any {
|
||||
let dup = {}
|
||||
for (let key in obj) {
|
||||
if (hideKeys.indexOf(key) == -1) {
|
||||
//if (key[0] == "_") {
|
||||
// key = key.slice(1)
|
||||
//}
|
||||
let dkey = (key[0] == "_") ? key.slice(1) : key
|
||||
dup[dkey] = obj[key]
|
||||
}
|
||||
}
|
||||
return dup
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user