关于调用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 ); } } }} 希望各位大侠不吝赐教 指出程序的错误!!! 回复 wdyjz 的帖子
你好,今天早上我刚刚去调试了,读取函数那一块儿还是出错,不知道是怎么回事? http://www.cnki.com.cn/Article/CJFDTotal-WJSJ200825076.htm 本帖最后由 wdyjz 于 2011-6-5 13:00 编辑
给你封装了下read file的函数
回复 wdyjz 的帖子
版主,我的QQ号是:415740979 我们可以上Q聊么~不甚感激!
研华不给你做技术支持,你就天天打电话给他们也行。
不过呢,你毕业时间很紧了吧,还是重新买卡吧,一切都是现成的。
http://www.embedded-soc.com/Products/CAN_USB/CANUSB_Detail.htm
买一个新的吧,这个就支持LabVIEW,价格也不超过100元吧。你做毕业设计足够用了,
本帖最后由 wdyjz 于 2011-6-5 15:33 编辑
再上传一个USB-CAN卡 DLL调用的函数库。可以学习使用。
UCHAR data;
这个定义簇的时候,恐怕得分解成8个numeric了,不能使用数组的形式。你试试。 本帖最后由 wdyjz 于 2011-6-4 16:58 编辑
给你看个示范。
嗯 这个我已经改完了,您看看程序其他地方还有什么问题么~我如果只调用这几个函数能实现CAN通讯卡的数据自发自收么?太感谢版主了~
页:
[1]