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


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

  共有39023人關注過本帖    
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線程及主線程問題

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內容:
主站蜘蛛池模板: 中文字幕35页| 国产肥老妇视频69| 午夜精品久久久久久久| 伊人久久国产| 黄在线免费观看| 国产成人午夜精品免费视频| 女的被到爽的视频在线观看| 亚洲欧美视频| 91福利在线视频| 一级黑人| 无夜精品久久久久久| 亚洲一级片免费看| 成人77777| 国产牛仔裤系列在线观看| 美国黄色在线观看| 精品视频一二三区| 丁香综合| 国产女精品视频在ktv| 久久亚洲网| 千百橹最新亚洲地址在线播放| 一区二区三区免费| 丰满寡妇一级毛片| 日韩欧美三级视频| 亚洲一区二区中文| 亚洲第一视频在线| 成人娱乐网| 色屁屁www影院免费观看入口| 国产精品二区三区| 美女色影院| 黄色aaa| 韩国免费播放一级毛片| 91久久国产露脸精品免费| 国产成人在线视频观看| 国产女精品视频在ktv| 国产一区二区精品| 国产图色| 国产精品天天影视久久综合网| 国内精品第一页| 国产视频久| 国产欧美另类久久精品91| 国产欧美另类久久精品91|