Interleaved 2 of 5 条形码标准规范与解析

需积分: 9 5 下载量 60 浏览量 更新于2024-07-19 收藏 102KB PDF 举报
"本文档是关于一维条码标准Interleaved 2 of 5 (ITF-25)的详细规格,适用于条形码识别技术的开发和应用。" 一维条码中的Interleaved 2 of 5(交错2 of 5)是一种编码系统,主要用于工业和物流领域,它能表示数字数据。该条码的特点在于其每个字符由五个黑色和五个白色条纹组成,其中两个窄条纹和三个宽条纹,或者相反,三个窄条纹和两个宽条纹。"Interleaved"一词意味着数据在条码的垂直方向上交错排列,使得每一对条纹代表一个完整的数字,而不是单个的1或0。 在BS ISO/IEC 16390:1999标准中,详细规定了ITF-25条码的设计、制作、解码以及错误检测等方面的内容。这个英国标准是根据国际标准化组织(ISO)和国际电工委员会(IEC)的相应标准制定的,并于1999年12月15日生效。此标准旨在确保在全球范围内的一致性和互操作性。 标准规定了以下关键点: 1. **字符集**:ITF-25条码只能表示数字0-9,每个数字由10个条纹表示,其中5个条纹构成一个字符,交错的另外5个条纹构成下一个字符。 2. **起始和终止符**:条码的开头和结尾都有特定的起始和终止字符,用于正确识别条码的开始和结束。 3. **校验码**:为了增加数据的准确性,通常会包含一个校验字符,根据特定算法计算得出,用于验证整个条码的正确性。 4. **静区**:条码的两侧都有一定的空白区域,称为静区,用于阅读器识别条码的边界。 5. **尺寸和比率**:标准定义了条码的高度、宽度以及窄条纹和宽条纹的比例,以确保读取的可靠性。 6. **解码规则**:详细描述了如何从条码的黑白条纹中提取数据,并转换回数字序列。 7. **错误检测**:通过校验码和其他机制来检测和减少解码错误的可能性。 8. **打印质量**:规定了打印清晰度和对比度的要求,以确保条码能够被正确读取。 9. **应用指南**:提供了如何在实际应用中使用ITF-25条码的建议,包括标签设计、位置以及适用场景。 10. **兼容性**:强调了与国际标准的兼容性,以促进全球贸易和数据交换。 由于Interleaved 2 of 5条码的特性,它特别适合于长数字串的编码,如货品代码、批号或序列号。不过,由于它不能编码字母和其他非数字字符,所以在某些需要更复杂数据表示的场合,可能会选择其他如QR码或PDF417等二维条码。尽管如此,对于那些需要简单、高效且可靠的一维数字编码的应用,ITF-25仍然是一个非常实用的选择。

clear all; close all; clc; tic bits_options = [0,1,2]; noise_option = 1; b = 4; NT = 2; SNRdBs =[0:2:20]; sq05=sqrt(0.5); nobe_target = 500; BER_target = 1e-3; raw_bit_len = 2592-6; interleaving_num = 72; deinterleaving_num = 72; N_frame = 1e8; for i_bits=1:length(bits_options) bits_option=bits_options(i_bits); BER=zeros(size(SNRdBs)); for i_SNR=1:length(SNRdBs) sig_power=NT; SNRdB=SNRdBs(i_SNR); sigma2=sig_power10^(-SNRdB/10)noise_option; sigma1=sqrt(sigma2/2); nobe = 0; Viterbi_init for i_frame=1:1:N_frame switch (bits_option) case {0}, bits=zeros(1,raw_bit_len); case {1}, bits=ones(1,raw_bit_len); case {2}, bits=randi(1,raw_bit_len,[0,1]); end encoding_bits = convolution_encoder(bits); interleaved=[]; for i=1:interleaving_num interleaved=[interleaved encoding_bits([i:interleaving_num:end])]; end temp_bit =[]; for tx_time=1:648 tx_bits=interleaved(1:8); interleaved(1:8)=[]; QAM16_symbol = QAM16_mod(tx_bits, 2); x(1,1) = QAM16_symbol(1); x(2,1) = QAM16_symbol(2); if rem(tx_time-1,81)==0 H = sq05(randn(2,2)+jrandn(2,2)); end y = Hx; if noise_option==1 noise = sqrt(sigma2/2)(randn(2,1)+j*randn(2,1)); y = y + noise; end W = inv(H'H+sigma2diag(ones(1,2)))H'; X_tilde = Wy; X_hat = QAM16_slicer(X_tilde, 2); temp_bit = [temp_bit QAM16_demapper(X_hat, 2)]; end deinterleaved=[]; for i=1:deinterleaving_num deinterleaved=[deinterleaved temp_bit([i:deinterleaving_num:end])]; end received_bit=Viterbi_decode(deinterleaved); for EC_dummy=1:1:raw_bit_len, if bits(EC_dummy)~=received_bit(EC_dummy), nobe=nobe+1; end if nobe>=nobe_target, break; end end if (nobe>=nobe_target) break; end end = BER(i_SNR) = nobe/((i_frame-1)*raw_bit_len+EC_dummy); fprintf('bits_option:%d,SNR:%d dB,BER:%1.4f\n',bits_option,SNRdB,BER(i_SNR)); end figure; semilogy(SNRdBs,BER); xlabel('SNR(dB)'); ylabel('BER'); title(['Bits_option:',num2str(bits_option)]); grid on; end将这段代码改为有噪声的情况

2023-06-12 上传