ECOM시리얼 포트助手-시리얼 포트보내기수신,Modbus CRC16체크섬,엔지니어링师디버깅 도구

유료 ¥1.99유료 ¥1.99

이 콘텐츠는 회원/유료 시스템과 연동되어 있으며, 잠금 해제 후 전체 자료를 보거나 첨부파일을 다운로드할 수 있습니다.

보기解锁방식
ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具

软件설명

ECOM시리얼 포트助手은(는)带 CRC  계산 的 시리얼 포트(RS232) 디버깅软件。由我爱 IC 导航网工作室개발发 。ECOM시리얼 포트助手支持常用的 110 ~ 921600bps 통신 속도,能设置체크섬、데이터 비트和정지 비트, 能以 ASCII 码或16진수수신或보내기任何데이터或문자(包括중국어),能보내기任意大小的文本文件,可以任 意设定自动보내기周期,并能将수신데이터저장成文本文件。带有文件或데이터串的 Modbus CRC16체크섬、CRC16  체크섬、累加和체크섬、XOR 체크섬,Modbus LRC 계산도구,是엔지니어링师디버깅单片机시리얼 포트的好助手도구。

软件界面

ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具插图

软件特点

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

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

3 、 支持常用的 110 ~ 921600bps 통신 속도;

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

5 、 能设置체크섬、데이터 비트和정지 비트;

6 、 能以문자或16진수收发데이터,支持중국어문자的收发;

7 、 支持文件데이터的보내기;

8 、 데이터보내기区允许设置보내기周期,自动보내기데이터;

9 、 支持键盘입력,将键盘데이터보내기到시리얼 포트;

10 、支持定时저장수신窗口데이터,便于보기长时间디버깅记录信息;

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

12 、데이터수신窗口及文件보내기均采用多线程设计。

13 、带有文件和데이터帧 ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、XOR 체크섬,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 체크섬、累加和체크섬、XOR 체크섬,ModebusLRC 等체크섬协 议。

3、추가데이터包镜像回发功能。

4、추가수신对话框字体修改버튼。

5、추가转义符号选择。

6、支持命令串文件보내기(具体见命令串文件模板使用설명)。

7、추가窗口总是浮在最前面버튼,추가命令串隐藏显示버튼。

1.3.3 V2.40 버전추가功能

1 、 추가 110 、300 、600 통신 속도。

2 、 修正수신窗体字体设置버튼功能,추가수신窗体背景色设置버튼。

1.3.4 V2.60 버전추가功能

1 、 추가“체크섬结果”버튼,实现文件或者데이터帧的 ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、 XOR 체크섬,ModebusLRC 的계산 결과显示。

2、

1.3.5 V2.80 버전추가功能

1 、 修正체크섬算法데이터유형。

2 、 추가部分 TTY 仿真终端디버깅프로토콜,可以简单的디버깅 Linux 命令。

3 、 수신窗口可粘贴보내기문자串命令。

4 、 추가 1Kxmodem,1Kxmodem autoget 수신文件功能。

5 、 추가终端控制命令,可以通过수신命令来控制디버깅시리얼 포트的수신窗口。

软件使用설명

ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具插图1

图 2  命令启动 Xmodem-1k

ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具插图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]
; 명령 보내기条的시작条数
시작_52ic=0
; 命令条总数,不要写错了,否则会出错,最大 100 条。
total_52ic=4
; 循环多少次后退出。最大 100 次循环。
cycle_52ic=5
; 检验방식。
check_52ic=4

[Sending]
; 보내기对话框是否 HEX 형식보내기
HEX0=0
; 包尾是否加체크섬
CHECK0=1
; 是否使用转义符
TAILED0=0
; 데이터头是否选择
HEAD0=0
; 데이터头데이터
데이터HEAD0=데이터头--
; 데이터尾是否选择
TAIL0=0
; 데이터尾데이터
데이터TAIL0=--데이터尾
; 보내기对话命令条
데이터0=欢迎使用我爱IC导航网
; 보내기데이터后延时多长时间才执行下条命令
DELAY0=1000

; 보내기对话框是否 HEX 형식보내기
HEX1=0
; 包尾是否加체크섬
CHECK1=0
; 是否使用转义符
TAILED1=0
; 데이터头是否选择
HEAD1=1
; 데이터头데이터
데이터HEAD1=데이터头--
; 데이터尾是否选择
TAIL1=1
; 데이터尾데이터
데이터TAIL1=--데이터尾
; 보내기对话命令条
데이터1=欢迎使用我爱IC导航网
; 보내기데이터后延时多长时间才执行下条命令
DELAY1=1000

HEX2=1
CHECK2=1
TAILED2=0
HEAD2=1
데이터HEAD2=AA AAAAAA
TAIL2=1
데이터TAIL2=BB BB BB BB
데이터2=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
데이터HEAD3=AAAA
TAIL3=1
데이터TAIL3=BB BB
데이터3=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]매개변수设置区 
시작_52ic명령 보내기条的시작条数必须小于命令条总数
total_52ic命令条总数,不要写错了,否则会出错最大 100 条
cycle_52ic循环명령 보내기串次数,반복 전송完成后退出最大 100 次循环
check_52ic检验방식选择,大于等于 0,小于软件支持的체크섬프로토콜条数 
[Sending]命令데이터보내기区 
HEX보내기对话框是否选择 HEX 형식보내기,0 表示不选择 
CHECK데이터时候加체크섬,0 表示不选择 
TAILED命令串末尾时候加转义符,0 表示不选择 
HEAD命令串时候加데이터头,0 表示不选择 
데이터HEAD데이터头데이터 
TAIL命令串时候加데이터尾,0 表示不选择 
데이터TAIL데이터尾데이터 
데이터命令串데이터 
DELAY보내기데이터后延时多长时间才执行下条命令 

데이터帧형식

Ecom  시리얼 포트软件支持自定义데이터帧头, 데이터帧尾功能。同时支持데이터包多种체크섬프로토콜, 如: ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、XOR 체크섬, ModebusLRC 等。데이터帧仅체크섬데이터입력框 中的데이터,不계산帧头和帧尾的데이터,每次보내기时,软件根据用户选择的不同체크섬算法进行데이터체크섬,并 将계산 결과和原来的데이터拼成一个完整的데이터帧보내기。帧형식见下表。

表 2   V2.20 以上软件버전데이터帧형식설명

最先보내기其次보내기依次보내기接着보내기最后보내기
데이터帧头데이터데이터帧체크섬데이터帧尾转义符
使能데이터帧头버튼填写要보내기的데이터选择데이터체크섬 방식使能데이터帧尾버튼使能转义符버튼

终端控制命令

ECOM 시리얼 포트助手可以通过수신命令来控制시리얼 포트助手的수신窗口,便于保持시리얼 포트传输的데이터。

<ecomclear>清除窗口데이터
<ecomset>dipset=1</ecomset>设置窗口표시 형식为 HEX
<ecomset>dipset=0</ecomset>设置窗口표시 형식为문자
<ecomsave></ecomsave>自动저장窗口데이터,저장文件用系统时间来命名
<ecomsave>+name+</ecomsave>저장窗口데이터,文件名用户指定,例如
<ecomsave>데이터.txt</ecomsave> 
<ecomsave>up데이터\\데이터.txt</ecomsave> 
<ecomdel>+name+</ecomdel>삭제用户指定的文件
<ecomdir>NewDir</ecomdir>在软件运行的目录下创建制定的目录,

命令执行错误返回 0x15,命令执行成功返回 0x06;통신 속도越低发生错误的概率越大,主要受到一帧 데이터수신超时的原因照成的。

文件及데이터체크섬

1.    文件체크섬

Ecom 시리얼 포트软件带有계산文件 ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、XOR 체크섬,ModebusLRC 的계산도구,계산方法是在“传输프로토콜 ”열기文件对话框中열기待계산的文件,选择“데이터체크섬형식 ”,点 击“체크섬结果 ”버튼,对话框中将显示계산 결과,如果需要저장结果,클릭“저장窗口 ”버튼即可。

ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具插图3

图 4  계산文件的체크섬值

1.    데이터체크섬

Ecom 시리얼 포트软件支持데이터帧 ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、XOR 체크섬, ModebusLRC 的계산,同时可以支持将계산 결과跟데이터帧一起보내기到시리얼 포트设备上。계산方法是先“将传输프로토콜 ”열기文 件的对话框지우기,选择“데이터체크섬형식 ”,클릭“체크섬结果 ”버튼,对话框中将显示체크섬结果,如果需要保 存结果,클릭“저장窗口 ”버튼即可。如果需要将계산 결과一同보내기시리얼 포트设备上,选择“데이터체크섬 ”选择 버튼,然后选择보내기데이터。

ECOM串口助手-串口发送接收,Modbus CRC16校验,工程师调试工具插图4

图 5  계산데이터的체크섬值

相关체크섬算法

Ecom 시리얼 포트软件支持 ModebusCRC16 체크섬、CRC16 체크섬、累加和체크섬、XOR 체크섬,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.    XOR 체크섬算法

  //**********************************************************************************************************
// 函数名称: GetBccCheck
// 函数功能: BCCXOR 체크섬法
// 入口매개변수: 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 所使用的2진수데이터的프레임缓冲区指针
//           us데이터Len,프레임缓冲区바이트数。
// 返 回 值: LRC 체크섬码
// 备    注:
//**********************************************************************************************************
// 修改人: 我爱 IC 导航网(http://www.52ic.net/)
//**********************************************************************************************************

unsigned char GetLRC(unsigned char *uint8ptr, unsigned int us데이터Len) {
    unsigned char uchLRC = 0; // LRC 바이트初始化
    while (us데이터Len--) { // 遍历프레임缓冲区
        uchLRC += *uint8ptr++; // 缓冲区바이트相加,无进位
    }
    return ((unsigned char)(-uchLRC)); // 返回2진수补码
}

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

《 “ECOM시리얼 포트助手-시리얼 포트보내기수신,Modbus CRC16체크섬,엔지니어링师디버깅 도구” 》 有 6 条评论

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注