I used 3 months to turn my 20 years of industrial debugging experience into a WeChat mini program
High point: 20mA → 10bar
[5] Principle and Implementation of CRC16 Algorithm
I am an industrial automation engineer, Employment 20 Year, Waiting for equipment manufacturers, Integrators, I have also worked as the first party.
These years, I have seen too many engineers on site feeling embarrassed":
- carrying a computer weighing over ten pounds on their backs, running to the site just to debug a device Modbus forgetting to bring it
- switching to a serial port cable USB the entire project being suspended for half a day, the software on the computer being charged
- the cracked version being afraid of viruses, the parameters not being adjusted
- PID calling the manufacturer to ask, waiting for half a day to reply, sensor calibration relying on manual calculation
- the calculator pressing the wrong button once, starting all over again, the most painful one
it was a late night repair, the customer's. communication failure PLC when I arrived, it was already late at night, I found that I forgot to bring the computer 10 I had to call my colleague to deliver it. I had to tinker until early in the morning, it was not resolved until midnight, at that moment, I thought to myself 3 why can't I just bring my phone to the site? I spent a whole month developing this debugging assistant and WeChat mini program in my spare time. It is not just a debugging tool, but also the crystallization of my years of experience. Firstly, it has core functions and professional tools.
Install it into the phone: Debugging the whole family bucket?
The core function of mini programs, exactly. complete 3 Protocol stack support, Main station polling tool Modbus This is the most frequently used function Not one of them.
Supported function codes, Function code 20 name.
Use Read coil status, core functionality: 20+ professional tools, Install into mobile phone
1.1 Modbus Debugging the whole family bucket
The core function of mini programs, exactly. complete Modbus Protocol stack support.
(1) Modbus Poll - Main station polling tool
This is the most frequently used function, second to none.
Supported Function Codes:
| function code | Name | Purpose |
|---|---|---|
| FC01 | Read Coils | Read coil status (Switching output) |
| FC02 | Read Discrete Inputs | Read discrete inputs (Switching input) |
| FC03 | Read Holding Registers | Read and hold registers (The most commonly used) |
| FC04 | Read Input Registers | Read the input register (Read only) |
| FC05 | Write Single Coil | Write into a single coil |
| FC06 | Write Single Register | Write into a single register |
| FC15 | Write Multiple Coils | Write multiple coils |
| FC16 | Write Multiple Registers | Write multiple registers |
| FC17 | Report Slave ID | Notify the client ID |
| FC22 | Mask Write Register | Mask write register (Change individual bit) |
| FC23 | Read/Write Multiple | Simultaneously read/write multiple registers |
| FC43/14 | Read Device ID | Read device identification |
Connection method:
- Modbus TCP: Support any IP And ports, Automatically save connection history
- Bluetooth connection: Supports regular Bluetooth conversion 485 Modules and PACO Bluetooth adapter
- Port forwarding: Support router port mapping (As external 1502 → Internal 502)
Data display format:
The original data of the same register, support 7 Display format One click switching:
Signed(有符号) → -32768 ~ 32767 Unsigned(无符号) → 0 ~ 65535 Hex(十六进制) → 0x0000 ~ 0xFFFF Long(长整型) → 32 位整数 Float(浮点型) → IEEE 754 单精度 Float Swapped → 字节反转浮点 Binary(二进制) → 0000 0000 0000 0001
💡 Actual cases: A temperature sensor returns 0x4248 0x0000, If pressed 16 It appears to be a bit integer 17480 And 0, Completely wrong. Switch to Float Format, Display 50.0, This is the actual temperature value.
Advanced tools:
- Communication monitoring panel: Real time recording of all Tx/Rx Original message, Support pause/continue, One click sharing
- TC Testing Center: Manual input Hex String sending, View the original response, Debugging custom protocols
- Real time charts: Enter the register address to be monitored, Real time display of numerical changes in bar charts
- Request message preview: Real time display of upcoming messages on the settings interface RTU/ASCII frame structure (Including CRC/LRC Verification)
(2) Modbus Slave - Slave station simulator
This feature is often overlooked by many people, But it is actually very practical.
Usage scenarios:
- Test the upper computer software (Like Kingview, WinCC)
- verification PLC Program logic
- Training new employees (No need for real equipment)
- Simulate slave response during the development phase
Support functions:
- Simulated coil, Discrete input, Maintain registers, Input register
- Customize initial values
- Support batch setting of address range
- Real time display of main station request messages
(3) Modbus RTU/TCP/ASCII - Detailed explanation of the agreement
The mini program provides detailed explanations and practical examples for all three transmission modes.
RTU vs ASCII contrast:
| characteristic | RTU | ASCII |
|---|---|---|
| Encoding method | Binary | ASCII Text |
| Verification method | CRC16 | LRC |
| Frame length | Short (Efficient) | Approximately RTU 2 Double |
| Frame identification | 3.5 Character silence interval | ":" start + CR LF ending |
| Applicable scenarios | Most industrial equipment | Old equipment/modems |
CRC16 Algorithm implementation (Core code) :
// MODBUS CRC-16 (低字节在前)
calcCRC16(bytes) {
let crc = 0xFFFF;
for (let i = 0; i < bytes.length; i++) {
crc ^= bytes[i];
for (let j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc >>= 1;
}
}
}
const lo = crc & 0xFF;
const hi = (crc >> 8) & 0xFF;
return lo.toString(16).toUpperCase().padStart(2, '0') + ' ' +
hi.toString(16).toUpperCase().padStart(2, '0');
}
LRC Algorithm implementation:
// MODBUS ASCII LRC
calcLRC(bytes) {
let sum = 0;
for (let i = 0; i < bytes.length; i++) {
sum += bytes[i];
}
const lrc = ((~sum) + 1) & 0xFF;
return lrc.toString(16).toUpperCase().padStart(2, '0');
}
1.2 Serial port debugging assistant
This is the second high-frequency function used.
Core characteristics:
- Three connection methods: Bluetooth / TCP / UDP
- Full parameter configuration: Baud rate (9600/19200/38400/57600/115200) , Data bits, Stop position, Checksum
- Independent setting of receiving and transmitting areas:
- Reception area: ASCII/HEX Switching, Timestamp, Automatic line wrapping, set number, Automatic scrolling
- Sending area: ASCII/HEX Switching, Automatically parse escape characters (rn t) , Circular transmission
- Four verification methods: CRC-16, Accumulated sum, LRC, XOR verification
- Real time statistics: RX/TX Byte count, One click reset
Practical cases 1: Bluetooth debugging PACO Equipment
PACO It is a commonly used Bluetooth 485 Adapter, The mini program has been deeply optimized for it.
// 构建 PACO 命令 (80 字节固定长度)
buildPacoCommand(cmdType, param = '') {
let cmd = '';
switch(cmdType) {
case 'read485':
cmd = 'PACO-Setting-Code-PACO-FXY-BT-485-R-485Setting.';
break;
case 'write485':
cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-485Setting:${param}.`;
break;
case 'readName':
cmd = 'PACO-Setting-Code- -R-PartNumber.';
break;
case 'writeName':
cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-DeviceName:${param}.`;
break;
}
// 补齐到 76 字符,末尾加 PACO
const paddedCmd = cmd.padEnd(76, ' ') + 'PACO';
return paddedCmd;
}
Can read and write PACO Equipment:
- 485 Parameters (Baud rate/data bits/stop bits/parity bits)
- Equipment name (maximum 7 Characters)
Practical cases 2: TCP Port restriction issue
WeChat mini programs have strict restrictions on ports, This is a big pit.
// 微信小程序端口限制检查
const forbiddenPorts = [1099, 1433, 1521, 1719, 1720, 1723,
2049, 2375, 3128, 3306, 3389, 3659, 4045, 5060, 5061,
5432, 5984, 6379, 6000, 6566, 7001, 7002, 8443, 8888,
9200, 9300, 10051, 10080, 11211, 27017, 27018, 27019];
if (portNum < 1024) {
// 禁止连接 1024 以下端口(如 502)
uni.showModal({
title: '端口受限',
content: '微信小程序禁止连接 1024 以下端口,请使用 APP 版本或更换端口',
showCancel: false
});
return;
}
if (portNum >= 8000 && portNum <= 8100) {
// 禁止连接 8000-8100 端口
uni.showModal({
title: '端口受限',
content: '微信小程序禁止连接 8000-8100 端口,请更换端口',
showCancel: false
});
return;
}
Solution:
Perform port forwarding on the router, For example, external 1502 → Internal 502.
1.3 Professional calculator series
This is the part that I have put the most effort into, It is also the place that best reflects the "value of experience".
(1) PID Self tuning calculator
PID Parameter tuning is the core of automatic control systems, It is also a pain point for many engineers.
Supported tuning methods:
| method | Applicable scenarios | characteristic |
|---|---|---|
| Ziegler - Nichols' First Law | Step response experiment | Classical methods, Widely applicable |
| Ziegler - Nichols' Second Law | Critical oscillation method | Need to find the critical gain |
| Cohen-Coon | Large lag system | Good effect on lagging systems |
| IMC (Internal model control) | High performance requirements | Adjustable parameters, High flexibility |
| Pole configuration | Specific dynamic response | Need a system model |
Input parameters:
- Delay time L (Seconds)
- Time constant T (Seconds)
- Process gain K
- λ Parameters (IMC special-purpose)
Output results:
- Proportional gain Kp
- Integral time Ti
- Differential time Td
- Recommended configuration (Such as controller type, Control variable selection)
Core algorithm (Ziegler - Nichols' First Law) :
// Ziegler-Nichols 第一法(阶跃响应法)
zieglerNichols1st(L, T, K) {
// Kp = 1.2 * T / (K * L)
// Ti = 2 * L
// Td = 0.5 * L
const kp = 1.2 * T / (K * L);
const ti = 2 * L;
const td = 0.5 * L;
return { kp, ti, td };
}
Practical cases:
A temperature control system, Obtained through step response experiments:
- Delay time L = 2.5s
- Time constant T = 8.0s
- Process gain K = 1.0
Substitute into the formula for calculation:
- Kp = 1.2 × 8.0 / (1.0 × 2.5) = 3.84
- Ti = 2 × 2.5 = 5.0s
- Td = 0.5 × 2.5 = 1.25s
Enter these three parameters PID controller, The system responds quickly and has minimal overshoot.
(2) Sensor calibration calculator
Sensor calibration is a routine task for on-site debugging, But manual calculation is prone to errors.
Support four modes:
① Linear calibration (The most commonly used)
Applicable to 4-20mA, 0-10V Equivalent linear sensor.
标定公式:Y = kX + b 其中: k = (Y2 - Y1) / (X2 - X1) // 斜率 b = Y1 - k * X1 // 截距
Quick conversion table:
| percentage | Signal value (mA) | Engineering value (℃) |
|---|---|---|
| 0% | 4.00 | 0.00 |
| 25% | 8.00 | 25.00 |
| 50% | 12.00 | 50.00 |
| 75% | 16.00 | 75.00 |
| 100% | 20.00 | 100.00 |
② Multi-point fitting
Suitable for nonlinear sensors (Such as thermocouples, Thermal resistance) .
support:
- Quadratic curve fitting
- Cubic curve fitting
- Least squares method
③ Temperature specific mode
Built in commonly used temperature sensor calibration table:
- PT100 Thermal resistance
- K Type thermocouple
- J Type thermocouple
- E Type thermocouple
- T Type thermocouple
④ Error analysis
calculation:
- Absolute error
- Relative error
- Full-scale error
- Linearity
Practical cases:
A certain pressure transmitter, Range 0-10bar, Output 4-20mA.
Calibration point setting:
- low point: 4mA → 0bar
- High point: 20mA → 10bar
Calculation results:
- k = (10 - 0) / (20 - 4) = 0.625
- b = 0 - 0.625 × 4 = -2.5
Calibration formula: Y = 0.625X - 2.5
verification:
- Input 12mA → Y = 0.625 × 12 - 2.5 = 5.0bar ✓
- Input 20mA → Y = 0.625 × 20 - 2.5 = 10.0bar ✓
(3) Verify calculation tools
This tool integrates 10+ Common verification algorithms for industrial communication protocols.
Support functions:
| Verification type | explain | Applicable scenarios |
|---|---|---|
| MODBUS RTU CRC-16 | 16 Bit cycle redundancy check | Modbus RTU agreement |
| MODBUS ASCII LRC | Vertical redundancy check | Modbus ASCII agreement |
| Checksum (16 Position) | Accumulate and take low 16 Position | Simple protocol |
| XOR verification (8 Position) | XOR all bytes | Custom protocol |
| Siemens Checksum S7 Dedicated communication protocol | S7 Siemens Mitsubishi | Sum up verification PLC |
| Mitsubishi Communication Protocol FX Mitsubishi | Verification | Block verification characters PLC |
| BCC Serial communication | Checksum | Network protocol verification |
| IP/TCP Stack | Omron | TCP/IP Protocol verification |
| Omron FINS FCS | FINS Bus verification | Automotive electronics PLC |
| CAN CRC | CAN usage method | Select verification type |
Input original:
- data Automatically calculate verification codes
- Optional HEX Send after attaching the verification code
- Practical Case
- (Optional) Send with additional verification code
Practical Case: Modbus RTU Command
raw data: 01 03 00 00 00 01
calculation CRC-16:
- Input 6 Byte
- Calculated CRC = 0x840A
- Low byte first:
84 0A
Complete message: 01 03 00 00 00 01 84 0A
1.4 Other professional tools
Mini programs also have 15+ Professional tools, Here is a brief list:
(1) PLC Debugging tools
- Q06 Switch debugging assistant: Specially targeted Q06 Debugging tools for series switches
- X160 Debugging tools: X160 Equipment specific debugging
- ZLAN Device Manager: There is a network of people ZLAN Series equipment management
(2) Debugging of actuators
- Dimming and debugging assistant: 0-10V/PWM Dimmer debugging
- 8 Road relay control: Batch control of multi-channel relays
- Servo pulse calculation: Calculation of servo motor pulse equivalent
(3) Debugging of frequency converter
- Frequency converter debugging tool: Support mainstream frequency converter parameter settings
(4) Other calculators
- Debugging of pressure transmitter: Differential pressure/pressure transmitter calculation
- Remote assistance tools: Real time shared debugging screen
Two, Technical architecture: Mini programs can also be used as professional tools
2.1 Technical selection
Front end framework: uni-app
Reasons for selection:
- Compile a set of code into a WeChat mini program, H5, APP
- Rich component library
- Good Bluetooth/TCP/UDP API support
UI Framework: colorUI + Custom components
Data storage:
- Local storage: uni.setStorageSync
- Connection history records
- Project configuration saving
2.2 Core technical difficulties
(1) Bluetooth BLE connect
Bluetooth of WeChat Mini Program API There are some restrictions, Special handling is required.
Difficulties 1: Search for service characteristic values
Different Bluetooth modules Service UUID And Characteristic UUID Different, Need for intelligent search.
// 遍历所有服务查找可写特征
findWritableCharacteristic() {
if (this.currentServiceIndex >= this.allServices.length) {
// 所有服务都遍历完了
if (this.foundWriteChar) {
this.finishBluetoothConnection();
} else {
uni.showToast({ title: '未找到可写特征', icon: 'none' });
}
return;
}
const service = this.allServices[this.currentServiceIndex];
uni.getBLEDeviceCharacteristics({
deviceId: this.connectedDeviceId,
serviceId: service.uuid,
success: (res) => {
const characteristics = res.characteristics;
// 查找策略:
// 1. 优先找同时支持 write 和 notify 的特征(双向通信)
// 2. 其次找只支持 write 的特征
// 3. 最后找支持 writeNoResponse 的特征
let writeChar = characteristics.find(c =>
c.properties.write === true &&
(c.properties.notify === true || c.properties.indicate === true)
);
if (!writeChar) {
writeChar = characteristics.find(c => c.properties.write === true);
}
if (!writeChar) {
writeChar = characteristics.find(c => c.properties.writeNoResponse === true);
}
if (writeChar) {
this.writeCharacteristicId = writeChar.uuid;
this.foundWriteChar = true;
this.finishBluetoothConnection();
return;
}
// 当前服务未找到,继续下一个
this.currentServiceIndex++;
this.findWritableCharacteristic();
}
});
}
Difficulties 2: PACO Equipment 80 Single byte packet transmission
PACO The device needs to be sent once 80 Byte, But BLE Default MTU Only 20 Byte.
Solution:
// 设置 BLE MTU(最大传输单元)
setBLEMTU(deviceId, callback) {
if (wx.setBLEMTU) {
wx.setBLEMTU({
deviceId: deviceId,
mtu: 512, // 设置为 512 字节
success: (res) => {
console.log('MTU 设置成功');
callback && callback();
},
fail: (err) => {
console.error('MTU 设置失败', err);
callback && callback();
}
});
} else {
callback && callback();
}
}
(2) TCP Socket signal communication
WeChat Mini Program TCP Socket API It is asynchronous, Need to handle connection timeout, Data subcontracting, Adhesive packaging and other issues.
Connection timeout handling:
const connTimeout = setTimeout(() => {
if (!self.isConnected) {
uni.hideLoading();
uni.showToast({ title: '连接超时', icon: 'none' });
try { tcp.close(); } catch(e) {}
self.tcpSocket = null;
}
}, 8000); // 8 秒超时
tcp.onConnect(function(res) {
clearTimeout(connTimeout);
self.isConnected = true;
// ...
});
Data subcontracting processing:
handleTcpResponse(hexData) {
const hex = hexData.replace(/s+/g, '');
// 将接收到的数据添加到缓冲区
for (let i = 0; i < hex.length; i += 2) {
this.receiveBuffer.push(parseInt(hex.substr(i, 2), 16));
}
// 使用 MBAP 头的 Length 字段判断帧完整性
while (this.receiveBuffer.length >= 7) {
const mbapLength = (this.receiveBuffer[4] << 8) | this.receiveBuffer[5];
const totalFrameLength = 6 + mbapLength;
if (this.receiveBuffer.length >= totalFrameLength) {
// 提取完整的一帧
const frame = this.receiveBuffer.splice(0, totalFrameLength);
this.parseModbusTcpResponse(frame);
} else {
// 数据不完整,等待更多数据
break;
}
}
}
(3) Big data processing
During serial port debugging, If running for a long time, It will generate a large amount of data.
Optimization strategy:
// 消息缓冲区管理
maxMessageCount: 800, // 最多保存 800 条
maxVisibleMessageChars: 240, // 每条最多显示 240 字符
trimMessageBuffer() {
const maxTotalChars = this.maxMessageCount * this.maxVisibleMessageChars * 2;
while (this.messages.length > this.maxMessageCount ||
this.totalMessageChars > maxTotalChars) {
const removed = this.messages.shift();
if (removed && removed.data) {
this.totalMessageChars -= removed.data.length;
}
}
}
// 超长消息自动截断,支持展开/收起
isMessageTruncated(msg) {
return !!(msg && msg.data &&
msg.data.length > this.maxVisibleMessageChars);
}
getDisplayMessage(msg) {
if (!msg || !msg.data) return '';
if (msg.expanded || !this.isMessageTruncated(msg)) {
return msg.data;
}
return msg.data.slice(0, this.maxVisibleMessageChars) + '…';
}
Three, Design concept: Engineers understand engineers
3.1 Win7 Style interface
Many people ask why it is used Win7 Style?
Because Familiar with.
Most industrial engineers face computers every day, Win7 The interface is the most familiar. Seeing this style, It feels like a 'professional tool'.
Design details:
- Gradient blue title bar
- Stereoscopic border (Shallow outside and deep inside)
- Grey background + White content area
- Display data in equal width font (Courier New)
3.2 Remote assistance function
This feature came to my mind during on-site debugging.
Scene:
On site equipment malfunction, I can't figure it out, Need remote assistance from colleagues. But traditional methods can only be described over the phone, Extremely low efficiency.
Solution:
// 生成协助会话码
startRemoteAssist() {
const sessionId = generateRandomSessionId();
this.remoteAssistSessionId = sessionId;
this.remoteAssistShowPanel = true;
// 实时转发通信数据
this.remoteAssistForward('tx', 'Tx', data);
this.remoteAssistForward('rx', 'Rx', data);
// 接收远程命令
this._executeRemoteCommand(cmd);
}
Usage process:
- Click on 'Remote Assistance"
- Generate 6 Bit Session Code
- Share with WeChat Friends'
- After the other party opens it, Real time viewing of communication data
- The other party can send commands remotely
Value:
- No need for screenshot/recording
- Real time bidirectional communication
- Support collaboration among multiple people
3.3 Data export and sharing
On site debugging completed, Often need to send data to colleagues or archive it.
Export format:
【串口调试 - 通信记录】 导出时间:2026-04-05 11:00:00 共 50 条记录 发送:1200 字节,接收:800 字节 ======================================== [11:00:00.123] 发送:01 03 00 00 00 01 84 0A [11:00:00.456] 接收:01 03 02 00 0A B9 C8 [11:00:01.123] 发送:01 03 00 00 00 0A C5 CD ... ======================================== 来自:Modbus 调试助手 微信小程序
Implementation method:
buildExportLogContent(options = {}) {
let content = `${options.title || '【串口调试 - 通信记录】'}n`;
content += `导出时间:${new Date().toLocaleString()}n`;
content += `共 ${this.messages.length} 条记录n`;
content += `发送:${this.sentCount} 字节,接收:${this.receivedCount} 字节n`;
content += `${'='.repeat(40)}nn`;
this.messages.forEach((msg) => {
const direction = msg.type === 'sent' ? '发送' : '接收';
content += `[${msg.time}] ${direction}: ${msg.data}n`;
});
content += `n${'='.repeat(40)}n`;
content += `来自:Modbus 调试助手 微信小程序`;
return content;
}
Four, User feedback: Real voice
go online 2 Months, It already exists 5000+ Engineers are using it.
Feedback 1:
"Too convenient! In the future, only bringing a mobile phone is enough for business trips. Yesterday I went to the scene, Customers are surprised that I was able to handle it with just a phone. "
—— Jiangsu, Automation engineer, Wang Gong
Feedback 2:
"PID The setting calculator has been a great help. Previously, setting parameters required a half day trial, Enter now L/T/K, Directly generate results. "
—— Guangdong, Control engineer, Li Gong
Feedback 3:
"The remote assistance function is too strong. Encountered problems on site, Share directly with colleagues, 5 Done in minutes, Previously, at least half an hour of phone communication was required. "
—— Zhejiang, technical support, Zhang Gong
Feedback 4:
"The sensor calibration calculator is very practical. Our factory has hundreds of sensors, Previously, calibration required manual calculation, Now enter two points, Automatically generate formulas. "
—— Shandong, Instrument engineer, Liu Gong
Five, Future planning
5.1 Short term plan (1-3 Months)
- Increase OPC UA client
- Support MQTT Protocol debugging
- Increase BACnet Protocol support
- Cloud project synchronization (VIP Function)
5.2 Mid term plan (3-6 Months)
- APP edition (Breaking through the port restrictions of WeChat mini programs)
- Support script functionality (Lua/JavaScript)
- Add chart analysis function (Trend chart, Spectrum analysis)
- Equipment database (Common equipment parameter templates)
5.3 Long term vision
Be an industrial engineer's "treasure chest"".
any tool that can be used for on-site debugging, all integrated into this mini program.
enable engineers to learn less, go light, work less, go home early, have fewer troubles, increase efficiency:
- write at the end, the original intention of making this mini program
- not to make money, just to solve one's own pain points
- help more peers, years of experience tell me
the value of tools, not in fancy functions
but in truly solving problems, each function is a pain point that I have truly encountered during on-site debugging.
every line of code embodies my love for this industry, if you are also an industrial engineer.
20 I hope this... Mini programs can help you: if you have any suggestions, welcome feedback, let's work together.
make industrial debugging easier, appendix.
usage method, method.
WeChat QR code scanning, method.
WeChat search, Search.
Debugging assistant, Method.
Sharing with friends: Click on the card shared by a friend to enter directly
Regarding the author 1: Years of experience in industrial automation

Waiting for equipment manufacturers 2: WeChat Search
Search"Modbus Debug Assistant"
way 3: Sharing with friends
Click on the card shared by a friend to directly enter
About the Author
20 Years of experience in industrial automation, Waiting for equipment manufacturers, Integrators, first party.
Currently focusing on industrial Internet of Things, Edge computing, Intelligent control.
Welcome to communicate:
- 📧 Email address: support@modbus.cn
- 💬 WeChat group: Scan the code to add an assistant to the group
reference material
[1] Modbus Application Protocol Specification V1.1b3
[2] Ziegler - Nichols PID Tuning method
[3] WeChat Mini Program Bluetooth Development Document
[4] IEEE 754 Floating point number standard
[5] CRC16 Algorithm Principles and Implementation
Leave a Reply