基於Python的周立功CAN上位機(詳細教程)

2021-10-24 16:48:30 字數 1875 閱讀 4705

摘要:目前關於can通訊報文解析使用的程式語言有很多,比如:labviewer、c#、c語言等。但是很少有人用python進行開發,使用python進行開發該上位機可大大節省開發時間。本篇部落格主要介紹一下基於python的周立功can上位機。

使用的can分析儀:《創芯科技》的can分析儀,型號為usb_can-2a或者canalyst-ii

使用的下位機:stm32f407正點原子開發板

使用的測試用上位機:《創芯科技》開發的上位機

工具具備之後,我們正式開始用python進行測試開發。

為了節省開發時間,我們選用的原始碼為github開源**。

程式針對windows x64進行開發,如果使用linux會很麻煩,所以本文主要介紹windows下的應用。該開原始檔的主要程式如下所示:

#新建物件

c = communication(

)#配置can卡, 型號:usb_can_2eu, can卡索引: 0, can**道:channel_0, 波特率: 500kbps

c.set_can_board_configuration(can_type=

"usb_can_2eu"

,can_idx=

0,chn=

0,baud_rate=

500)

#開啟can卡'

c.open_new(

)# 注意傳送函式預設傳送資料長度為8個位元組

# 傳送標準幀 id 為0x110

data =[1

,2,3

,4,5

,6,7

,8]

c.transmit(

0x110

,data)

# 傳送拓展幀

data =[1

,2,3

,4,5

,6,7

,8]

c.transmit(

0x110

,data,extern_flag =

true

)# 傳送長度為6的幀 , 根據周立功官方手冊,can幀最大傳送資料長度為8,當然我對此表示懷疑,

# 但既然周立功所提供驅動貌似只能傳送最大長度為8 byte的幀,因此,請保證資料長度不大於8即可。

data =[1

,2,3

,4,5

,6]

c.transmit(

0x110

,data,data_len=6)

# 新建執行緒,不斷讀取can卡上的報文並且列印出來

cycle_read_thread = threading.thread(target=c.printreceivedata)

cycle_read_thread.start(

)

針對《創芯科技》型號為usb_can-2a或者canalyst-ii的兩款can分析儀,python製作的上位機原始碼可參考:

can例程 ecu 基於CAN匯流排的ECU設計

龍源期刊網 基於can 匯流排的ecu 設計于玲年第期 摘要 為了組建基於 can匯流排的控制單元,本文設計了一款相容標準 核心的mcu 提出總體設計方案,分層去實現各模組的功能。利用流水線的設計技術,對 mcu標準 核進行了精簡和優化,從而提高了產品的綜合處理速度,並減少了成品的設計面積。按照自上...

基於簡單工廠模式的CAN報文解析

所謂工廠模式,就是通過物件建立模式繞開new,來避免物件建立 new 過程中所導致的緊耦合,從而支援物件闖將的穩定。具體實現是通過定義乙個用於建立物件的介面,讓子類例項化哪乙個類,本例中應用的是簡單工廠模式,基類為parse frame,定義了解析can報文的資料結構以及解析的方法,子類為parse...

周立功寫給學微控制器的年輕人

作為過來人思前想後,我感到完全有責任將發自心底的感受傳遞給年輕一代,乙個企業家心靈深處渴望優秀人才的卓越追求和深層次的嘆息 痛苦和感受 您們千萬不要等到畢業求職時才覺得自己能力太差,世界上從來就沒有後悔藥。當然,如果您現在看了我寫的這篇文章可能還不算晚,因為您還有機會在以後的歲月裡奮起直追 亡羊補牢...