本周我除了写公司的方案,界面设计等等琐事之外。在技术方面实现了使用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