欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    labview如何进行串口通信——labview串口通信全方位了解.docx

    • 资源ID:1465037       资源大小:147.86KB        全文页数:11页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    labview如何进行串口通信——labview串口通信全方位了解.docx

    串口可以说是我们最简洁见到,也最简洁接触到的一种总线,台式机上一般都有二个,而现在许多卜位机、仪器等许多都还是运用串口通信的。论坛上许多挚友都常常会运用到串口,并遇到些问题,这里仃必要做个具体的说明,以便利广陶会员挚友便利运用.首先补充一个比较重耍的问题,就是在1.abvIEW中运用申口的话确定要光安装VISA这个驱动,然后生成的EXE运行时也须要在目标机上安装VlSARuntimeEngine,可以在打包时一起打包。1 .串口扩展的问题I先说一下串11的扩展问题,一般的台式机或工控机上都至少有二个串门,一般都是够用的,但是现在市场上已经很雄找到带串口的笔记本了,而有时候在外出调试时须要在笔记本中运用到串口的,这时般是运用USB-RS232的转接线,价格从十几到一百多都有,许多挚友反应在运用价格低的转接线时会出现一塌糊涂的问题,而贵一点的线就很少听说有其它问题的,所以大家在运用便宜的USB-RS232转接线时要特殊留意线的质量,遇到一些惊奇的问题时先考虑换一根好点的线。PC1.RS232扩展卡也同理,便宜的卡也简洁出问题,尽量:买好点的,以免因小失大。PCl-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接战和扩展卡一般是要装驱动的。2 .串口功能的确认:在运用串口之前,最好先确认一下串口是否正常,特殊是运用转换接或扩展卡的。检查的方法很简洁,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口个件般是用串口调试助手,很出名的,也好用。如下图所示:4111iflUh手SCoBAsaiirtantV2.2For1II9X/HT/2000图1串口调试助手打开软件,选择已经短接好的串口号,点击“手动发送”,假如串口是好的,2、3脚乂短接起来了,立刻就可以在上面的接收框里看到接收的数据就是发送的数据。略微要留意一下的是有些电脑的CoMI和CoM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,假如COMI没接收到,可以再先CoM2再发一次看一下。3 .串口线的检查:检查好串口后,一般也要留意一下运用的串口线,标准的串口线是9根线都是用上的,但有些是只运用了三根线的:2、3、5.第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的申线,简化的串口线能用上的地方,标准的串口线也确定能用上,因为标准线的9根线已经包括了简化串U线中的3根线,但标准串口线能用上的地方,简化串口线就不确定能用上,所以在运用串口线之间确定要确定好串口线的类型,般买的事口线都是标准线,但自制的事口线因为应用场合不同就耍先确定一下。G串口线还有一个地方须要留意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭/一下,所以叫交叉线,因为正常运用时,这边其次脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常运用。但是有些状况F.2、3是直连的,即这边的第2脚连接另边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用手延长申的,比如须要将工控机的申口接头引到机柜表面上时,就运用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再运用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候般也会问你买直连的还是交叉的,要区分对待。事口线还有一个耍略微留意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪罂厂家尽然用RJIl(水晶头那种)作为串口头,让人不爽!总之,运用申口前确定要先确定好硬件没问题.不然很奢侈时间的.4 .串口参数设置:在1.abVIEW中运用串口时,有几个参数比较重要,须要先说明下的。个是申口初始化这个节点的“终止符''和”禁用终止符?“这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的卜六进制是“OxOA”,这是一个ASCll码,是一个换行符,可以从1.abVlEw中的字符串的不同显示形式看出来,如卜.图:MormilDisplayDHxDisplay/VCodesDisplayEnableTernmationChirCT)向国总,/拟仪器家园图2串口消息终止符左边是字符串的正常显示,中间是十六进制显示,右边是“'代码显示",这三个字符串的值都是一样的。终止符是10,表示在接收数据时,遇到ASal码为10的字符(即换行符)时就停止接收数据,后面会仃例子进行说明。而“禁用终止符?”的默认值是FA1.SE,即启用终止符,启用终止符会有什么效果呢?终止符的意思就是当程序接收到这个字符时,就认为已经到了全部数据的未端了,从而停止接收,不管后面还有没有数据。终止符是10,表示在接收数据时,遇到ASClI码为10的字符(即换行符)时就停止接收数据。可以做一个很简洁的试验,先短接串口2、3脚,然后将终止符设置为“0x33”,0x33是字符“3”的ASCII码,然后发送字符串可以看到接收回来的数据中只有“12”,即“3”被认为是字符串的未端1.它后面的数据就不再接收/.许多挚友就是因为这里设置钳误,导致接收数据时有时候只收到一半就没有了,特殊是在连续接收数据时,但又不是每次都只能收到一半,有时候也能接收齐全的,就是因为发送的数据中可能包含了终止符而使用口认为到了最终个字符了。般是将这个终止符禁用掉,即将“启用终止符?(EnableIerminaloE”这一端输入为False即可。另外还有一个比较重耍的设置,就是VISAREAD的“读取字节数”这个输入,由于在串口通信中,假如指定读取100个串口缓冲区的字节数,假如当前缓冲区的数据量不足100个时,程序会始终停在VISAREAD这个节点上,假如在超时的时间(默认是10秒)内还没仃凑足100个数据的话,程序就会报,*TimeOUr的错误,假如超时时间设置得太长,有可能导致程序很长时间停止在VISAREAD这个节点上。解决的方法是运用“BytesatPOrr这个串口的屈性节点,在VISA>>Scrial>>advanceF,也可以在VISA资源线上右键创建属性节点串设置>>BytesatPort.如下图:VitiVl«heHl>EXCk<rMTittir3,ia,NZ2QQvxsaruCr*yiyCtuttCMrlIacatcrS011Vi4sFiUAllastu>cMrMr«Ml8aPAIyB<r>McVXQeVIX<ruyYibAcXc<r><r(i4tFrf4r<rfwJMtrCl<tSntrf*cInfarwtticAVwstMi>kfwWIM1.CiaerUSttM<«>»<<Jg4S<(Uv<>K(ttrt4S<<4c>(tUJgnCI»ra/rast*<TCTIPSt<>a<gWy图3BytesatPort这个底性节点读取当前串口缓冲区有字节数,然后将它的输出连接到VISAREAD的“读取字节数''这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。口?YInStr9图4运用BytesatPort5 .在1.abVIEW中运用串口目前申口的应用一般有二种类型的(以我接触到的来分类,不严格),一种是仪器限制类型的,一般是上位机发送一个指令,然后下位机作出响应,返回数据给上位机,上位机再读取出来,完成一次通信,即一问一答:另一类是被动接收形的,即下位机会始终发送数据上来。这二种类型的串口通信在处理上会不太样。5.1 仪器限制类型由于在仪罂限制时般都是这种问答的方式,所以叫它仪器限制类型。以仪器限制为例来说一下须要留意的事项.首先是要确认仪器选择的通信模式是串口通信模式。现在的仪器般都至少有二种通信模式,一种是RS232,一种是GPIB,假如仪器是设置为GPIB通信的话,RS232是不行能通信上的,所以要先确认一下,方法一般是在仪器面板上选择设置远程限制>>GP1B,RS232各个仪器略微不同,可以查仪器手册看下。然后就是确认串口的通信参数的配置,包括波特率、数据长度、校验方法等,有些仪器的某些参数是固定的,比如校验方法固定为奇校验,不能修改,只能在电脑上跟仪器设置为一样的。波特率一般是可以修改的。这些参数的配置确定要依据仪器手册上的来设置.假如参数设置不正确,也能收到一些数据,但一般是乱码,假如收到的数据都是乱码的话,就要先检查一下串口参数设置是否正确了。只仃电脑和仪器边的串口参数完全样时才能收到正确的数据。接着是要留意发送指令和读回数据之间要有确定的延时,即VISAWRITE和VISAREAD之间要有确定的延时,般200考秒即可,因为串口是底层硬件,数据从软件到串口上要一点点时间,然后仪器对指令作出响应也要一点点时间,这些时间加起来确定比软件运行二个节点的时间要短,所以延时是确定要加的。在调试时假如发觉正常运行时不能收到数据,但高亮运行就能收到数据,就很有可能是没有加延时的缘由!或者是发一个查询指令,但返回的是上一条查询指令的结果,也可能是因为没有延时或延时不够。5.2 被动接收类型被动接收形的串口通信略微麻烦一点山干上位机是被动接收的,上位机不知道什么时候起先下位机就已经有数据上来了,很布可能下便机发送到一半时,上位机刚好起先接也数据.这时只能接收到后面半的数据了,所以对于这种通信,殷是采纳数据帧的方式进行通除这种数据物的通信方式至少由三部分数据组成;帧头、数据、物尾(假如数据是固定长度的话,好像帧尾也可以省掉)。帕头是为了告知上位机:从这以后的数据就是有用的数据了,相当于约定好的暗号,一殷帕头至少用二个以上字忙假如只用一个字节的话,万一数据中的数据跟这个帧头一样了就会误以为这个数擀是帧头从而导致解析数据出招.怵尾的作用也差不多,告知上位机从这之前的数据才是有用的数据.但事实上一般的数据帧远不止这几个部分,还会加上一些校验字节、时间信息、帧计数器之类的东东在上面.其中校验字节是为了检查数据在传输过程中有没有出错的,跟序11的校验位要区分清断,校验位也是检ft数据传输时有没有出1错的,但由底层硬件来实现,校验方法由标准规定好,但有几种可以选择,只有一个位(Bi,只能是O或I)。校脸字节是由软件层来实现的,至少有一个字节(Byle.有8个位),而且校验方式由用户定义,特别敏捷.由于被动方式中卡口的慑冲区中始终会有数据在,为了保持数据的连续性,在读取数据时跟第一种仅零限制类型不一样.而是实行将读取的全部的小11数据都保存在移位寄存着中.在软件上处理完这些数据后再将它们从移位寄存器中删除.他于VISAREAD的输出是字符串.所以一般运用连接字符串”这个函数将它勺连接起来.然后接到循环结构中的移位寄存器中进行保存,当移位寄存器中的数据及达到确定时或满窗数据处理的条件时,才停止这个循环输出读取到的数据.一股如卜图所示:图5被动接收类型中的数据接收在接收下位机发送的帧数据时,确定要先了解帧格式,这样才能正确解析出帧里面的数据来.下面以例子来说明数楙帧格式的通信.设定通信数据帧每7个字节为一帧数据.其中以OXAC、0x96二个字节作为数据帧头,第三、四个帧头为帧计数器,最大值为OXFFFF到达城大位后曳新从0起先计数.第4、5、6三个字节是数据信息,分别代表数据的中学低位,第7位为状态标记字节,它的第一位为1时表示下位机出错,为。时衣示功能正常.由于1.abVIEW中接收到的数据都是以字符中的形式显示图来的,所以须要将字符串转换为ASCII码,般可以干脆运用“游换为U8数组”这个函数,如卜图所示:stringunspedbyteArray图5字符申转换为U8字节转换为U8字节后,得到的是所传输字符的ASCII码,我们就很简沽进行数据帧的推断了,现收到以卜的字符*数据:三trncUrigQdbyttArray广广一一32Ienedbyte*rry2JrheC<寸。KSoEa042156EO口721118工51013167©17图6实际接收到的字符申上图中下华部分显示的数殂是运用"字符串转换为U8数组”的函数转换之后将到的数组,.个是卜六进制显示,另一个为I进制显示。比照定义的数据帧格式,就很简洁得到我们须要的数据了.苜先是要看从哪31起先才是完整的第一帧,从上面I六进制显示的数组中我们可以存到,并不是第一个字节就是我们须要的帧头.因为下位机是始终处于发送数据的状态,很可能在串口发送一帧数据的过程中串“就被初始化或者被清空了次缓冲区,那么这帧数期的前面部分数据可能就会去失,只留下后面部分数据。以上图为例子,第一二个字节为0x32、0x22.显示不魁我们要的帧头,我的要的帧头是在笫6、7个字节,以程序来实现的话就是先杳找第一个帕头,运用“搜寻字符申“,假如找到则推断它下一个字节是否是其次个帧头,假如是,表明已经找到帧头,输出帧头的位置:假如它下一个字节不足其次个帧头.说明这里不是真正的帧头,接着查找下一个帧头,直到找到帕头或搜寻完整个字符中都找不到帕头。这是一个程序的算法问题.具体实现的程序如下图所示:图7帧头森找程序帧头在找到以后,再找数据就简沽了,依据之前的定义,第4、5、6个字节是才是我们要的数据,所以干脆运用索引号进行索引输出即可.图8获得实际数据一般状况下,假如是用三个字节表示一个数据的话,那么这1个字节分别表示为一个数据的中学低字节,即离字节要柒以25536再加上中字节乘以256再加上低字节的,这样定义后可表示的数据的范用就会扩大许多.但这里为了说明问腮,干脆认为三个字节的数据相加就是我们要的实际数描.在实际运用过程中应当依据帧格式的字义来解析这个数据.另外帧格式中定义了最终一个字节为状态标记位,所以提取数据前还要检变一下这个标记位是否正常,不正常时要进行相K的处理.这里不再具体描述.至此完成一次数据帧的提取.假如是没什么特殊的要求的话,这里应当也算到一段落了,有一些对溯试时间有要求的地方.就会要求在最短的时间内褥到最多的信恩.图6中我们可以看到,接收到的数据帧中,除了中间一个完整的帧之外,头尾还书"一些无用的数据,其实这些数据中也包含了有用的信息的!比如我们可以从OXAC0x96这二个帧的位置中推断中它前面的0x22、0x2A,0x38这三个字节也是我们想要的数据字节,但他由于没有接收到它的帧头,所以程序没能提取出来,但我们可以从后一帧的帧头推算出前面那他的数据字节是麒些,即使没收到前面那T矶的岫这里只给出一个流程,不再给出具体的程序.另外有可能接收的数据长度比较长.可旎就不止包含U-帧的数据在里面,所以在程序中也要推Iui-下剩下的数据还够不够-帧的数据匕度,假如够则可以依据上一次杳找的帧头位置+数推帆长度来确定下一个数据帧的帧头位置了,不须要运用搜寻的方法,也可能存在处理完一帧数据后,剩下的数据不够个帧的.这时UJ以将这些剜卜的数据保用起来,将它群加到下次接收到的数据前面.组成新的数据再进行处理.去掉已经处理的数据可以运用珊除数组元素”这个函数来实现.这里也不再给出具体的程序.6 .串口数据类型的转换由于IabVIEw中VISARCad/Write这二个函数都是只能读取,写入字符小类型的数据的,而行时候须要接收/n入的数据类型不确定是字符用,导致在刚起先接班的时候会行点困惑,在进行数据转换时,只要记住计兜机中全部数兆都是以二诳制保存这个原则就简洁解决问应了。4口线上传输的也是凹凸,串口接收到的也是:进制数据,只是到1.abV正W后破转换为字符小格式了.还是以例子进行说明.6.1 1.abVIEW从串口接收数据假设1.abVIEW从事口接收到的数据为“1234”(正常显示模式卜),那么这个数据在小口底层的时候其实是这样的二进制数据:00110001(X)MOOlOOOI100Il00110100只是在1.abVIEw中,这些:进制数据是以字符申形式显示出来的,它们的实顺还是:进制数据,这几个二进制数据咕换为I进制数据分别是-49,50.51.52-.由于字符串都是以ASCu码形式保存在计算机中的.那么4950.51.52这几个数在AScn表中就表示是孚符率”1,2,3,4',所以这几个数据在1.abVIEW中就显示为字符申的1,2,3,4了。战如明白这里面的转换关系,那么要进行数据转换时就很简洁了,比如上面的例子中,假如1.abVIEW中接收到的是字符串“1234”,而原本下位机传送的是数做型数据,只须要将“1234”字符串转换为对应的ASCIl值就是事实上下位机传上来的数据了,就是“49,50.51.1.abVlEW中将字符申转换为对应的ASCu值的函数是“字符申至字节数组转换”这个函数:图9字符串料换为字节故加上面说的是下位机发送的是数侑类型的数据的,运用“字符中至字节数组转换”这个函数.假如是下位面发送的是字符中类型的数据,那么1.abVIEW己经卜腌转换好了,个人总结:无论下位机发送的是何种类型的数据1.ABVIE从小I接收的时候总是招每8位二进制数,作为字符的ASCII码好读.6.2 运用1.abVIEW发送数据还有个问应是运用1.abvlEW发送数据的问遨假如下位机接收的是字符*数据类型的话,干脆用VlSA写入对应的字符串就行了,现在的仪涔般都是接收字符申的,所以可以干脆运用VlSA发送而不须要转换,假如下位机接收的是数值型数据的话,就须要转换-下,其中数位型又是十进制和卜六进制:种用得比较多,这.种数据间相互转换下就行了,其实是一样的。由于在1.abVlEW中字符中干脆竹十六进制的显示方式,所以发送十六进制的数批:比较便利.比如要发送十六进制数值类型的,0xAF那么在VISAWrite的写入缓冲区字符申常及上右键>>六进制显示,如图I,干脆输入“AF”即可,那么下位机接收到的就是正确的数据(十六进制数值类型)了.但实际运用过程中,一般都是须要将某个子Vl猿出一个动态的字符串通过VISAWrilc发送到下位机的.这时候就须要对数据进行转换一下.这个转换过程描述起来就是:将字符串A转换为字符小B.使得正常显示的字符率A跟十六进制显示的字符小B是一样的.由于转换目标(十六进制显示的字符小)的数据类型是十六进制,要想十六进制显示的字符申跟正行显示的字符申一样,这个正常显示的字符申必需都是十六进制的字符,即只住由0-9.A-F这I六个字母中的字母组合而成,否则就没方法使二种显示方式的字符串一样了.这个转换过程首先将字符串找换为十六进制数值型,然后冉通过招这个十六进制数值创建为一个数组,最终再运用“字节数组至字符中转换”这个函数转换为字符串即可,事实上就是图5字符申转换为U8字节的反向操作,只不过是这个十六进制的假初始类型是十六进制,要先转换为数值类型,具体程序如卜图所示。图IO正常显示字符串转换为相同的六进制显示的字符串由于十六进,数据由:个字节内成,而字符只有一个字符,所以每二个字符表示一个十六进制数据,FW如字符多于二个的话要先进行衽取,包二个字符转换为一个卜六进制数据,也可以用空格将正常故示的字符串每二个字符用一个空格阍开,然后先将这个字符串以空格为分隔符转换为一个字符小数组,再转换为十六进制数值再转换为字符串.须要留您一下的是假如正常显示的字符串并不是2的整数倍,僚么上图的转换程序就会少转换一个字符,可以用程序动态推断一下这个字符中的长度,假如是奇数的话在它最左边补一个“0”再运用上面的程序就正常了.7 .串口问题汇总:7.1 串口资源被占用:这时候在1.abVlEW会报错,提示申口号存在,但当前不能对其进行捺作,同时打开MAX时也可以在对应的事口号下看到同样的错误,这表示这个串口己经被其它程序占用了,比如行时候打开了串口谓试助手来调试串1.l然后乂想在1.abVIEw里面试-下,这时就会报这个错,因为串门已羟被中IIiBl试助手冏用了,它不能被二个程序同时运用.解决的方法是关掉其它程序即可.串口调试助手里也可以关闭这个H;口.还有一种状况是谓试OK后生成EXE.运行EXE也出现这个何题,这时是因为串口被原来的1.abVIEW程序打开,再用EXE打开时就会报错,解决方法是关掉原来的1.abvlEw程序.最好是关押1.abVIEW.在运用小口的过程中确定要关闭由口(运用VlSAC1.OSE),否则程序在退出的时候会报错说数据丢失。

    注意事项

    本文(labview如何进行串口通信——labview串口通信全方位了解.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开