• 【串口通信】labview实现串口通信


    labview实现串口通信



    学习labview有一段时间了,发现了其中功能的强大和编程的简洁性,高效性
    现在初步实现了串口的通信,把其中的体会和实现过程写出来,权当抛砖引玉
    其中的串口采用的是Rs-232,D型口,共九跟针,其中能用的就是三跟针脚,2,3,5,一个是发送一个是接受,一个是接地,如果做一个串口线延长线的话,只需连接这三根针脚即可,就是2连3,3连2,5连5。
    在labview中采用的visa,首先是进行串口设置,设置串口号,波特率,在这里面只要设置这两个就可以了,其余的采用默认,其中特别注意的是要安装visa驱动包,只有安装了这个驱动包,你的串口才可以选择,一般现在的电脑上只有一个串口,那么为了调试方便,这里有两个工具可以推荐,一个叫做串口虚拟软件,我用的是VSPDXP5,就是一个虚拟串口的软件,让你的电脑能够多虚拟两个串口,你要设置成让他们互联,另一个就是串口调试工具,叫sscom32.exe,用来调试串口通信的,可以验证通信时候成功。visa驱动包在ni网站上有,具体什么地址你可以到搜索一下.
    再就是visa read作用是从串口读取数据,这里面有个read buffer,从串口读取的数据
    visawrite向串口写入数据或者是命令
    还有visa close结束串口读取数据,目的是读完数据后,释放串口资源
    我的例子
    前面板图
    labview实现串口通信(一)
    程序图
    labview实现串口通信(一)


    labview也可以调用mscomm控件来实现串口通信,但是编程相对来讲比较复杂,一般不推荐,直接用labview中自带的visa是最方便的,在调试过程中的注意事项,

     

    一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。

     

    二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),

    这里是指串口通信中,如果不是在串口通信,我们可以做个小小的验证,

    labview实现串口通信(二)

    在前面板中,字符串在正常显示的情况下,你输入00,跟字符串00也会匹配,指示灯也会亮的,但是在串口通信中,一定注意,

    所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。(这一点尤其要注意)

    在与单片机通信的时候,假如说跟下位机的协议是发送字符串00,那么开始采集信号,并显示出来,如果你也发送00的话,跟字符串根本是不一样的,首先要经过变化,因为00对应的ascii码是4848,16进制就是3030所以你发送的字符串在16进制下也应该是3030


    在调试的过程中,我们经常会发现有收到的数据延迟的现象,现在提出几点解决的方法:

    (1)在循环中加入适量的延时,通过一个简单的例子看,
    labview实现串口通信(三)
    你会发现在cpu的占用率在加延时和不加的时候有很大的区别,当加的时候基本不占,而不加延时的时候达到100%。我在调试串口通信时候,发现whileloop里加一个延时会有很好的效果(假如有一个或某几个线程占用了 100% 的CPU,此时系统对其他线程就会反应迟钝。例如,程序的执行线程占用了100%的CPU,那么用户对界面的操作就会迟迟得不到响应,甚至于用户会误认为程序死锁了。所以在程序中要尽量避免出现100% 占用 CPU 的情况。 目前大多数的计算机还是单核单个 CPU的,因此要避免任何一个线程试图 100% 占用 CPU 的情况).
    (2)visa read的字节总数最好用一个属性节点来代替
    labview实现串口通信(三)
    因为我们不知道数据缓冲区有多少个字节,这样就不需要去设定了
    (3)经常看到会有人说串口里面有一堆数据,但是去读的时候却读回来一点点,每次均不相同,这种怀状况是由于串口有一个serialconfiguration这个节点上面,有一个terminationchar,大家将它设为F就可以了,因为遇到这个终止符,它就会停止读数,所以读回来的就会少了!

  • 相关阅读:
    利用systemtap学习Linux路由代码
    系统调试技巧
    linux调度器系列
    systemTAP 学习
    使用systemtap调试linux内核
    二叉树的可视化---数据结构
    linux进程调度之 FIFO 和 RR 调度策略---SYSTEMTAP
    python-gdb
    中国科技大学编绎原理视频 公开课网站
    java EE 学习
  • 原文地址:https://www.cnblogs.com/portb/p/12037351.html
Copyright © 2020-2023  润新知