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