logo资料库

LabVIEW的串口通信数据校验和的实现方法.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
基于 LabV IEW 的串口通信数据校验和的实现方法  陈金平 ,等 基于 LabV IEW 的串口通信数据校验和的实现方法 Im p lem en ting M e tho d o f Se ria l Comm unica tion D a ta Checksum B a sed o n LabV IEW 陈金平  王生泽  吴文英 (东华大学机械工程学院 ,上海  200051) 摘  要 : 串行通信在基于 PC机的测控领域中的应用非常流行 ,为了避免通信差错需要对数据进行检错 ,较常用的方法有异或和、校 验和 、循环冗余码校验 (CRC)等方法。重点介绍了校验和的实现原理以及基于 LabV IEW 的串口通信数据校验和的实现方法 ,并对该 方法在 PC机上进行了实际验证 。实验表明 ,该方法简单实用、运行可靠 ,可在基于 PC机的测控程序中加以实际运用。 关键词 : 虚拟仪器  LabV IEW  串口通信  校验和  冗余 中图分类号 : TP311. 13    文献标志码 : A Abstract: App lication of the serial communication is very popular in the PC In order to avoid communi it is necessary to check data. The methods of XOR sum check, checksum and cyclic redundancy check ( CRC) are commonly based measurement and control areas. cation errors, used. The imp lementing p rincip le of checksum and the serial communication based on LabV IEW and its data checking method are introduced emphatically. The method is verified in PC in p ractice, and the results show that the method is simp le, p ractical, and the operation is reliable. It can be used p ractically in measuring p rogramm ing based on PC. Keywords: V irtual instrument LabV IEW  Serial communication Checksum Redundancy 0 引言 在基于 PC机的测控领域中 ,虚拟仪器技术的应用 232串 越来越广泛 ,由于大多数 PC机都有 1~2个 RS 行通信接口 ,因此 ,串行通信非常流行。串行通信是一 种古老但目前仍常用的数据传输方法 ,它用于 PC机与 其他仪器 (例如 MCS 51单片机、变频器等可编程仪器 ) 或者与另外一台计算机之间的通信。通信最终目的是 将发送端发送的数据正确无误地传到接收端 ,由于种种 因素的影响 ,接收端可能会收到错误的数据 ,甚至数据 根本就没有收到。在进行异步通信时 ,为了避免这种差 错 ,目前大多采用检错重发的方法加以改正。随着高性 能处理器的出现 ,在实际应用中已越来越多地运用软件 方式对传输的数据进行检错。其中较常用的方法有异 或和、校验和、循环冗余码校验 (CRC)等方法。对于一 般的测控系统采用较多是前两种方法 ,本文着重讨论基 于 LabV IEW 的串口通信数据校验和的实现方法。 1 校验和实现原理 在微计算 机领 域 中广 泛采 用 一种 称作 校 验 和   修改稿收到日期 : 2007 - 05 - 13。 第一作者陈金平 ,男 , 1963年生 , 2001年毕业于东华大学机械工程学 院 ,获硕士学位 ,讲师 ;主要研究方向为软件工程 、机电一体化等 。 的较简单的块校验方法 。一块数据的校 验和 是 一 个 8 位的字节 , 它与该块数据一起传送到接 收端 , 接收端重新计算收到的数据块的校验和 ,若该校验 和与发送端送来的校验和字节不一样 ,则表明该数 据块在传输过程中出错 。通常校验和按 如下 步 骤 计算 : 将数据块的所有字节相加 ,丢去进位 ; 将上步 计算出的 8 位字节取反 ; 将取反后的值加 1 即为校 验和 。 接收端接收数据判断校验和与发送端送出和校验 字节是否一致的简单方法是 :将数据块的所有字节求 和后再与接收的校验字节相加并丢弃进位 ,若结果为 0则表明数据块传送正确 ,否则出错 。例如 : 数据 块 02H, 3AH, B4H, 23H 的 校 验 和 计 算 如 下 :    ① 求和并丢弃进位 02H + 3AH +B4H + 23H = 13H ② 求反加 1 13H + 1 = 00010011 + 1 = 11101101 = EDH (校验和 ) 若接收 端 收 到 一 组 数 据 : 02H, 3AH, B4H, 23H, EDH。其中最后一字节为校验和 ,此时检错方法如下 : 02H + 3AH + B4H + 23H + EDH = 00H (丢弃进位 ) 。 上式结果为 0,从而认为数据 02H, 3AH, B4H, 23H 被 正确地从发送端传到接收端 。 23 PROCESS AUTOM AT IO N INSTRUM ENTAT IO N Vol. 29 No. 3 M arch 2008
基于 LabV IEW 的串口通信数据校验和的实现方法  陈金平 ,等 2 LabV IEW 中校验和的实现方法 2. 1 发送端程序设计 2. 1. 1 设置顺序框架 启动 LabV IEW , 在其框图程序中加入顺序框架 ( sequence structure) ,在顺序框架的右键快捷菜单中选 择 Add Frame After,再添加两个顺序框架。这样就形 成了 0、1、2逐步执行的三个顺序框架 ,它们分别对应 串口的参数设置、发送数据 、接收数据 。 2. 1. 2 设置串口参数 LabV IEW 共有 5个串行通信节点 ,分别实现串口 设置 、写串口 、读串口、检测串口缓存 、中断等功能 ,这 些节点位于功能模板 → Instrument I/O 子模板 → Serial 子模板中。在 0号顺序框架中 ,按图 1所示设置串口 , 其中在此顺序框架中引入了本地结果变量 ,利用此变 量将端口号传递给后面的顺序框架 。 图 1 串口参数设置界面 Fig. 1  Interface of serial parameter setting 2. 1. 3 校验和的计算并发送数据 在 1号顺序框架中 ,通过 For循环将 5 组十六进 制字符转换为二进制数并相加 (丢弃进位 ) ,然后取反 加 1。将此结果再转换为十六进制字符 ,与原 5 组十 六进制字符利用 Build A rray节点组成发送数据块数 组 ,通过写串口节点分 6 次发送至串口。发送数据界 面如图 2所示。 发送 ! ”信息 。发送端在接收到此信息后 ,必须再次发 送。因此 ,在 2 号顺序框架中 ,通过读串口节点 ,来接 收返回信息 ,其框图程序略去 。从发送端前面板图中 可以看到该返回信息 ,如图 3所示。 图 3 发送端前面板 Fig. 3 Front panel of sending end 至此发送端程序设计完毕 ,保存此程序 ,取名为 “发送数据. vi”。 2. 2 接收端程序设计 接收端的设置顺序框架和设置串口参数设计同发 送端一样 。 2. 2. 1 接收数据检错 如图 4 所示在 1 号顺序框架中 ,先通过读串口节 点 ,将缓冲区中的数据全部一次性读出 ,并显示结果 。 通过 For循环将读出的整个字符串每两字节分别转换 为数字后相加求和 (丢弃进位 ) 。求和结果通过前面 板的“检错结果 ”显示 ,若显示为“0”,表明数据传送无 误 ,否则即错 。此外 ,在该顺序框架中再次引入了一个 本地结果变量 ,利用此变量将求和结果传递给后面的 顺序框架 ,以便判断正误并反馈信息 ,其接收数据界面 如图 4所示。 图 2 发送数据界面 Fig. 2  Interface of sending data 2. 1. 4 接收返回信息 接收端收到数据后经过检错 ,若无误就接收数据 而不返回任何信息 ;若有错就发送“数据有误 ,请重新 《自动化仪表 》第 29卷第 3期  2008年 3月 图 4 接收数据界面 Fig. 4  Interface of receiving data 2. 2. 2 判断正误并反馈信息 如图 5 所示在 2 号顺序框架中 ,通过选择结构来 判断收到数据的正误 ,求和结果通过本地结果变量输 入 ,若求和结果为“0”,则不回发任何信息 ;若求和结 33
2 2 2 2 2 3 2 3 3 3 3 基于 LabV IEW 的串口通信数据校验和的实现方法  陈金平 ,等 果不为“0”,则回发“数据有误 ,请重新发送 ! ”信息 ,请 求重新发送数据。至此接收端程序设计完毕 ,保存此 程序 ,取名为“接收数据. vi”。 相连即可 。数据线做好后 ,将其分别插到电脑后面的 两个 RS 232串行口上。 启动电脑 ,分别打开“发送数据. vi”和“接收数据. vi”两程序 ,在串口参数设置中 ,串口号一个选“0”,另 一个选“1”,其他取默认值即可 。在“发送数据. vi”的 前面板的数据块中分别输入本文例子的 02H、3AH、 B4H、23H四组数据 ,然后 ,先运行“接收数据. vi”再运 行“发送数据. vi”。 4 结束语 在开发基于 PC机的测控程序中 ,运用 LabV IEW 开发串口通信程序简单方便 、运行可靠 ,其数据校验和 的实现简单明了 。该程序稍加改动即可实现数据异或 和校验 ,并能在实际基于 PC 机的测控程序中加以应 用。 参考文献 [ 1 ] 杨乐平 ,李海涛 ,肖相生. LabV IEW 程序设计与应用 [M ]. 北京 : 电子工业出版社 , 2001. [ 2 ] 于英民 ,莫玮 ,于佳. 计算机接口技术 [M ]. 北京 :电子工业出版 社 , 1999.        / 调用 un register_ ne tdev ( )注 销 这 个 ne t_ device ( )结构 释放 p riv空间 / / /   kfree (p riv) ; }   } } 7 结束语 AX88796与 NE2000芯片兼容 ,在 L inux kernel中提 供了 NE2000网卡的驱动程序 ,包括 3个文件 ,即 ne. c、 8390. c及 8390. h,在 ne. c源程序中调用了 8390. c程序中 的很多函数。我们对 ne. c、8390. c作了少量的改动用来 驱动 S3C2410X平台上的 AX88796。对修改后的驱动程序 进行编译 ,编译后的 ne. o、8390. o两个文件拷贝到目标板 的 /mnt/ yaffs/ lib /modules/2 pxa1 / kernel/ driv ers/ net/目录下 ,以 AX88796以太网控制器为网络接口的 S3C2410X嵌入式系统中的网络接口就可使用了。 参考文献 [ 1 ] 于明 ,主编. ARM9嵌入式系统设计与开发教程 [M ]. 北京 : 电 rmk7 4 18 子工业出版社 , 2006: 223 - 230. [ 2 ] 杜春雷 ,主编. ARM 体系结构与编程 [M ]. 北京 :清华大学出版 社 , 2003: 250 - 329. [ 3 ] 刘文涛. L inux网络设备驱动程序设计 [ DB /OL ]. [ 2005 - 07 - 24 ]. http: ∥www. embyte. com. [ 4 ] 杜辉 ,舒莲卿. 基于嵌入式 W eb服务器的网络设备测控系统设 / / 图 5 发送反馈信息界面 Fig. 5  Interface of sending feedback information 3 实验 PC机一般有两个 9 针 RS 232 串行口 ,利用它们 可以进行发收实验。首先做一条三线的数据线 ,买两 个与 RS 232串行口相配的 9孔插座 ,将 1 m 长的导线 并截为三段 ,将 GND 相连接 , TXD 与 RXD 交叉连接 , 也就是将两个插座的 5号孔相连 , 2号和 3号孔交叉 (上接第 31页 )           if ( register_netdev ( dev) = = 0) { found + + ; continue; } …… 进行管理 。 / } 模块卸载功能由 cleanup _module ( )函数来实现 。 如下所示 :   void cleanup_module ( void) { int this_dev; for ( this_dev =0; this_dev p riv ! =NULL) {  if ( dev  void p riv = dev  struct pci_dev idev = ( struct pci_dev ) ei_status. p riv;  if ( idev) idev > deactivate ( idev) ; > p riv; / 将已经激活的网卡关闭使用   free_irq ( dev   release_region ( dev > irq, dev) ; > base_addr, NE_ IO _EXTENT) ; / 释放网卡占用的 I/O地址空间     unregister_netdev ( dev) ; 计 [ J ]. 自动化仪表 , 2006, 27 (3) : 7 - 10. 43 PROCESS AUTOM AT IO N INSTRUM ENTAT IO N Vol. 29 No. 3 M arch 2008
分享到:
收藏