GS1-128条形码详解:AI与FNC1的深度解析(v1.1)

需积分: 49 23 下载量 124 浏览量 更新于2024-07-28 收藏 724KB PDF 举报
本文是一份关于GS1-128条形码的深入详解文档,版本为v1.1,由作者CrifanLi编写。GS1-128是一种全球通用的条形码系统,它在商品、服务和物流管理等领域广泛应用,确保了信息的准确和标准化交流。本文旨在介绍GS1-128的起源、原理和结构,特别是关注两个关键元素:Application Identifier (AI) 和 Functionnal Character Set 1 (FNC1)。 首先,GS1-128的名称来源于其128位的条形码结构,这是与早期的GS1-13条形码系统相比的主要区别。GS1-128的设计目的是支持更复杂的数据编码,以便容纳更多的产品信息,如供应商代码、产品代码、序列号等。 AI,即应用标识符,是GS1-128条形码中用于识别特定应用领域和数据编码格式的部分。它由前缀段和厂商代码组成,前缀段根据不同的应用领域(如药品、零售、物流等)有不同的代码,帮助读取设备快速识别条形码的用途,以便正确解析后续的数据。 FNC1,全称为Functionnal Character Set 1,是一个特殊的条形码字符,用于指示接下来的数据部分将使用特定的字符集。FNC1的存在允许在条形码中灵活地处理不同语言或特殊字符编码,确保了国际间的信息流通无障碍。 文章详细阐述了AI和FNC1的功能、使用场景和编码规则,还提供了多种格式的下载选项,包括HTML、PDF、CHM、TXT和RTF,以便读者根据个人需求选择适合的格式进行阅读。此外,文档还包含了修订历史,记录了每次更新的内容和时间,显示了作者对维护和更新内容的持续关注。 这篇文档对于理解和使用GS1-128条形码及其AI和FNC1功能至关重要,无论是对技术开发人员、供应链管理者还是从事商品编码工作的专业人士,都是不可或缺的参考资料。通过学习和理解这些概念,用户能够优化条形码的生成和解读过程,提高效率并减少错误。

Fortran程序: parameter(pi=3.1415926535) real kn real,allocatable :: vs(:,:),vf(:,:) a=1234.; n0=7; ny=100; u0=1. b=a/float(n0); ds=b/float(ny); nx=n0*ny errs=1.e-6; errf=1.e-6 allocate(vs(0:nx,0:ny),vf(0:nx,0:ny)) vs=0.; vs(1:nx-1,ny)=u0; vf=vs !---------------------------------------------------------- open(1,file='nvs.dat') do i=1,nx-1; x=float(i)*ds do j=1,ny-1; y=float(j)*ds err=1.; nc=0 do while(err.gt.errs) fnc=2.*float(nc)+1.; kn=pi*fnc/a t=sin(kn*x)*(1.-exp(-2.*kn*y))/(fnc*(exp(kn*(b-y))-exp(-kn*(b+y)))) err=abs(t) vs(i,j)=vs(i,j)+t nc=nc+1 enddo write(1,*) x,y,nc vs(i,j)=vs(i,j)*(4.*u0/pi) enddo enddo close(1) open(1,file='vs.dat') do i=0,nx; x=float(i)*ds do j=0,ny; y=float(j)*ds write(1,*) x,y,vs(i,j) enddo enddo close(1) !---------------------------------------------------------- err=1. do while(err.gt.errf) do i=1,nx-1; x=float(i)*ds do j=1,ny-1; y=float(j)*ds t=0.25*(vf(i+1,j)+vf(i-1,j)+vf(i,j+1)+vf(i,j-1)) if(i.ne.1.or.j.ne.1) then err0=abs(t-vf(i,j)); err=amax1(err,err0) else err=abs(t-vf(i,j)) endif vf(i,j)=t enddo enddo enddo open(1,file='vf.dat') do i=0,nx; x=float(i)*ds do j=0,ny; y=float(j)*ds write(1,*) x,y,vf(i,j) enddo enddo close(1) !--------------------------- a0=0.5*a; b0=0.8*b open(1,file='a0.dat'); open(2,file='b0.dat') i=nint(a0/ds); do j=0,ny; write(1,*) float(j)*ds,vs(i,j),vf(i,j); enddo; close(1) j=nint(b0/ds); do i=0,nx; write(2,*) float(i)*ds,vs(i,j),vf(i,j); enddo; close(2) !--------------------------- write(*,*) err,i0,j0 deallocate(vs,vf) stop end

2023-06-07 上传