生活随笔
收集整理的這篇文章主要介紹了
                                
Python调用周立功CAN接口卡接口库函数(接收数据)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
 
                                
                            
                            
                            上篇博文《Python調(diào)用周立功CAN接口卡接口庫(kù)函數(shù)》僅做了發(fā)送數(shù)據(jù)例程,有網(wǎng)友在測(cè)試接收時(shí)出現(xiàn)了問(wèn)題,在此給出自己的接收數(shù)據(jù)代碼。
 在此需要強(qiáng)調(diào)的是,因?yàn)榻?jīng)濟(jì)水平有限,自己所使用的CAN接口卡為第三方兼容周立功函數(shù)庫(kù)的接口卡,經(jīng)測(cè)試,第三方CAN接口卡VCI_Receive接收函數(shù)其參數(shù)WaitTime是無(wú)效的,即使該值為-1,也不會(huì)阻塞等待數(shù)據(jù),若使用周立功原版接口卡則無(wú)此問(wèn)題。
 以USBCAN-2E-U接口卡,1000k波特率,接收一幀數(shù)據(jù)并打印為例,代碼如下:
 
import platform
import time
from ctypes 
import *class _VCI_INIT_CONFIG(Structure
):_fields_ 
= [('AccCode', c_ulong
),('AccMask', c_ulong
),('Reserved', c_ulong
),('Filter', c_ubyte
),('Timing0', c_ubyte
),('Timing1', c_ubyte
),('Mode', c_ubyte
)]class _VCI_CAN_OBJ(Structure
):_fields_ 
= [('ID', c_uint
),('TimeStamp', c_uint
),('TimeFlag', c_byte
),('SendType', c_byte
),('RemoteFlag', c_byte
),('ExternFlag', c_byte
),('DataLen', c_byte
),('Data', c_byte
*8),('Reserved', c_byte
*3)]vic 
= _VCI_INIT_CONFIG
()
vic
.AccCode 
= 0x00000000
vic
.AccMask 
= 0xffffffff
vic
.Filter 
= 0
vic
.Timing0 
= 0x00
vic
.Timing1 
= 0x1c
vic
.Mode 
= 0vco 
= _VCI_CAN_OBJ
()
vco
.ID 
= 0x00000001
vco
.SendType 
= 0
vco
.RemoteFlag 
= 0
vco
.ExternFlag 
= 0
vco
.DataLen 
= 8
vco
.Data 
= (1, 2, 3, 4, 5, 6, 7, 8)canLib 
= windll
.LoadLibrary
('.\\CAN_Lib\\'+platform
.architecture
()[0]+'\\ControlCAN.dll')
print('打開(kāi)設(shè)備: %d' % (canLib
.VCI_OpenDevice
(21, 0, 0)))
print('設(shè)置波特率: %d' % (canLib
.VCI_SetReference
(21, 0, 0, 0, pointer
(c_int
(0x060003)))))
print('初始化: %d' % (canLib
.VCI_InitCAN
(21, 0, 0, pointer
(vic
))))
print('啟動(dòng): %d' % (canLib
.VCI_StartCAN
(21, 0, 0)))
print('清空緩沖區(qū): %d' % (canLib
.VCI_ClearBuffer
(21, 0, 0)))while canLib
.VCI_Receive
(3, 0, 0, pointer
(vco
), 1, 50) == 0:pass
else:for d 
in vco
.Data
:print(d
)
                            總結(jié)
                            
                                以上是生活随笔為你收集整理的Python调用周立功CAN接口卡接口库函数(接收数据)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                            
                                如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。