PEAK can USB tool ,這個東西在國內(nèi)用的可能不是太多,最近在做項(xiàng)目所以有用到這個東西。所以針對這個東西的開發(fā)做一點(diǎn)介紹。
實(shí)際使用過程中其實(shí)還是比較好用的,所以我們在后面的開發(fā)中打算使用它做我們的調(diào)試平臺隨之而來的問題就是需要制作上位機(jī),好在官方給的例程中有提供各種編輯器的版本。
具體api可以在https://www.peak-system.com/Packages.306.0.html
下載到,我就不添加附件了。
官方庫中的標(biāo)準(zhǔn)庫已經(jīng)寫的很完善了,我今天主要針對C#的版本的做一下介紹
打開工程
將界面上不要的控件刪除掉變成如下:(可以根據(jù)自己的是需求,這里我主要不適用幀過濾喝參數(shù)配置所有將這兩項(xiàng)刪除掉,其他項(xiàng)保留)將界面中一些關(guān)鍵參數(shù)漢化一下即可。
將底層的代碼中涉及到的報錯的代碼都可以刪除掉。注意不要先從代碼中刪除,會在涉及界面中報錯的,要從設(shè)計(jì)界面中刪除和控件屬性去修改屬性出錯的概率相對小一點(diǎn)。
代碼修改:
如圖所示,將故障代碼刪除掉,且將所有的需要的控件都保留之后,對界面做一些簡單的處理,基本上界面就是你自己想要的樣子了。
界面處理完了,之后就基本上是做一些發(fā)送和接收的數(shù)據(jù)處理。
在實(shí)際的使用過程中我們使用CAN做簡單的上位機(jī)的時候大多時候只是需要控制發(fā)送數(shù)據(jù),什么時候發(fā)送和接收數(shù)據(jù)處理這兩個問題。
發(fā)送相對好解決,只需要定義發(fā)送事件即可,可以定時發(fā)送或者是控件控制發(fā)送這個沒有什么好說的只需要按照程序中提供的發(fā)送函數(shù)進(jìn)行發(fā)送即可我這里只是在定義了一個簡答的發(fā)送函數(shù)(有才華的你可以放開腦洞想像怎么樣才能更好玩)
private void Send_data1_Click(object sender, EventArgs e)
{
TPCANStatus stsResult;
TPCANMsg CANMsg;
CANMsg = new TPCANMsg();
CANMsg.DATA = new byte[8];
CANMsg.ID = 0x2812f456;
CANMsg.LEN = 8;
CANMsg.MSGTYPE = TPCANMessageType.PCAN_MESSAGE_EXTENDED ;
CANMsg.DATA[0] = 0x11;
CANMsg.DATA[1] = 0x11;
CANMsg.DATA[2] = 0x11;
CANMsg.DATA[3] = 0x11;
CANMsg.DATA[4] = 0x11;
CANMsg.DATA[5] = 0x11;
CANMsg.DATA[6] = 0x11;
CANMsg.DATA[7] = 0x11;
stsResult = PCANBasic.Write(m_PcanHandle, ref CANMsg);
if (stsResult == TPCANStatus.PCAN_ERROR_OK)
IncludeTextMessage("Message was successfully SENT");
else
MessageBox.Show(GetFormatedError(stsResult));
}
接收處理,既是將有用的的數(shù)據(jù)從繁瑣的can報文中提取出來以一種友善的方式顯示出來。like this
大概提一提數(shù)據(jù)處理的一個邏輯,首先我定義的是事件觸發(fā)讀?。▉硪话鼣?shù)據(jù)自己觸發(fā)讀取解析一次)然后再在最后處理過程函數(shù)中增加一個自己定義數(shù)據(jù)解析函數(shù):
可以通過幀ID進(jìn)行判斷,然后再處理相關(guān)的數(shù)據(jù),顯示在什么地方你自己說了算。
最后附上我的工程打開CSDN搜索peak can C#二次開發(fā).rar
-
上位機(jī)
+關(guān)注
關(guān)注
27文章
945瀏覽量
54933
發(fā)布評論請先 登錄
相關(guān)推薦
評論