主题:ETA701 测试程序 共有35691人关注过本帖 |
---|
NONAME |
1楼 |
ETA701 测试程序 Post By:2011-3-23 14:27:00 [只看该作者]
求ETA701关于CAN通讯的测试程序,EM9260板子.邮箱linxiaomuma@126.com
|
|
单帖管理 | 引用 | 回复 |
zxw |
2楼 |
Post By:2011-3-23 16:38:00 [只看该作者]
你好!ETA701的测试程序和板上的CAN测试是一样的,只是打开CAN时的序号不一样。板上的CAN的序号为1,ETA701为扩展的第二个CAN,序号是2
|
|
单帖管理 | 引用 | 回复 |
NONAME |
3楼 |
Post By:2011-3-25 14:36:00 [只看该作者]
Baud = CAN_TIMING_250K;     // for 250Kbps
CanNo = 2;          i1 = wcslen( lpCmdLine ); if( i1>0 ) { wcstombs( str, lpCmdLine, i1 ); //Baud = atoi( str ); sscanf( str, "%d %d", &CanNo, &Baud ); } printf( "CanNumber: %d Baud: %d\r\n ", CanNo, Baud ); bResult = m_CAN.StartCAN( CanNo, Baud, (BYTE*)Filter, 9 ); if( bResult==FALSE ) { printf(" can start failed!! \n" ); return -1; }     else       printf(" can start succeed!! \n"); 程序运行后提示: can start failed!!  不知是什么原因?其他部分都没有更改,CanNo = 1时CAN通讯可以顺利初始化.不知道为什么CanNo = 2时不行? |
|
单帖管理 | 引用 | 回复 |
NONAME |
4楼 |
Post By:2011-3-25 15:27:00 [只看该作者]
经过调试,问题如下:
当程序执行 BOOL CEM9260_CAN::StartCAN( UINT CanNo, UCHAR baud,  BYTE *AcceptanceFilter, BYTE size ) { TCHAR     szCan[15]; wsprintf(szCan, L"CAN%d:", CanNo); m_hCAN = CreateFile( szCan, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if( m_hCAN == INVALID_HANDLE_VALUE) { printf( "error!\r\n"); return FALSE; } 当CanNo=1时,程序没有问题.当CanNo=2时,m_hCAN == INVALID_HANDLE_VALUE.希望贵公司的工程师能够给予帮助.谢谢! |
|
单帖管理 | 引用 | 回复 |
x10 |
5楼 |
Post By:2011-3-25 15:47:00 [只看该作者]
是否事先使能了"CAN2:",需执行CAN2Set命令。
|
|
单帖管理 | 引用 | 回复 |
lqk |
6楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2011-3-25 15:49:00 [只看该作者]
请通过telnet登陆到EM9260,执行CAN2SET设置一下,重启系统后再试一下。
|
单帖管理 | 引用 | 回复 |
NONAME |
7楼 |
Post By:2011-3-25 17:01:00 [只看该作者]
CAN2SET是测试程序吗?还是9260自带的命令?
|
|
单帖管理 | 引用 | 回复 |
lqk |
8楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2011-3-25 21:32:00 [只看该作者]
是EM9260自带的命令,要支持双CAN,需要先设置一下。
|
单帖管理 | 引用 | 回复 |
NONAME |
9楼 |
Post By:2011-3-26 15:22:00 [只看该作者]
谢谢回复.CAN2已经成功使能.但现在有了新的问题.
原来9260的CAN端口可以与PC成功地收发数据.现在我将9260上的CAN屏蔽线撤下,将PC连接到ETA701的CAN,想用CAN2口与PC通讯.程序其他参数不变,只改变端口号.但是现在PC端与9260都检测不到对方发送的数据.希望能给予解答. |
|
单帖管理 | 引用 | 回复 |
zhl |
10楼 |
Post By:2011-3-27 11:53:00 [只看该作者]
你检查看看接线,ETA701和评估底板CAN1接口的高低位置是反的。
|
|
单帖管理 | 引用 | 回复 |
NONAME |
11楼 |
Post By:2011-3-28 15:03:00 [只看该作者]
接线没有错误.故障依旧.
原问题进一步说明如下: 当PC通过CAN2向9260发送数据时,输出结果为 error: 1 error: 2 此错误代码来源于以下子程序,但不知这两个代码的具体意义.请具体解答以下.谢谢! //CAN错误监测函数 DWORD CEM9260_CAN::GetErrorThreadFunc( LPVOID lparam ) { CEM9260_CAN *ceCAN = (CEM9260_CAN*)lparam; BOOL  bResult; while( 1 ) { if( WaitForSingleObject( ceCAN->m_hErrorCloseEvent, 0 )==WAIT_OBJECT_0 ) { break; } WaitForSingleObject( ceCAN->m_hErrEvent, INFINITE ); bResult = CAN_GetError( ceCAN->m_hCAN, &ceCAN->ErrorCode ); printf( "error: %d\r\n", ceCAN->ErrorCode ); if( bResult ) { // 调用回调函数 ceCAN->OnError( ); } } return 0; } |
|
单帖管理 | 引用 | 回复 |