资源简介
通信中为了防止信道质量不好的时候出现传输错误,在发送和接收端加上RS编译码,可以自动检错和纠错
代码片段和文件信息
/****************ecc.h*************************/
/* Reed Solomon Coding for glyphs
*
* (c) Henry Minsky (hqm@ua.com) Universal Access Inc. (1991-1996)
*
*
*/
/****************************************************************
Below is NPAR the only compile-time parameter you should have to
modify.
It is the number of parity bytes which will be appended to
your data to create a codeword.
Note that the maximum codeword size is 255 so the
sum of your message length plus parity should be less than
or equal to this maximum limit.
In practice you will get slooow error correction and decoding
if you use more than a reasonably small number of parity bytes.
(say 10 or 20)
****************************************************************/
#include
#include
#include
#define AL 255 /////
#define NPAR 6
#define NL AL-NPAR
#define ITLDPTH 1 ///不加交织
/****************************************************************/
#define TRUE 1
#define FALSE 0
typedef unsigned long BIT32;
typedef unsigned short BIT16;
/* **************************************************************** */
/* Maximum degree of various polynomials. */
#define MAXDEG (NPAR*2)
/*************************************/
/* Encoder parity bytes */
extern int pBytes[MAXDEG];
/* Decoder syndrome bytes */
extern int synBytes[MAXDEG];
/* print debugging info */
extern int DEBUG;
/* Reed Solomon encode/decode routines */
void initialize_ecc (void);
int check_syndrome (void);
void decode_data (unsigned char data[] int nbytes);
void encode_data (unsigned char msg[] int nbytes unsigned char dst[]);
/* CRC-CCITT checksum generator */
BIT16 crc_ccitt(unsigned char *msg int len);
/* galois arithmetic tables */
extern int gexp[];
extern int glog[];
void init_galois_tables (void);
int ginv(int elt);
int gmult(int a int b);
/* Error location routines */
int correct_errors_erasures (unsigned char codeword[] int csizeint nerasures int erasures[]);
/* polynomial arithmetic */
void add_polys(int dst[] int src[]) ;
void scale_poly(int k int poly[]);
void mult_polys(int dst[] int p1[] int p2[]);
void copy_poly(int dst[] int src[]);
void zero_poly(int poly[]);
/**********************************************************************************************/
/****************************berlerkamp.c**************************************/
/***********************************************************************
* Berlekamp-Peterson and Berlekamp-Massey Algorithms for error-location
*
* From Cain Clark “Error-Correction Coding For Digital Communications“ pp. 205.
*
* This finds the coefficients of the error locator polynomial.
*
* The roots are then found by looking for the values of a^n
* where evaluating the polynomial yields zero.
*
* Error correction is done using
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 19917 2010-02-08 10:16 新建文件夹\rscode.c
文件 16458 2010-02-04 10:45 新建文件夹\rsdecode.c
目录 0 2010-03-07 21:33 新建文件夹
----------- --------- ---------- ----- ----
36375 3
- 上一篇:利用C++哈希表的方法实现电话号码查询系统
- 下一篇:使用C语言编写的病房管理系统
相关资源
- Qt5串口通信-windows
- STM32 LIN通信数据发送实现 测试通过
- stm32双机spi通信
- rs485通信双工,可直接用,波特率可达
- cubeMX设计实现stm32f407上的CAN及485的通
- 485通信控制3路相位差120°PWM输出
- ftp工具代码
- 串口数据采集及显示
- Visual_C++_数据采集与串口通信测控应用
- c++编写的串口通讯程序
- MATLAB通信仿真及应用详解附超星阅读
- 串口通信数据库:基于RFID的电子票证
- Visual C++数据采集与串口通信测控应用
- Visual C++串口通信技术详解.(机械工业
- prodave6.2 与s7-200通信例程
- VC6.0经典串口通信源程序C++
- 模拟进程管理c语言至少要有:创建新
- 串口助手+CRC校验(可用于PLC中ModBus通
- 基于stm32的交通信号灯代码
- VC++ MFC 串口通信20个经典源码合集
- 一个MFC做的串口通信的好,是我单位
- C++Builder开发的数据采集系统上层应用
- C语言实现TCP/IP协议通信和UDP协议通信
- UART串口通信论文参考
- 局域网下,手机可以和电脑通过sock
- 基于VC MFC的数据分析系统
- TCP实现服务器和多客户端通信
- Visual C++串口通信及测控应用详解--源
- USB双向通信上位机VC++程序
- VisualC++网络通信编程技术详解
评论
共有 条评论