习惯孤独 发表于 2011-6-4 14:20:51

关于调用PCI-1680CAN卡的动态链接库

   我最近在测试PCI-1680CAN卡时再数据接收模块中出现了一个问题:LabVIEW:调用库函数节点调用的外部节点中出现一个意外。意外可能引起LabVIEW内存损坏。在新位置保存工作并重启LabVIEW。各位大侠,请问这是什么原因啊?下面是底层的VC代码:
LRESULT CANReadFile(   WORDPort,   DWORD NumNeeded,   PVOID FAR RcvBuf,   PDWORD pNumReturned)
PurposeRead the received data from receive buffer. This function allow user receive data by interrupt way.Parameters

NameDirectionTypeRangeDescription
PortInputWORDdefaultSpecify the port number
NumNeededInputDWORDdefaultThe message number that should be read from buffer
RcvBufOutPutPVOID FARdefaultThe receive buffer that the transmit data stored
pNumReturnedOutputPDWORDdefaultIf pNumReturned = 0, the function is called unsuccessful. Else its value is the received message number.


Return   SUCCESS
if successfulCANInvalidPortIndex
ifport index is invalid, must from 1 to 10CANPortIsNotOpened
ifport is not opened
Example:
#include "canbus2.0.h"
typedef
struct
{   UCHAR rtr;       ULONG id;      UCHAR dlen;   UCHAR data;} 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 );               }      }   }}

习惯孤独 发表于 2011-6-4 14:26:10

希望各位大侠不吝赐教 指出程序的错误!!!

习惯孤独 发表于 2011-6-5 10:44:40

回复 wdyjz 的帖子

你好,今天早上我刚刚去调试了,读取函数那一块儿还是出错,不知道是怎么回事?

wdyjz 发表于 2011-6-5 12:42:00

http://www.cnki.com.cn/Article/CJFDTotal-WJSJ200825076.htm

wdyjz 发表于 2011-6-5 12:59:57

本帖最后由 wdyjz 于 2011-6-5 13:00 编辑

给你封装了下read file的函数

习惯孤独 发表于 2011-6-5 13:32:30

回复 wdyjz 的帖子

版主,我的QQ号是:415740979 我们可以上Q聊么~不甚感激!

wdyjz 发表于 2011-6-5 15:28:03


研华不给你做技术支持,你就天天打电话给他们也行。
不过呢,你毕业时间很紧了吧,还是重新买卡吧,一切都是现成的。
http://www.embedded-soc.com/Products/CAN_USB/CANUSB_Detail.htm
买一个新的吧,这个就支持LabVIEW,价格也不超过100元吧。你做毕业设计足够用了,

wdyjz 发表于 2011-6-5 15:32:36

本帖最后由 wdyjz 于 2011-6-5 15:33 编辑

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

wdyjz 发表于 2011-6-4 16:52:16

UCHAR data;
这个定义簇的时候,恐怕得分解成8个numeric了,不能使用数组的形式。你试试。

wdyjz 发表于 2011-6-4 16:56:26

本帖最后由 wdyjz 于 2011-6-4 16:58 编辑

给你看个示范。

习惯孤独 发表于 2011-6-4 21:50:57

嗯 这个我已经改完了,您看看程序其他地方还有什么问题么~我如果只调用这几个函数能实现CAN通讯卡的数据自发自收么?太感谢版主了~
页: [1]
查看完整版本: 关于调用PCI-1680CAN卡的动态链接库