ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool

付费 ¥1.99付费 ¥1.99

该内容已接入现有member/付费system,解锁后可View完整Resources或Download附件。

View解锁方式
ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool缩略图

Software Description

<ecomsave>+name+</ecomsave>

软件界面

ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool插图

软件特点

1 、 支持 Windows 9x / 2000 / XP / 2003 / Vista / Win7 系统;

2 、 绿色软件,不需安装。运行解压软件,将压缩包解压到指定目录即可。卸载时只需将程序目录删除;

3 、 支持常用的 110 ~ 921600bps 波特率;

4 、 端口范围是 COM1-COM255,支持扩展端口(USB 转 RS232);

5 、 能设置校验、数据位和停止位;

6 、 能以字符或十六进制收发数据,支持中文字符的收发;

7 、 支持文件数据的发送;

8 、 数据发送区允许设置发送周期,自动发送数据;

9 、 支持键盘输入,将键盘数据发送到串口;

10 、支持定时保存接收窗口数据,便于查看长时间调试记录信息;

11 、有效的检测通讯错误,避免软件死机(如 USB 转串口设备拔出检测);

12 、数据接收窗口及文件发送均采用多线程设计。

13 、带有文件和数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 计算工具。发送的数据帧可选添加计算结果,将校验结果连同数据帧一同打包发送出去。

1.3.1 V2.00 版本增加功能

1、添加 Xmodem 功能(128 个字节发送,只支持 CRC 校验)。

2、增加 Xmodem-1k 功能(1024 个字节发送,只支持 CRC 校验)。

3、支持命令启动 Xmodem-1k 功能(可以做自动传输文件功能)。

1.3.2 V2.20 版本增加功能

1、添加自定义数据帧头,数据帧尾功能。

2、添加数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 等校验协 议。

3、添加数据包镜像回发功能。

4、添加接收对话框字体修改按钮。

5、添加转义符号选择。

6、支持命令串文件发送(具体见命令串文件模板使用说明)。

7、添加窗口总是浮在最前面按钮,添加命令串隐藏显示按钮。

1.3.3 V2.40 版本增加功能

1 、 增加 110 、300 、600 波特率。

2 、 修正接收窗体字体设置按钮功能,增加接收窗体背景色设置按钮。

1.3.4 V2.60 版本增加功能

1 、 增加“校验结果”按钮,实现文件或者数据帧的 ModebusCRC16 校验、CRC16 校验、累加和校验、 异或校验,ModebusLRC 的计算结果显示。

2、

1.3.5 V2.80 版本增加功能

1 、 修正校验算法数据类型。

2 、 增加部分 TTY 仿真终端调试协议,可以简单的调试 Linux 命令。

3 、 接收窗口可粘贴发送字符串命令。

4 、 增加 1Kxmodem,1Kxmodem autoget 接收文件功能。

5 、 增加终端控制命令,可以通过接收命令来控制调试串口的接收窗口。

软件使用说明

ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool插图1

图 2  命令启动 Xmodem-1k

ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool插图2

图 3  命令串文件发送

常规的使用

常规的使用比较简单,具体见图一说明,这里就不详细说明。

键盘数据发送

将鼠标光标放在接收框,然后输入键盘键值,ECOM 串口助手自动将键值发送到串口上。

1.4.3 Xmodem  Xmodem-1k

Xmodem 与 Xmodem-1k 通讯协议详细见 Xmodem 规范,这里也不详细说明。

命令启动 Xmodem-1k

命令启动 Xmodem-1k 方法:选择常规串口设置后,文件传输选择“AutoSend”选项,当 ECOM 串口 助手软件接收到“<auto>+文件夹/文件名+</auto> ”命令,软件就会自动启动 Xmodem-1k 传输协议,并将 “<auto>+文件夹/文件名+</auto>”内指定的文件进行 Xmodem-1k 传输。命令中的文件夹连同文件一起放 在 ECOM 串口助手软件的通一个目录下。

命令串文件发送

ECOM 串口助手 V2.20 版本以上支持该功能,允许用户自定义命令串文件,选择发送时,ECOM 串口助手会依次解析用户的命令,逐条往下发送。命令串文件发送同时支持选择命令串文件中的某条标号命令 发送,也支持发送时,跳转到指定的命令编号开始依次往下发送,命令串文件模板如下:

[52ic.net]
; 发送命令条的起始条数
start_52ic=0
; 命令条总数,不要写错了,否则会出错,最大 100 条。
total_52ic=4
; 循环多少次后退出。最大 100 次循环。
cycle_52ic=5
; 检验方式。
check_52ic=4

[Sending]
; 发送对话框是否 HEX 格式发送
HEX0=0
; 包尾是否加校验
CHECK0=1
; 是否使用转义符
TAILED0=0
; 数据头是否选择
HEAD0=0
; 数据头数据
DATAHEAD0=数据头--
; 数据尾是否选择
TAIL0=0
; 数据尾数据
DATATAIL0=--数据尾
; 发送对话命令条
DATA0=欢迎使用我爱IC导航网
; 发送数据后延时多长时间才执行下条命令
DELAY0=1000

; 发送对话框是否 HEX 格式发送
HEX1=0
; 包尾是否加校验
CHECK1=0
; 是否使用转义符
TAILED1=0
; 数据头是否选择
HEAD1=1
; 数据头数据
DATAHEAD1=数据头--
; 数据尾是否选择
TAIL1=1
; 数据尾数据
DATATAIL1=--数据尾
; 发送对话命令条
DATA1=欢迎使用我爱IC导航网
; 发送数据后延时多长时间才执行下条命令
DELAY1=1000

HEX2=1
CHECK2=1
TAILED2=0
HEAD2=1
DATAHEAD2=AA AAAAAA
TAIL2=1
DATATAIL2=BB BB BB BB
DATA2=01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15 16 17 18 19
DELAY2=1000

HEX3=1
CHECK3=1
TAILED3=0
HEAD3=1
DATAHEAD3=AAAA
TAIL3=1
DATATAIL3=BB BB
DATA3=01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15 16 17 18 19
DELAY3=1000

[END]

表 1   命令串文件关键字说明

命令命令命令说明备注
[52ic.net]参数设置区 
start_52ic发送命令条的起始条数必须小于命令条总数
total_52ic命令条总数,不要写错了,否则会出错最大 100 条
cycle_52ic循环发送命令串次数,循环发送完成后退出最大 100 次循环
check_52ic检验方式选择,大于等于 0,小于软件支持的校验协议条数 
[Sending]命令数据发送区 
HEX发送对话框是否选择 HEX 格式发送,0 表示不选择 
CHECK数据时候加校验,0 表示不选择 
TAILED命令串末尾时候加转义符,0 表示不选择 
HEAD命令串时候加数据头,0 表示不选择 
DATAHEAD数据头数据 
TAIL命令串时候加数据尾,0 表示不选择 
DATATAIL数据尾数据 
DATA命令串数据 
DELAY发送数据后延时多长时间才执行下条命令 

数据帧格式

Ecom  串口软件支持自定义数据帧头, 数据帧尾功能。同时支持数据包多种校验协议, 如: ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验, ModebusLRC 等。数据帧仅校验数据输入框 中的数据,不计算帧头和帧尾的数据,每次发送时,软件根据用户选择的不同校验算法进行数据校验,并 将计算结果和原来的数据拼成一个完整的数据帧发送。帧格式见下表。

表 2   V2.20 以上软件版本数据帧格式说明

最先发送其次发送依次发送接着发送最后发送
数据帧头数据数据帧校验数据帧尾转义符
使能数据帧头按钮填写要发送的数据选择数据校验方式使能数据帧尾按钮使能转义符按钮

终端控制命令

ECOM 串口助手可以通过接收命令来控制串口助手的接收窗口,便于保持串口传输的数据。

<ecomclear>清除窗口数据
<ecomset>dipset=1</ecomset>设置窗口显示格式为 HEX
<ecomset>dipset=0</ecomset>设置窗口显示格式为字符
<ecomsave></ecomsave>自动保存窗口数据,保存文件用系统时间来命名
<ecomsave>+name+</ecomsave>保存窗口数据,文件名用户指定,例如
<ecomsave>data.txt</ecomsave> 
<ecomsave>updata\data.txt</ecomsave> 
<ecomdel>+name+</ecomdel>删除用户指定的文件
<ecomdir>NewDir</ecomdir>在软件运行的目录下创建制定的目录,

命令执行错误返回 0x15,命令执行成功返回 0x06;波特率越低发生错误的概率越大,主要受到一帧 数据接收超时的原因照成的。

文件及数据校验

1.    文件校验

Ecom 串口软件带有计算文件 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 的计算工具,计算方法是在“传输协议 ”打开文件对话框中打开待计算的文件,选择“数据校验格式 ”,点 击“校验结果 ”按钮,对话框中将显示计算结果,如果需要保存结果,点击“保存窗口 ”按钮即可。

ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool插图3

图 4  计算文件的校验值

1.    数据校验

Ecom 串口软件支持数据帧 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验, ModebusLRC 的计算,同时可以支持将计算结果跟数据帧一起发送到串口设备上。计算方法是先“将传输协议 ”打开文 件的对话框清空,选择“数据校验格式 ”,点击“校验结果 ”按钮,对话框中将显示校验结果,如果需要保 存结果,点击“保存窗口 ”按钮即可。如果需要将计算结果一同发送串口设备上,选择“数据校验 ”选择 按钮,然后选择发送数据。

ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool插图4

图 5  计算数据的校验值

相关校验算法

Ecom 串口软件支持 ModebusCRC16 校验、CRC16 校验、累加和校验、异或校验,ModebusLRC 等协 议,具体算法见下列程序清单。相关的算法请自行查找相关的资料了解,如果下列程序有问题,欢迎联系 我们,我们将及时更正算法。

1.    ModebusCRC16 校验算法

//**********************************************************************************************************
// 函数名称 : GetModbusCRC16
// 函数功能 : ModbusCRC16 校验
// 入口参数 : cp    要检验的字符
//            leng  长度
// 返 回 值 : ModbusCRC16
// 备    注 :
//**********************************************************************************************************
// 修改人 : 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************
unsigned short GetModbusCRC16(unsigned char *cp, unsigned int leng) {
    unsigned int j, i, crc = 0xFFFF;

    if (leng <= 0) {
        return 0;
    }
    for (j = 0; j < leng; j++) {
        crc = crc ^ (unsigned int)(cp[j]);
        for (i = 0; i < 8; i++) {
            if ((crc & 1) != 0) {
                crc = (crc >> 1) ^ 0xA001;
            } else {
                crc = crc >> 1;
            }
        }
    }
    return (unsigned short)crc;
}

2.    CRC16 校验算法

//**********************************************************************************************************
// 函数名称: GetCRC16
// 函数功能: 循环冗余校验 CRC16 校验
// 入口参数: cp    要检验的字符
//           leng  长度
// 返 回 值: CRC16
// 备    注: CRC   =X^16 + X^12 + X^5 + 1
//**********************************************************************************************************
// 修改人: 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************
unsigned short GetCRC16(unsigned char *cp, unsigned int leng) {
    unsigned short crc = 0;
    unsigned int i, j;
    
    if (leng <= 0) {
        return 0;
    }
    
    for (j = 0; j < leng; j++) {
        crc ^= (int)*cp++ << 8;
        for (i = 0; i < 8; ++i) {
            if (crc & 0x8000) {
                crc = (crc << 1) ^ 0x1021;
            } else {
                crc <<= 1;
            }
        }
    }
    return crc & 0xFFFF;
}

3.     累加和校验算法

//**********************************************************************************************************
// 函数名称: GetCheckSum
// 函数功能: 16位校验和
// 入口参数: cp    要检验的字符
//           leng  长度
// 返 回 值: 校验和结果
// 备    注:
//**********************************************************************************************************
// 修改人: 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************
unsigned short GetCheckSum(unsigned char *cp, unsigned int leng) {
    unsigned short crc = 0;
    unsigned int i;
    
    if (leng <= 0) {
        return 0;
    }
    
    for (i = 0; i < leng; i++) {
        crc += cp[i];
    }
    return crc & 0xFFFF;
}

4.    异或校验算法

  //**********************************************************************************************************
// 函数名称: GetBccCheck
// 函数功能: BCC异或校验法
// 入口参数: cp    要检验的字符
//           leng  长度
// 返 回 值: 校验结果
// 备    注:
//**********************************************************************************************************
// 修改人: 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************
unsigned char GetBccCheck(unsigned char *cp, unsigned int leng) {
    unsigned char bcc = 0;
    unsigned int i;
    
    if (leng <= 0) {
        return 0;
    }
    
    for (i = 0; i < leng; i++) {
        bcc ^= cp[i];
    }
    return bcc; // 无需 & 0xFFFF 因为 bcc 已是 unsigned char 类型
}

1.     LRC 校验法

//**********************************************************************************************************
// 函数名称: GetLRC
// 函数功能: 计算 LRC 值。
// 入口参数: uint8ptr, 输入的数据为 8 位指针,含有生成 LRC 所使用的二进制数据的报文缓冲区指针
//           usDataLen,报文缓冲区字节数。
// 返 回 值: 纵向冗余校验码
// 备    注:
//**********************************************************************************************************
// 修改人: 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************

unsigned char GetLRC(unsigned char *uint8ptr, unsigned int usDataLen) {
    unsigned char uchLRC = 0; // LRC 字节初始化
    while (usDataLen--) { // 遍历报文缓冲区
        uchLRC += *uint8ptr++; // 缓冲区字节相加,无进位
    }
    return ((unsigned char)(-uchLRC)); // 返回二进制补码
}

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

《 “ECOM Serial Port Assistant - Serial Port Sending and Receiving, Modbus CRC16 Verification, Engineer Debugging Tool” 》 有 6 条Comments

Leave a Reply

Your email address will not be published. Required fields are marked *.