找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1379|回复: 9

请教一个功能的实现方法!事件结构相关的。。。

[复制链接]
发表于 2008-4-14 10:49:13 | 显示全部楼层 |阅读模式
各位好,我要用LabVIEW实现和DSP的串口通信,我这边发送召唤报文,DSP收到后给我响应,具体的功能如下:
1、正常状态下,有两条状态的召唤报文循环发送,即报文A、报文B、报文A、报文B……这样循环发送,大概每隔1s一条报文吧,DSP收到报文A\B后,会马上响应,给我传回数据报文
2、前面板上有“参数设置”这样的“点击”才会发生的事件,如果点击这样的命令,就会打断原来报文A\B的发送,而发送一条“参数设置”的召唤报文,即为报文C

问题是,点击按钮发送报文C的时刻是任意的,有可能打断了报文A\B的响应报文,即可能串口正在接收报文A/B的反馈报文,这个时候点击了“参数设置”,就会导致报文接收不全或者命令发送不出去!!

请问我该如何调整我的程序结构呢,请大家帮忙,谢谢!!

目前我用的是while+event structure的结构实现的,在事件结构的timeout事件中实现循环发送报文A/B的功能,报文C在另外一个点击事件中实现
发表于 2008-4-14 10:52:18 | 显示全部楼层
你确定你这样的架构存在问题?点击发送报文C不会中断A/B的发送吧?
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-14 10:59:45 | 显示全部楼层
可是因为报文A\B的返回报文数据量都很大,点击发送报文C时,会造成接收报文不全的情况
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-14 11:01:08 | 显示全部楼层
还有DSP的响应也会有延时的,另外LabVIEW做串口通信程序时,不是还要在串口写和串口读之间加个几百毫秒的延时吗?
回复 顶

使用道具 举报

发表于 2008-4-14 11:19:04 | 显示全部楼层
先回答最后一个问题,不用延迟的,因为这两个vi自己会等待的,等写完或者读完设定的字符数才会继续往下执行
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-14 11:23:49 | 显示全部楼层
飞雨天版主,我用的是Byte at port这个属性节点来接收串口收到的报文的,不是设定报文的字符数呢,因为每条报文的长度是不一样的,没有办法设定长度啊?
难道要设定一个最大长度的报文字数?

谢谢版主的指导!!
回复 顶

使用道具 举报

发表于 2008-4-14 11:32:32 | 显示全部楼层
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-14 11:45:24 | 显示全部楼层
回复 顶

使用道具 举报

发表于 2008-4-14 12:37:04 | 显示全部楼层
那么一个简单的方法就是在你A/B报文的那个事件中,串口发送的后面,加个延迟,保证报文能完整接收;
一个复杂的方法就是在报文中加如校验,比如最后一个字节就是校验码,然后在上位机对每个接收的报文的数据进行校验运算,看和发送上来的校验码是否相等,如果出错,就把报文抛弃
回复 顶

使用道具 举报

 楼主| 发表于 2008-4-14 12:52:53 | 显示全部楼层
呵呵,我是按照版主说的复杂方法做的,就是加了校验,但是就会发生丢失报文的情况,可是和我通讯的写DSP程序的同事特别较真。。。所以我才要继续完善我的程序

多谢版主呢!!

附件是我的程序大概结构,请版主再看一下

[ 本帖最后由 seahllgirl 于 2008-4-14 13:22 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-30 11:16 , Processed in 0.109324 second(s), 11 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表