cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1660|回复: 10

[labview求助] 关于调用PCI-1680CAN卡的动态链接库

[复制链接]
发表于 2011-6-4 14:20:51 | 显示全部楼层 |阅读模式
   我最近在测试PCI-1680CAN卡时再数据接收模块中出现了一个问题:LabVIEW:  调用库函数节点调用的外部节点中出现一个意外。意外可能引起LabVIEW内存损坏。在新位置保存工作并重启LabVIEW。各位大侠,请问这是什么原因啊?下面是底层的VC代码:
LRESULT CANReadFile
(
     WORDPort,
     DWORD NumNeeded,
     PVOID FAR RcvBuf,
     PDWORD pNumReturned
)

Purpose
Read the received data from receive buffer. This function allow user receive data by interrupt way.
Parameters

Name
Direction
Type
Range
Description
Port
Input
WORD
default
Specify the port number
NumNeeded
Input
DWORD
default
The message number that should be read from buffer
RcvBuf
OutPut
PVOID FAR
default
The receive buffer that the transmit data stored
pNumReturned
Output
PDWORD
default
If pNumReturned = 0, the function is called unsuccessful. Else its value is the received message number.


Return
     SUCCESS
if successful
CANInvalidPortIndex
ifport index is invalid, must from 1 to 10
CANPortIsNotOpened
ifport is not opened

Example:

#include "canbus2.0.h"

typedef
struct
{
   UCHAR rtr;   
   ULONG id;     
   UCHAR dlen;
   UCHAR data[8];
} CAN_MSG_T;

main( )
{
     CAN_MSG_T    msg;
     DWORD          cbReturned = 0;
     int                 nLength;
     WORD           m_wProtocolType;
     UINT               m_Port;
string              m_RxBuf;

    // do some initiate works
     ......

     // read the data from receive buffer
     if ( m_wProtocolType = = CANBUS_PROTOCOL_20A )
     {
         CANReadFile( m_Port, 1, &msg, &cbReturned );      
         if ( cbReturned )
        {
             m_RxID = msg.id;

              // get receive data length
             nLength = msg.dlen;
               if ( msg.dlen!= 0 )
               {
                    printf( "%s", (PUCHAR)msg.data );
               }
        }
   }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-6-4 14:26:10 | 显示全部楼层
希望各位大侠不吝赐教 指出程序的错误!!!
 楼主| 发表于 2011-6-5 10:44:40 | 显示全部楼层
回复 wdyjz 的帖子

你好,今天早上我刚刚去调试了,读取函数那一块儿还是出错,不知道是怎么回事?
发表于 2011-6-5 12:42:00 | 显示全部楼层
发表于 2011-6-5 12:59:57 | 显示全部楼层
本帖最后由 wdyjz 于 2011-6-5 13:00 编辑

给你封装了下read file的函数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-6-5 13:32:30 | 显示全部楼层
回复 wdyjz 的帖子

版主,我的QQ号是:415740979 我们可以上Q聊么~不甚感激!
发表于 2011-6-5 15:28:03 | 显示全部楼层

研华不给你做技术支持,你就天天打电话给他们也行。
不过呢,你毕业时间很紧了吧,还是重新买卡吧,一切都是现成的。
http://www.embedded-soc.com/Products/CAN_USB/CANUSB_Detail.htm
买一个新的吧,这个就支持LabVIEW,价格也不超过100元吧。你做毕业设计足够用了,
发表于 2011-6-5 15:32:36 | 显示全部楼层
本帖最后由 wdyjz 于 2011-6-5 15:33 编辑

再上传一个USB-CAN卡 DLL调用的函数库。可以学习使用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2011-6-4 16:52:16 | 显示全部楼层
UCHAR data[8];
这个定义簇的时候,恐怕得分解成8个numeric了,不能使用数组的形式。你试试。
发表于 2011-6-4 16:56:26 | 显示全部楼层
本帖最后由 wdyjz 于 2011-6-4 16:58 编辑

给你看个示范。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-6-4 21:50:57 | 显示全部楼层
嗯 这个我已经改完了,您看看程序其他地方还有什么问题么~我如果只调用这几个函数能实现CAN通讯卡的数据自发自收么?太感谢版主了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-5-5 19:05 , Processed in 0.383888 second(s), 5 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表