打印

CYpress68013

[复制链接]
2372|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinqinglinzi|  楼主 | 2013-5-30 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有用VISA实现上位机与CYpress68013通信的吗?不知道如何做,请教下各位高手
沙发
USB-Emily| | 2013-5-30 16:43 | 只看该作者
Cypress 官方网站论坛上的CY7C68013 与NI VISA labview 的通信 "Interfacing FX2LP with LabVIEW using NI-VISA drivers"
希望对你有帮助

使用特权

评论回复
板凳
mmuuss586| | 2013-5-30 19:34 | 只看该作者
没有用过。

使用特权

评论回复
地板
szjlj168| | 2013-5-31 11:41 | 只看该作者
:loveliness:

使用特权

评论回复
5
lbr_gao| | 2013-5-31 17:04 | 只看该作者
我做过 这个不难吧 LABVIEW装一个VISA驱动就可以了

使用特权

评论回复
6
lbr_gao| | 2013-5-31 17:04 | 只看该作者
固件里把控制传输的代码写好,上位机中直接添加入对应的控制输入和输出

使用特权

评论回复
7
xinqinglinzi|  楼主 | 2013-6-8 11:44 | 只看该作者
本帖最后由 xinqinglinzi 于 2013-6-8 11:45 编辑
lbr_gao 发表于 2013-5-31 17:04
我做过 这个不难吧 LABVIEW装一个VISA驱动就可以了

不用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;
}

麻烦看一下,我实在找不到原因了

使用特权

评论回复
8
xinqinglinzi|  楼主 | 2013-6-8 11:46 | 只看该作者
USB-Emily 发表于 2013-5-30 16:43
Cypress 官方网站论坛上的CY7C68013 与NI VISA labview 的通信 "Interfacing FX2LP with LabVIEW using NI- ...

谢谢指点:hug:

使用特权

评论回复
9
lbr_gao| | 2013-6-8 17:32 | 只看该作者
固件程序确保正确么? 用于VISA控制的驱动程序是否安装?

使用特权

评论回复
10
lbr_gao| | 2013-6-8 17:40 | 只看该作者
xinqinglinzi 发表于 2013-6-8 11:44
不用labview,我是用VS08,现在VI写函数不知道哪里错了,编译又没错,但是写不成功,以下是代码:
#define ...

另外CY开发包中也提供了通信所需的API函数和头文件 不知道为何你没有用到?我是用LabVIEW做的用于控制传输的上位机程序 现在只能给你点建议而已

使用特权

评论回复
11
xinqinglinzi|  楼主 | 2013-6-9 17:09 | 只看该作者
本帖最后由 xinqinglinzi 于 2013-6-9 17:18 编辑
lbr_gao 发表于 2013-6-8 17:40
另外CY开发包中也提供了通信所需的API函数和头文件 不知道为何你没有用到?我是用LabVIEW做的用于控制传 ...

驱动都安装好了,之前把要发送的十六进制数放在一个数组里,char ch[12]={0x0A,0x01,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x02,0x00},发送成功了,但是实际只发送了前面三个字节,遇到0x00,就截止了,这是为什么? 对于CY开发包提供的通信所需的API函数和头文件,我在用VISA来做的话,这些可以用吗?我之前用CY提供的驱动来做的,用的是DeviceIoControl函数发送和接收数据,都做通了,现在是想换用VISA提供的驱动来做

使用特权

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

本版积分规则

5

主题

14

帖子

0

粉丝