zjianw 发表于 2006-3-14 19:56:17

VISA与USB通讯问题

已经成功生成VISA驱程,USB是D12芯片的,固件程序没有问题的。通过VISA可以成功与控制端点通讯。然后想通过VISA读中断端点,在NI提供的InterruptUSB例子基础上修改了一下,在LabVIEW7.0中老是不能成功通讯,实在想不明白。然后试着在LabVIEW8.0运行,通讯成功。迷惑了,难道LabVIEW7.0本身存在这个问题,有没有谁也碰到过类似的问题啊。晕
大家多交流下,USB现在比较流行啊,但是感觉这方面的LabVIEW资料目前来说还是比较少。

cpubbs 发表于 2006-3-14 20:18:33

用VISA没有做过,很多情况下是用调用DLL的方式!

zjianw 发表于 2006-3-16 19:39:50

<P>已经证实这是LabVIEW7.0的bug,下面是NI的回复</P>
<P><FONT face=Tahoma size=2>It Is a bug. The bug is fixed in LabVIEW 7.1 and above. So there is a difference between the vi between the different version of LabVIEW.</FONT></P>

cpubbs 发表于 2006-3-16 22:34:38

哦,原来如此!我现在用的是DLL,呵呵

zjianw 发表于 2006-3-21 18:45:47

<P 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT face="Times New Roman">现在的问题是,用NI的VISA已经成功通讯,听cpubbs的,又试了一下自带的读取端点的DLL,是D12的,问题来了。</FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT face="Times New Roman">函数原型如下:</FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT face="Times New Roman">(1) DWORD __stdcall ReadPort1 (BYTE* pData, size_t iLen);<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt">简介:读<FONT face="Times New Roman">USB</FONT>端点<FONT face="Times New Roman">1</FONT>。<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt">来源:<FONT face="Times New Roman">EasyD12.dll<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt">说明:<FONT face="Times New Roman">pData</FONT>为指向接收数据缓冲区的指针,<FONT face="Times New Roman">iLen</FONT>为接收数据长度。<FONT face="Times New Roman">D12</FONT>端点<FONT face="Times New Roman">1</FONT>缓冲区为<FONT face="Times New Roman">16</FONT>字节,<FONT face="Times New Roman">iLen</FONT>不大于<FONT face="Times New Roman">16</FONT>。如使用示例驱动,<FONT face="Times New Roman">iLen</FONT>不大于<FONT face="Times New Roman">4</FONT>。该函数主要用于读取用户的响应。<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt">返回:&lt;0   错误<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 56.9pt; mso-char-indent-count: 6.32; mso-char-indent-size: 9.0pt">=0   正确<o:p></o:p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt">举例:<FONT face="Times New Roman">   unsigned char databuff;<o:p></o:p></FONT></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 65.9pt; mso-char-indent-count: 7.32; mso-char-indent-size: 9.0pt"><FONT face="Times New Roman">DWORD st= ReadPort1 (databuff,4);<o:p></o:p></FONT></P>
<P>从USB端点1读出4个字节数据放入databuff中</P>
<P>根据函数原型,DWORD为U32,BYTE*为U8 Array指针,size_t为U8。若为如上设置不能成功读取,把BYTE*由Array改为Numeric,居然成功了,但是最多也只能读4个字节(U32),D12中端点1最大包设为16,该怎么办?谢谢</P>

cpubbs 发表于 2006-3-21 20:37:32

是不是下面没有发回来这么多数据呢?

zjianw 发表于 2006-3-22 01:05:18

有的,试过用VISA读没有问题,但是调用DLL时用Array就出问题了,用Numeric还是可以读前四个字节数据的。刚刚又用了CVI调用DLL,也是成功读取。现在就是LabVIEW调用DLL时有问题,请帮忙看看函数原型,各个数据类型在LabVIEW中应该为什么?谢谢

sun2001111 发表于 2009-8-23 21:05:08

你的VISA是怎么设置的?

caonimab 发表于 2009-8-26 11:09:55

谢谢楼上啊~!!!很详细啊~~!

binghongcha111 发表于 2009-10-27 09:25:02

zjianw :你好,我现在也在做这方面的东西,能否交流一下Email:haixia9060@163.com
我现在通讯都成问题了,想向你请教一下

hguiwen 发表于 2011-4-14 19:20:41

你好zjianw ,我现在也在做usb通讯的,调用dll文件,如何才能通讯,能否指点下,邮箱是741765904@qq.com,我的现在不能通讯。。谢谢
页: [1]
查看完整版本: VISA与USB通讯问题