搜索
bottom↓
回复: 10

求助:VC上位机ITEK驱动转Kvaser can 驱动

[复制链接]

出0入0汤圆

发表于 2017-2-23 15:33:30 | 显示全部楼层 |阅读模式
已经把KVASER打开CAN和关闭CAN调通了。但发送VCI_Transmit(nDeviceType, nDeviceInd, nCANInd, &vco, i); 和接收VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime=-1);
如何对应到canWrite  (const int  hnd,long  id, void *  msg, unsigned int  dlc, unsigned int  flag); 以及canRead (const int hnd, long * id, void * msg, unsigned int * dlc,unsigned int *  flag,unsigned long *  time);
实在没明白的。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-2-23 15:33:31 来自手机 | 显示全部楼层
hnd应该按handle来理解,kvaser的驱动是可以多个上位机非独占式同时操作一个通道的,估计是通过这个进行区分的,dlc是数据发送的长度,接收时用来指示收到的数据长度,为防止越界数组长度应不小于dlc,flag具体功能忘记了,之前我做上位机的时候把kvaser的驱动又封装了一层,只保留了初始化,获取通道数量和名称,开,关,设置波特率,读写,读写事件这几个接口,想换其他CAN设备就把这个中间层的dll换掉就OK了

出0入0汤圆

发表于 2017-2-23 15:37:03 | 显示全部楼层
楼主用kvaser做什么

出0入0汤圆

 楼主| 发表于 2017-2-23 15:44:55 | 显示全部楼层
daat 发表于 2017-2-23 15:37
楼主用kvaser做什么

CAN通讯,单片机与PC机数据,CAN报文。

出0入0汤圆

 楼主| 发表于 2017-2-23 21:34:24 | 显示全部楼层
感觉发错版块了,

出0入0汤圆

发表于 2017-2-23 22:21:27 来自手机 | 显示全部楼层
你可以看下kvaser的SDK,里边有详细的接口文档和应用damo,canWrite里传的第一个参数hnd是open时的返回值,flag直接传0就行,read也类似,time是返回的接收到这一帧的时间

出0入0汤圆

 楼主| 发表于 2017-2-23 22:57:58 | 显示全部楼层
q457344370 发表于 2017-2-23 22:21
你可以看下kvaser的SDK,里边有详细的接口文档和应用damo,canWrite里传的第一个参数hnd是open时的返回值, ...

谢谢回复。
我看ITEK的文档比较明白,可能是中文写的缘故吧
比如:VCI_Transmit(Devtype,DevIndex,Cannum,&frameinfo,1);文档讲的比较清楚,各个形参代办的意思也比较明朗。
如:DevType:设备类型号;
DevIndex:设备索引号;
CANIndex:第几路CAN;
pSend:要发送的数据帧数组的首指针;
Len:要发送的数据帧数组的长度。

而SDK里写的就不是那么明白了。canWrite  (const int  hnd,long  id, void *  msg, unsigned int  dlc, unsigned int  flag);
1、hnd A handle to an open CAN circuit. 加上你刚描述的是open的一个返回值,我理解应该是can的通道值;
2、id The identifier of the CAN message to send ;这个ID,是发送CAN的ID值,这个也可以理解;
3、msg A pointer to the message data ,是要发送数据帧的数组首指针,与ITEK的类似;
4、dlc The length of the message in bytes.For Classic CAN dlc can be at most 8, unless canOPEN_ACCEPT_LARGE_DLC is used.For CAN FD dlc can be one of the following 0-8, 12, 16, 20, 24, 32, 48, 64.
这个值是数据帧长度,还是数组长度,没明白。
5、flag A combination of message flags ,这个应该是区别是标准帧还是扩展帧。

出0入0汤圆

发表于 2017-2-24 05:41:46 来自手机 | 显示全部楼层
而且kvaser的驱动是支持同时使用多个外设通道的,大多接口都需要传入选择的handle,它可以通过getchannel获取通道的index,然后open这个index来获取handle

出0入0汤圆

 楼主| 发表于 2017-2-24 16:17:12 | 显示全部楼层
q457344370 发表于 2017-2-24 05:41
而且kvaser的驱动是支持同时使用多个外设通道的,大多接口都需要传入选择的handle,它可以通过getchannel获 ...

谢谢回复。
现在编译是通过了,但没有数据到PC机。
我修改了VCI_Transmit(Devtype,DevIndex,Cannum,&frameinfo,1);为canWrite(h,My_ID, &frameinfo,8,0);
VCI_Receive(Devtype,DevIndex,Cannum,frameinfo,100,200);改为canRead(h, &My_ID, frameinfo, &dlc, &flags, &time);

unsigned int dlc = 100;
unsigned int flags = 0;
unsigned long time = 200;
My_ID = 0x180099AA;
可能是ID号没填对。。。

出0入0汤圆

发表于 2017-2-24 18:22:43 来自手机 | 显示全部楼层
共享一下文档嘛!

出0入0汤圆

 楼主| 发表于 2017-2-24 22:23:47 | 显示全部楼层
wh9602 发表于 2017-2-24 18:22
共享一下文档嘛!

需要ITEK的文档,还是Kvaser的文档?Kvaser的是官网下载的SDK,ITEK的文档就是莫坛上的。链接:http://www.amobbs.com/thread-5536013-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 05:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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