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


主題:CAN線程及主線程問(wèn)題

  共有39021人關(guān)注過(guò)本帖    
hohai
1樓


CAN線程及主線程問(wèn)題  發(fā)帖心情 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 )  //沒(méi)收到CAN數(shù)據(jù)時(shí),在此處死循環(huán)
  {
    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 ) // 擴(kuò)展幀
{
m_CAN.WriteCAN( (BYTE*)RxBuf, dlen+5 );
}
else // 標(biāo)準(zhǔn)幀
{
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例程函數(shù)
問(wèn)題如下:
沒(méi)收到CAN數(shù)據(jù)時(shí),在主線程標(biāo)注處死循環(huán)
收到一幀CAN數(shù)據(jù),單步調(diào)試,執(zhí)行CANOnReceive( )
在執(zhí)行CANOnReceive( )響應(yīng)完CAN線程后,CAN線程應(yīng)該掛起。此時(shí)應(yīng)該跳至主線程(文中標(biāo)注處)死循環(huán)執(zhí)行主線程。但單步調(diào)試,顯示”All Threads are suspended“
公司寫的CAN線程處理函數(shù),響應(yīng)CAN線程時(shí),是否將主線程人為掛起?還是其他原因?

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


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

單步調(diào)試時(shí),線程可能不能正常切換。
你可以在主線程死循環(huán)處設(shè)置斷點(diǎn),調(diào)試執(zhí)行CANOnReceive( )后點(diǎn)全速執(zhí)行,程序應(yīng)該會(huì)執(zhí)行到主線程死循環(huán)斷點(diǎn)處。

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

返回首頁(yè)

CAN線程及主線程問(wèn)題

用戶名:
            驗(yàn)證碼: 驗(yàn)證碼,看不清楚?請(qǐng)點(diǎn)擊刷新驗(yàn)證碼
內(nèi)容:
主站蜘蛛池模板: 免费一级毛片在线播放视频| 久久国产一级毛片一区二区| 国产a国产| 青草色视频| 亚洲欧美另类色图| a毛片免费观看| 久久国产综合精品欧美| 亚州第一视频| 在线精品视频在线观看高清| 欧美人成a视频www| 国产又黄又爽又色视频影视网免费| 爱爱网站在线观看免费| 999成人精品视频在线| 国产小毛片| 久久精品国产清自在天天线| 日韩欧美二区在线观看| 一级做a免费视频| 日本一级爽毛片在线看| 永久免费视频| 亚洲精品一区二区三区四区| 护士一级aaaaaa毛片| 欧美大片毛片大片| 国产91情侣在线精品国产| 国产欧美日韩在线一区二区不卡 | heyzo国产亚洲高清| 日本黄网站| 亚洲日本中文字幕在线2022| 亚洲人精品| 韩国特黄色免费| 国产成人麻豆tv在线观看| 国产亚洲美女精品久久久久狼| 欧美人在线一区二区三区| 日韩欧美国产中文字幕| 亚洲黄色影片| 午夜精品久久久久久久久| 亚洲精品国产第一区二区三区| 亚洲综合久久久久久888| 日韩欧美亚洲综合一区二区| 免费看黄色网址| 欧美一区二区手机在线观看视频| 欧美激情一区二区三区蜜桃视频 |