激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月


主題:EM9000CAN通訊問題

  共有65590人關(guān)注過本帖    
客人
1樓


EM9000CAN通訊問題  發(fā)帖心情 Post By:2016-4-7 10:39:00   [只看該作者]

請問在程序中怎樣設(shè)置CAN通訊成功的狀態(tài)或標(biāo)志位,CAN_API_DLL.h文件里只有CAN設(shè)備接收數(shù)據(jù)的函數(shù)定義,應(yīng)該如何利用?
// 功能描述:讀取CAN設(shè)備接收數(shù)據(jù)包。
// 輸入?yún)?shù) hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// 輸出參數(shù) pRxFrameBuffer: 用于讀取CAN設(shè)備接收到的數(shù)據(jù)包。 
// 返回值 = TRUE:  從CAN設(shè)備接收到數(shù)據(jù),并將接收到的數(shù)據(jù)包讀入pRxFrameBuffer。
//        = FALSE: CAN設(shè)備沒有接收數(shù)據(jù)。
CAN_API_DLL_API BOOL CAN_GetNextReceivedFrame( HANDLE hDevice, MessageFrame *RxFrameBuffer );
在CanBus.cpp的文件里這樣寫不對
if(CAN_GetNextReceivedFrame(self->m_hCAN,&RxFrame))
{
self->OnReceiveData(&RxFrame);
flagcan = 1;
            
}
else //if(!i)//即使有數(shù)據(jù)也能進(jìn)入這個條件
{
flagcan = 2;
{
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
Sleep(0);
}/**/
             }

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
2樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-7 14:35:00   [只看該作者]

can_api_dll.h是CAN的COM組件工程里的文件,你需要修改這個COM組件嗎?

這個COM組件一般是給C#程序調(diào)用的,如果只是希望判斷CAN是否通信成功,在C#代碼里面加個判斷就可以了,不需要修改COM組件里的代碼。

你帖出來的代碼有點點邏輯問題,CAN_GetNextReceivedFrame返回FALSE只代表暫時沒有收到CAN數(shù)據(jù),不代表CAN通信失敗。

通信是否成功可以從接收到的數(shù)據(jù)是否正確來判斷,或者判斷CAN是否有錯誤事件產(chǎn)生。

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
3樓


CAN通訊判斷問題  發(fā)帖心情 Post By:2016-4-8 8:02:00   [只看該作者]

您好,現(xiàn)在問題是用CAN口調(diào)試器測試,數(shù)據(jù)發(fā)送周期為500ms,在CAN口一直發(fā)送數(shù)據(jù)的時候,為什么還能計入到else里面?else判斷不是應(yīng)該在CAN口沒有收到數(shù)據(jù)的時候才能進(jìn)入的么?

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
4樓


如何在程序中判斷錯誤檢測事件?  發(fā)帖心情 Post By:2016-4-8 9:15:00   [只看該作者]

我的是VC++程序,在程序里如何判斷錯誤檢測事件?如果修改COM組件CAN_API_DLL.h的話您能幫忙改下么?還是需要我自己去改。
if (WAIT_OBJECT_0 == WaitForSingleObject(self->m_hErrEvent,1000) )//modify20160309
{
bResult = CAN_GetError( self->m_hCAN, &ErrorCode );
dwECCRegCode = CAN_GetECCReg( self->m_hCAN );

if( bResult )
{
self->OnError(ErrorCode, dwECCRegCode);
flagcan_set=0;//CAN通訊異常
}
else
{
flagcan_set=1;//CAN通訊正常(沒有錯誤事件時)

}


}
那如何判斷CAN通訊中斷?CAN通訊錯誤事件包括什么事件?代碼都是多少?


  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
5樓


  發(fā)帖心情 Post By:2016-4-8 9:38:00   [只看該作者]

如果你是用VC++編程,建議你參考我們的C例程,用COM組件來調(diào)用會比較復(fù)雜,不推薦。

就你貼出來的代碼,if條件成立就表示收到錯誤事件了,當(dāng)出現(xiàn)CAN報錯,最好都重置一下CAN。


  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
6樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-8 9:39:00   [只看該作者]

下面是CAN的報錯事件,及錯誤代碼

CAN_NO_ERROR                               (0)         // Last operation successful
CAN_ERR_MOPS_CREATE                  (-1)        // Mutex Creation failed
CAN_ERR_PA_VA_MISSING               (-2)        // Physical -> Virtual Mapping failed
CAN_ERR_EOPS_CREATE                   (-3)        // Event Creation failed
CAN_ERR_IRQ_SYSINTR_MISSING     (-4)        // IRQ -> System Interrupt ID Mapping failed
CAN_ERR_INT_INIT                          (-5)        // Interrupt Initialization failed
CAN_ERR_WORKER_THREAD             (-6)        // Worker thread failed
CAN_ERR_NO_ACK_ISSUED              (-7)        // No Acknowledge Issued
CAN_ERR_NULL_BUF                         (-8)        // NULL Buffer
CAN_ERR_INVALID_BUFSIZE             (-9)        // Invalid Buffer Size
CAN_ERR_NULL_LPIRESULT               (-10)       // NULL lpiResult field
CAN_ERR_CLOCK_FAILURE               (-11)       // CRM Operation Failure
CAN_ERR_TRANSFER_TIMEOUT         (-12)       // CAN transmit timeout error
CAN_ERR_ARBITRATION_LOST          (-13)       // CAN arbitration lost error
CAN_ERR_TRANSFER_ERR                (-14)       // CAN goto an undefined error
CAN_ERR_BIT0                               (-15)       // At least one bit sent as dominant is received as dominant
CAN_ERR_BIT1                               (-16)       // CANAt At least one bit sent as dominant is received as recessive
CAN_ERR_ACK                                (-17)       // CAN Acknowledge Error has been detected by the transmitter node
CAN_ERR_CRC                                (-18)       // CRC Error has been detected by the receiver node
CAN_ERR_FRM                                (-19)       // CAN Form Error has been detected by the receiver node
CAN_ERR_STF                                (-20)       // CAN Stuffing Error has been detected
CAN_ERR_BUF_FULL                       (-21)       // CAN Ring Buffer is full

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
7樓


Can接受數(shù)據(jù)  發(fā)帖心情 Post By:2016-4-8 10:16:00   [只看該作者]

如果想知道CAN接收到數(shù)據(jù)時顯示一個狀態(tài);CAN沒有收到數(shù)據(jù)時顯示另外一個狀態(tài)?梢园凑瘴议_始寫的那個返回值為真時設(shè)置一個標(biāo)志位;else返回值為假時設(shè)置一個標(biāo)志位么?

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
8樓


如何判斷CAN是否接受到數(shù)據(jù)  發(fā)帖心情 Post By:2016-4-8 14:17:00   [只看該作者]

我在判斷沒有接收到數(shù)據(jù)的else里面加了標(biāo)志位以后,即使有數(shù)據(jù)已進(jìn)入else語句,不知道為什么。

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
9樓


如何重置CAN?  發(fā)帖心情 Post By:2016-4-11 9:44:00   [只看該作者]

請問如果CAN出錯了怎樣進(jìn)行重置?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
10樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-11 11:38:00   [只看該作者]

主要是看程序的邏輯怎么寫。

如果是我們的例程,當(dāng)CAN有數(shù)據(jù)收到時,會將數(shù)據(jù)放入驅(qū)動的一個BUFFER里,然后會產(chǎn)生一個事件通知上層應(yīng)用程序,例程接收到這個事件后,會循環(huán)調(diào)用CAN_GetNextReceivedFrame,將BUFFER里所有的數(shù)據(jù)都都出來顯示,如果按你的改發(fā),讀前面包時flagcan被設(shè)成1,讀完所有包后flagcan被設(shè)成0,讀包是非?斓模詅lagcan基本一直都是0,所以我認(rèn)識這個邏輯是不行的。

CAN出錯后請調(diào)用我們提供的接口,重置下CAN就行了,stopchip和startchip,例程里有。

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
11樓


如何判斷CAN什么時候接收到數(shù)據(jù),什么時候沒有接收到數(shù)據(jù)呢?  發(fā)帖心情 Post By:2016-4-12 7:29:00   [只看該作者]

您好?您說的我的邏輯有問題,那您能給我提示下應(yīng)該用什么標(biāo)志位或者邏輯來進(jìn)行判斷CAN通訊成功和異常么?或者說想判斷什么時候CAN收到數(shù)據(jù),什么時候CAN沒有收到數(shù)據(jù)?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
12樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-12 9:30:00   [只看該作者]

在CAN沒有報錯的時候,應(yīng)該認(rèn)為通信沒有問題。當(dāng)有CAN數(shù)據(jù)收到時,上層應(yīng)用能收到CAN事件,收到事件就表示有數(shù)據(jù)收到,其它時候表示沒有數(shù)據(jù)通信。

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
13樓


您好,您說的上層接收到的CAN接收事件是自己定義的還是程序中的m_hRxEvent?  發(fā)帖心情 Post By:2016-4-12 10:07:00   [只看該作者]

如何判斷?多謝了。

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
14樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-12 10:58:00   [只看該作者]

可以參考程序中的代碼。

我們驅(qū)動的接口及注釋在can_api.h里面,你可以看到CAN_GetRxEvent這個函數(shù),這個函數(shù)就是獲得驅(qū)動創(chuàng)建的CAN接收事件,當(dāng)CAN驅(qū)動接收到數(shù)據(jù)后,會激活這個event。

在例程中,我們將CAN又封裝了一次,代碼在EM9000_CAN.cpp里面,你可以看代碼就知道例程是如何調(diào)用can_api.h里的接口的。在打開CAN的時候,調(diào)用的StartCan里面調(diào)用CAN_GetRxEvent獲得了CAN接收事件,然后在接收線程ReadThreadFunc里面,調(diào)用的WaitForSingleObject去等待這個事件。當(dāng)?shù)鹊竭@個事件時,就能判斷有CAN數(shù)據(jù)接收

CAN錯誤事件同理,和CAN接收事件原理一樣的。



  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
15樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-12 11:00:00   [只看該作者]

如果你用C來編程,看C的例程應(yīng)該很清晰些。

C例程還封裝了一個CAN的類,而動態(tài)鏈接庫里是直接調(diào)用的CAN驅(qū)動接口,沒有封裝類。

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
16樓


CAN通訊速率問題  發(fā)帖心情 Post By:2016-4-13 15:28:00   [只看該作者]

就是在接受CAN口調(diào)試器發(fā)送的數(shù)據(jù)時,發(fā)送周期設(shè)置為20ms時,數(shù)據(jù)有很大的延遲,不知道是什么原因?CAN口發(fā)送數(shù)據(jù)以及讀寫的速度不是很快的么?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
17樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-13 16:01:00   [只看該作者]

因該沒有多大延遲的。收到接收事件后,需要將BUFFER里的包全部讀出來,你再測試下,你的延遲有多少呢?

  單帖管理 | 引用 | 回復(fù) 回到頂部
客人
18樓


發(fā)送周期500ms時能捕捉到數(shù)據(jù),發(fā)送周期為20ms時大概延時0.5-1s  發(fā)帖心情 Post By:2016-4-14 8:15:00   [只看該作者]

發(fā)送周期500ms時能捕捉到數(shù)據(jù),基本上是實時顯示,延時時間不長,發(fā)送周期為20ms時大概延時0.5-1s,有明顯延遲,如果接相關(guān)傳感器的話是接收不到數(shù)據(jù)的,難道是協(xié)議有問題?但是為什么用CAN口調(diào)試工具就可以接收數(shù)據(jù)?

  單帖管理 | 引用 | 回復(fù) 回到頂部
帥哥喲,離線,有人找我嗎?
yy
19樓 信息 | 搜索 | 郵箱


加好友 發(fā)短信
  發(fā)帖心情 Post By:2016-4-14 9:26:00   [只看該作者]

應(yīng)該是代碼處理邏輯問題,延遲幾ms最多幾十ms是正常的,0.5秒太長,不可能。

之前出現(xiàn)過這樣的錯誤,在接收到event事件后,只讀了一幀出來,同時收到的其它幀得等到下次event才接收。

你檢查下代碼有沒有我說的這個問題,按我上個回復(fù)里來寫“收到接收事件后,需要將BUFFER里的包全部讀出來”

  單帖管理 | 引用 | 回復(fù) 回到頂部

返回首頁

EM9000CAN通訊問題

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內(nèi)容:
主站蜘蛛池模板: 香蕉97碰碰视频免费| 国产麻豆高清在线观看| 亚洲毛片在线播放| 一级特黄aa大片一又好看| 中文字幕三区| 成人性视屏| 欧美日韩一区二区在线视频| 国产精品亚洲第五区在线| 澳门久久| 国产白领丝袜办公室在线视频| 麻豆传媒网站网址入口| 午夜在线播放免费人成无| 中文字幕在线观看不卡| 一级aaaaaa毛片免费| 日本一区欧美| 中文字幕久久网| 亚洲成本人网亚洲视频大全| 伊人精品影院| 免费高清欧美大片在线观看| 国产一区二区三区免费视频| 国产黄网站| 国产精品最新| 美国黄色片免费看| 黄色精品| 做爰全过程免费的视69频| 91粉色视频在线观看| 国产成人一区二区精品非洲 | 久久99综合久久爱伊人| 亚洲一区国产| 国产国语一级毛片| 放荡女同老师和女同学生| 黄色一级短视频| 啪一啪日一日| 最新三级网站| 麻豆传煤入口1.5| 韩国免费播放一级毛片| 精品欧美成人bd高清在线观看| 伊人久久综合网亚洲| 久久99国产精品久久99无号码| 尤物网站在线观看| 女人毛片在线|