打印

有用VISA实现上位机与CYpress68013通信的吗?

[复制链接]
1216|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangzsa|  楼主 | 2015-10-4 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道如何做,请教下各位高手
沙发
zhuww| | 2015-10-4 21:18 | 只看该作者
Cypress 官方网站论坛上的CY7C68013 与NI VISA labview 的通信 "Interfacing FX2LP with LabVIEW using NI-VISA drivers"

使用特权

评论回复
板凳
zhanglli| | 2015-10-4 21:18 | 只看该作者
我做过 这个不难吧 LABVIEW装一个VISA驱动就可以了

使用特权

评论回复
地板
lium| | 2015-10-4 21:18 | 只看该作者
固件里把控制传输的代码写好,上位机中直接添加入对应的控制输入和输出

使用特权

评论回复
5
wangzsa|  楼主 | 2015-10-4 21:19 | 只看该作者

不用labview,我是用VS08,现在VI写函数不知道哪里错了,编译又没错,但是写不成功,以下是代码:
#define NIVISA_USB
#include <afx.h>
#include <stdio.h>
#include<stdlib.h>
#include <visa.h>
#include<string.h>
ViSession defaultRM,vi;//定义保存会话句柄的变量
static ViUInt32 writeCount;
static ViStatus status;
unsigned char* lpoutbuffer;
char DataChange(CString str)//十六进制转换函数
{
  int k=0,j=0,Revalue;
  for (j=0;j<2;j++)
  {
          if(j==0)
     Revalue=16;
          else
         Revalue=1;
          switch (str[j])
          {
          case '0':k+=0;
                  break;
          case '1':k+=Revalue;
             break;
          case '2':k+=Revalue*2;
                  break;
          case '3':k+=Revalue*3;
                  break;
      case '4':k+=Revalue*4;
                  break;
          case '5':k+=Revalue*5;
                  break;
          case '6':k+=Revalue*6;
                  break;
          case '7':k+=Revalue*7;
                  break;
          case '8':k+=Revalue*8;
                  break;
          case '9':k+=Revalue*9;
                  break;
          case 'A':k+=Revalue*10;
                  break;
          case 'B':k+=Revalue*11;
                  break;
          case 'C':k+=Revalue*12;
                  break;
          case 'D':k+=Revalue*13;
                  break;
          case 'E':k+=Revalue*14;
                  break;
          case 'F':k+=Revalue*15;
                  break;
          }
  }
  k=(char)k;
  return k;
}

int main()
{
  CString datastr,data;
  int  length,m,i;
  datastr.Empty();
  data.Empty();
  datastr="0A0170000000010000020200038F0004C0700500000600000700000804000900000C0F000D00000A01600B0B300A8050170202960400060C0F000D00000A01600A805004C07096";
  length=datastr.GetLength();
  m=length/2;
  lpoutbuffer=new unsigned char[m+1];
  for (i=0;i<m;i++)
   {
           data=datastr.Mid(i*2,2);
           lpoutbuffer=DataChange(data);
           data.Empty();
   }
   lpoutbuffer='\0';

  status=viOpenDefaultRM(&defaultRM);//打开缺省资源管理器会话
  if (status < VI_SUCCESS)  
   {
      printf ("Could not open a session to the VISA Resource Manager!\n");
      exit (EXIT_FAILURE);
   }
  status=viOpen(defaultRM,"USB0::0x0547::0x1002::NI-VISA-0::RAW",VI_NULL,VI_NULL,&vi);//打开仪器会话
  if (status < VI_SUCCESS)
   {
       printf ("Cannot open a session to the device.\n");
        exit (EXIT_FAILURE);
   }
  else
      printf ("open a session to the device successs.\n");

  status =viSetAttribute(vi,VI_ATTR_USB_BULK_OUT_PIPE,2);

  if(status<VI_SUCCESS)
           printf ("Error setting a response from the device\n");

  else
      printf (" setting a response from the device\n");

   status = viWrite(vi,(ViBuf)lpoutbuffer, (ViUInt32)(m+1),&writeCount);  
  // status = viWrite(vi,(ViBuf)datach, (ViUInt32)strlen(datach),&writeCount);  
  if(status<VI_SUCCESS)
           printf ("Error writting a response from the device\n");
  else
      printf (" writing a response from the device\n");
// delete[] lpoutbuffer;
  viClose (vi);
  viClose(defaultRM);
  return 0;
}
麻烦看一下,我实在找不到原因了

使用特权

评论回复
6
guoyt| | 2015-10-4 21:19 | 只看该作者
固件程序确保正确么?

使用特权

评论回复
7
hanwe| | 2015-10-4 21:19 | 只看该作者
用于VISA控制的驱动程序是否安装?

使用特权

评论回复
8
yufe| | 2015-10-4 21:20 | 只看该作者
另外CY开发包中也提供了通信所需的API函数和头文件 不知道为何你没有用到?

使用特权

评论回复
9
llia| | 2015-10-4 21:20 | 只看该作者
对啊,我是用LabVIEW做的用于控制传输的上位机程序

使用特权

评论回复
10
wangzsa|  楼主 | 2015-10-4 21:20 | 只看该作者
驱动都安装好了,之前把要发送的十六进制数放在一个数组里,char ch[12]={0x0A,0x01,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x02,0x00},发送成功了,但是实际只发送了前面三个字节,遇到0x00,就截止了,这是为什么?

使用特权

评论回复
11
wangzsa|  楼主 | 2015-10-4 21:21 | 只看该作者
对于CY开发包提供的通信所需的API函数和头文件,我在用VISA来做的话,这些可以用吗?

使用特权

评论回复
12
langgq| | 2015-10-4 21:21 | 只看该作者
用别的试过吗

使用特权

评论回复
13
wangzsa|  楼主 | 2015-10-4 21:21 | 只看该作者
我之前用CY提供的驱动来做的,用的是DeviceIoControl函数发送和接收数据,都做通了,现在是想换用VISA提供的驱动来做

使用特权

评论回复
14
xiao365531877| | 2015-11-7 23:10 | 只看该作者
你好,用CY提供的驱动是怎么做数据接收和发送?求指教

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝