CVI实现简单的VISA通信软件

本文介绍了如何使用CVI(Cooperative Visual Instrument)编程实现一个简单的VISA通信软件,重点解决了串口通信中可能遇到的超时重传问题。通过在发送数据末尾添加换行符,确保VISA在接收数据时能正确识别边界,从而避免超时错误。文中还提供了核心代码示例,包括连接、读写操作以及错误处理等。
摘要由CSDN通过智能技术生成

本周我除了写公司的方案,界面设计等等琐事之外。在技术方面实现了使用VISA实现简易的串口通信软件。

这次写的软件最大的问题就是超时重传,设置的字符串大小为1024,可你并不是写入这么多的字节,有可能你只写了两三个字节,那么这时,你就要给你的设备通信助手添加一个\n ,使他在传输的过程中没有延时,这样就不会再报超时的问题了。在VISA实现简易的NI VISA软件,在接收数据的时候他有一个标志就是遇到\n才会停止读取数据。所以就要在设备通信助手的时候在字符串的后面添加\n 这个字符。

就是下图的常用字符那块选择 [LF] 这个是\n的意思。这样在CVI的程序中就没有延时的问题了,超时的问题最根本还是数据传输有延迟所导致的。

给大家在遇到超时重传的问题时,提供一种思路。我使用了各种方法,网上搜资料之类的还是没解决,最后还是问同事才解决了。同事简直就是可爱的小天使呀,我太南了。
在这里插入图片描述

这个比较简单,本小白大概使用了不到三天吧,代码量也不大,话不多说,直接上代码。
#include <visa.h>
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include “visa.h”

static int panelHandle;
int FuncOpen();
int FuncClose();
ViSession DefaultRM;
ViSession ViHandle;
char readBuff[1024];
char writeBuff[1024];

int main (int argc, char argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /
out of memory */
if ((panelHandle = LoadPanel (0, “visa.uir”, PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
FuncOpen();
RunUserInterface ();
FuncClose();
DiscardPanel

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值