Skip to content

acccccccb/buffer-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

buffer-parser

用于获取原始二进制数据并将其转换为可用消息。这可能包括诸如将数据转换为文本、在完全接收到有用的数据块时发出有用的数据,甚至验证协议等任务。

包含以下工具:

解析器

  • cCTalkParser <数据包解析器>
  • readlineParser <字符串解析器>
  • interByteTimeoutParser <数超时字节解析器>

打包器

  • dataPackager

校验器

  • xorCheck

转换器

  • abToHexArr
  • hexArrToAb
  • strToAb
  • hex2int
  • hexArrToIntArr
  • bufferToAb

interByteTimeoutParser(buffer, cb, [options]) 超时字节解析器


缓冲并在指定时间内未接收任何字节或达到最大缓冲区大小后发出数据

const options = {
    interval: 100, // 等待毫秒数
    maxBufferSize: 1024, // 缓冲区大小
};
interByteTimeoutParser(
    buffer,
    (res) => {
        // 100毫秒内没有再次调用此方法 将会执行一次这里
        // 缓冲区满 将会执行一次这里
        const str = readlineParser(res);
        console.log(str);
    },
    options
);

cCTalkParser(buffer, [operationCode]) 数据包解析器


将带有帧头、操作码、帧长度、帧尾的数据包转换为可用数据

数据结构
帧头 帧头 操作码 数据长度 数据 校验位 帧尾 帧尾
5c 5a 00 帧头之后帧尾之前的数据长度 长度不定 帧头开始校验位之前 0d 0a

<Buffer 5c 5a 00 07 0f 0d 05 07 2d 20 36 3a 0d 0a>

转换为

[{"operationCode":0,"data":[15,13,5,7,45,32,54]}]

const operationCode = 0; //操作码
const buffer = dataPackager([15, 13, 5, 7, 45, 32, 54], operationCode);
// => <Buffer 5c 5a 00 07 0f 0d 05 07 2d 20 36 3a 0d 0a>
const data = cCTalkParser(buffer);
console.log(data);
// => [{"operationCode":0,"data":[15,13,5,7,45,32,54]}]

readlineParser(string, [options]) 字符串解析器

<Buffer 43 4f 4e 4e 45 43 54 0d 0a>

转换为字符串: CONNECT,CONNECT

const buffer = Buffer.from('CONNECT\r\nCONNECT\r\n');
const str = readlineParser(buffer, {
    delimiter: '\r\n', // 换行符
    includeDelimiter: false, // 返回结果是否包含换行符
    separator: ',', // 分隔符
});
console.log(str); // => CONNECT,CONNECT

包含以下工具

dataPackager(arr, [operationCode = 0]) 打包器

为数组添加上帧头、操作码、数据长度、校验位、帧尾 并返回 Buffer

const operationCode = 5; //操作码
const buffer = dataPackager([15, 13, 5, 7, 45, 32, 54], operationCode);
// => <Buffer 5c 5a 00 07 0f 0d 05 07 2d 20 36 3a 0d 0a>

xorCheck(arr) 数据校验

异或校验计算

const arr = [15, 13, 5, 7, 45, 32, 54];
const xor = xor(arr);
// => 3a

About

用于获取原始二进制数据并将其转换为可用消息。这可能包括诸如将数据转换为文本、在完全接收到有用的数据块时发出有用的数据,甚至验证协议等任务。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors