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


主題:CAN線程及主線程問題

  共有39035人關注過本帖    
hohai
1樓


CAN線程及主線程問題  發帖心情 Post By:2009-12-27 14:44:00   [只看該作者]

// CANTest.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "lcd_api.h"
#include "EM9260_CAN.h"
#include "EM9260_Key.h" 

static void CALLBACK OnReceive( );
static void CALLBACK OnError( );

class CEM9260_CAN  m_CAN;

int    type;
ULONG  ReceiveLen;
ULONG  SendLen;
unsigned char TxBuf[13];

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR    lpCmdLine,
int       nCmdShow)
{
  // TODO: Place code here.
  // TODO: Place code here.
BOOL    bResult;
    HANDLE  hKey;
HANDLE  hKeyEvent;
ULONG   WaitReturn;
int     KeyCode;
char    str[100];
UCHAR   Baud;
UCHAR   Filter[9];
int     i1;

// Start & Init LCD
type = LCD_Init( LCD_AUTO );
if( type>0 )
{
LCD_WriteString( 8, 0, "CANTest v1.0", 1 );
}

// fill AcceptanceFilter<|>s parameters
Filter[0] = 0;
Filter[1] = 0x5f;
Filter[2] = 0;
Filter[3] = 0x1f;
Filter[4] = 0xff;
Filter[5] = 0xff;
Filter[6] = 0xff;
Filter[7] = 0xff;
Filter[8] = DUAL_FILTER_MODE;
Baud = CAN_TIMING_250K;   

bResult = m_CAN.StartCAN( 1, Baud, (BYTE*)Filter, 9 );
if( bResult==FALSE )
return -1;

m_CAN.OnRead = OnReceive;
m_CAN.OnError = OnError;
ReceiveLen = 0;
SendLen = 0;

TxBuf[0]=0x42;
         TxBuf[1]=0x1f;
TxBuf[2]=0x00;


for(   )
{
   if( type>0 )  //沒收到CAN數據時,在此處死循環
  {
    sprintf( str, "0x%04x", KeyCode );
    LCD_WriteString( 8, 48, str, 1 );
  }
}
m_CAN.StopCAN( );
return 0;
}

void CALLBACK OnReceive( )
{
char     RxBuf[14];
char     str[200];
UCHAR    dlen;

    memcpy( RxBuf, &m_CAN.RxMFrame, 13 );
dlen = RxBuf[0]&0x0f;
if( RxBuf[0]&0x80 ) // 擴展幀
{
m_CAN.WriteCAN( (BYTE*)RxBuf, dlen+5 );
}
else // 標準幀
{
m_CAN.WriteCAN( (BYTE*)RxBuf, dlen+3 );
}

ReceiveLen += dlen;
SendLen += dlen;
if( type>0 )
{
sprintf( str, "RCV: %ld    ", ReceiveLen );
LCD_WriteString( 8, 16, str, 1 );
sprintf( str, "Send: %ld   ", SendLen );
LCD_WriteString( 8, 32, str, 1 );
}
}

以上為公司提供的CANTest例程函數
問題如下:
沒收到CAN數據時,在主線程標注處死循環
收到一幀CAN數據,單步調試,執行CANOnReceive( )
在執行CANOnReceive( )響應完CAN線程后,CAN線程應該掛起。此時應該跳至主線程(文中標注處)死循環執行主線程。但單步調試,顯示”All Threads are suspended“
公司寫的CAN線程處理函數,響應CAN線程時,是否將主線程人為掛起?還是其他原因?

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


加好友 發短信
  發帖心情 Post By:2009-12-27 17:14:00   [只看該作者]

單步調試時,線程可能不能正常切換。
你可以在主線程死循環處設置斷點,調試執行CANOnReceive( )后點全速執行,程序應該會執行到主線程死循環斷點處。

  單帖管理 | 引用 | 回復 回到頂部

返回首頁

CAN線程及主線程問題

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內容:
主站蜘蛛池模板: 国产成人精品免费视频动漫 | 在线精品福利视频你懂的| 精品一区二区三区免费观看| 中文字幕在线视频不卡| 久草中文在线视频| 午夜性a一级毛片| 色婷婷777| 国产精品a v 免费视频| 国产五月色婷婷综合| 女女同性一区二区三区四区| 一级日本强免费| 日本三人交69oo×xx| 亚洲欧美日韩在线不卡| 色香婷婷| 免费观看黄色| 欧美三级中文字幕| 国产精品第一页第一页| 婷婷黄色片| 精品视频免费看| 奶茶视频污| 欧美日韩精品一区二区三区| 97精品视频在线观看| 大学生一级毛片高清版| 亚洲第一页在线| 欧美日本一级在线播放| 国产毛片一级| 国产成人综合久久精品红| 国产精品v一区二区三区| 香蕉视频黄色| 9久9久女女热精品视频免费观看 | 久久久99精品久久久久久| 中文字幕在线高清| 色噜噜狠狠在爱丁香| 欧美亚洲黄色| 欧美一级毛片美99毛片| 欧美国产中文| 欧美精品hdxxxxx| 欧美综合中文字幕久久| 国产精品黄在线观看观看 | 亚洲色图欧洲色图| 一级黄色录像视频|