亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? canmonitorview.cpp

?? CAN總線監聽代碼,非常有用
?? CPP
字號:
// CanMonitorView.cpp : CCanMonitorView 類的實現
//

#include "stdafx.h"
#include "CanMonitor.h"

#include "CanMonitorDoc.h"
#include "CanMonitorView.h"
#include "ControlCAN.h"
#include "CanCardDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

UINT CanSnifferThread( LPVOID pParam );

unsigned int CanCardType     = 0x0;
unsigned int CanCardIndex    = 0x0;
unsigned int CanCardPort     = 0x0;
unsigned int CanPortTseg0    = 0x0;    
unsigned int CanPortTseg1    = 0x0; 
unsigned int CanPortFltType  = 0x0;
unsigned int CanPortWorkMode = 0x0;
unsigned int CanPortAcc      = 0x0;
unsigned int CanPortMask     = 0x0ffffffff;

// CCanMonitorView

IMPLEMENT_DYNCREATE(CCanMonitorView, CListView)

BEGIN_MESSAGE_MAP(CCanMonitorView, CListView)
    ON_COMMAND(ID_CAPTURE_RUN, &CCanMonitorView::OnCaptureRun)
    ON_UPDATE_COMMAND_UI(ID_CAPTURE_RUN, &CCanMonitorView::OnUpdateCaptureRun)
    ON_COMMAND(ID_EDIT_CLEAR, &CCanMonitorView::OnEditClear)
END_MESSAGE_MAP()

// CCanMonitorView 構造/析構

CCanMonitorView::CCanMonitorView()
: m_menuFlag(0)
, m_iIndex(0)
{
	// TODO: 在此處添加構造代碼
    m_menuFlag = 0;
    m_iIndex = 0;
}

CCanMonitorView::~CCanMonitorView()
{
    m_menuFlag = 0;
}

BOOL CCanMonitorView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此處通過修改
	//  CREATESTRUCT cs 來修改窗口類或樣式
    cs.style |= LVS_REPORT;
	return CListView::PreCreateWindow(cs);
}

void CCanMonitorView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();
    CListCtrl& theListCtrl = GetListCtrl();

    DWORD dwStyle = theListCtrl.GetExtendedStyle();
    dwStyle |= LVS_EX_FULLROWSELECT; 
    dwStyle |= LVS_EX_GRIDLINES;
    theListCtrl.SetExtendedStyle(dwStyle);

    theListCtrl.InsertColumn(0,_T("消息序號"),LVCFMT_CENTER,80);
    theListCtrl.InsertColumn(1,_T("CAN標識"),LVCFMT_CENTER,120);
    theListCtrl.InsertColumn(2,_T("時間戳"),LVCFMT_CENTER,120);
    theListCtrl.InsertColumn(3,_T("遠程幀"),LVCFMT_CENTER,80);
    theListCtrl.InsertColumn(4,_T("擴展幀"),LVCFMT_CENTER,80);
    theListCtrl.InsertColumn(5,_T("幀長度"),LVCFMT_CENTER,65);
    theListCtrl.InsertColumn(6,_T("幀數據"),LVCFMT_CENTER,230);

    for(int idx=0;idx<1000;idx++)
    {
        theListCtrl.InsertItem(idx,_T(" "));
    }

	// TODO: 調用 GetListCtrl() 直接訪問 ListView 的列表控件,
	//  從而可以用項填充 ListView。
}


// CCanMonitorView 診斷

#ifdef _DEBUG
void CCanMonitorView::AssertValid() const
{
	CListView::AssertValid();
}

void CCanMonitorView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CCanMonitorDoc* CCanMonitorView::GetDocument() const // 非調試版本是內聯的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCanMonitorDoc)));
	return (CCanMonitorDoc*)m_pDocument;
}
#endif //_DEBUG


// CCanMonitorView 消息處理程序

void CCanMonitorView::OnCaptureRun()
{

    if(m_menuFlag == 0)
    {
        CanCardDlg theDlg;    
        
        if(theDlg.DoModal() == IDOK)
        {
            CanCardType     = theDlg.m_iCanCardType;
            CanCardIndex    = theDlg.m_iCanCardIndex;
            CanCardPort     = theDlg.m_iCanCardPort;
            CanPortTseg0    = theDlg.m_iCanBitTseg0;
            CanPortTseg1    = theDlg.m_iCanBitTseg1;
            CanPortFltType  = theDlg.m_iCanFltMode;
            CanPortWorkMode = theDlg.m_iCanWorkMode;
            CanPortAcc      = theDlg.m_iCanFltAcc;
            CanPortMask     = theDlg.m_iCanFltMask;
        }
        else
        {
            return ;
        }
        
        m_menuFlag = 1;
        AfxBeginThread(CanSnifferThread,this);
    }
    else
    {
        m_menuFlag = 0;
    }
    // TODO: 在此添加命令處理程序代碼
}

void CCanMonitorView::OnUpdateCaptureRun(CCmdUI *pCmdUI)
{
    if(m_menuFlag == 0)
    {
        pCmdUI->SetText(_T("啟動(&S)"));
    }
    else
    {
        pCmdUI->SetText(_T("停止(&S)"));
    }
    // TODO: 在此添加命令更新用戶界面處理程序代碼
}

UINT CanSnifferThread( LPVOID pParam )
{
    CCanMonitorView* pView = (CCanMonitorView*) pParam;
    CListCtrl& theListCtrl = pView->GetListCtrl();

    VCI_CAN_OBJ frameinfo[500];
	VCI_ERR_INFO errinfo;
	VCI_INIT_CONFIG init_config;

    int len = 1;
    CString str;

    init_config.AccCode = CanPortAcc;
    init_config.AccMask = CanPortMask;
    init_config.Filter  = CanPortFltType;
    init_config.Mode    = CanPortWorkMode;
    init_config.Timing0 = CanPortTseg0; 
    init_config.Timing1 = CanPortTseg1;

    if(VCI_OpenDevice(CanCardType,CanCardIndex,0)!=STATUS_OK)
	{
		AfxMessageBox(_T("打開設備失敗!"));
		return 0;
	}

    if(VCI_InitCAN(CanCardType,CanCardIndex,CanCardPort,&init_config)!=STATUS_OK) 
	{
		AfxMessageBox(_T("初始化CAN失敗!"));
		VCI_CloseDevice(CanCardType,CanCardIndex);
		return 0;
	}

   	if(VCI_ResetCAN(CanCardType,CanCardIndex,CanCardPort)!=1)
	{
		AfxMessageBox(_T("CAN控制器復位失敗!"));	
		VCI_CloseDevice(CanCardType,CanCardIndex);
        return 0;
	}

	if(VCI_StartCAN(CanCardType,CanCardIndex,CanCardPort)!=1)
	{
		AfxMessageBox(_T("CAN控制器啟動失敗!"));	
		VCI_CloseDevice(CanCardType,CanCardIndex);
        return 0;
	}

    while( pView->m_menuFlag == 1 )
    {
        len=VCI_Receive(CanCardType,CanCardIndex,CanCardPort,frameinfo,500,600);
		if(len<=0)
		{
			VCI_ReadErrInfo(CanCardType,CanCardIndex,CanCardPort,&errinfo);
		}
		else
        {
            
            for(int i=0;i<len;i++)
            {
                str.Format(_T("%04d"),pView->m_iIndex);
                theListCtrl.SetItemText(pView->m_iIndex,0,str);

                str.Format(_T("%08x"),frameinfo[i].ID);
                theListCtrl.SetItemText(pView->m_iIndex,1,str);

                if(frameinfo[i].TimeFlag == 0)
                {
                    str.Format(_T("無時間信息"));
                }
                else
                {
                    str.Format(_T("%08x"),frameinfo[i].TimeStamp);
                }
                theListCtrl.SetItemText(pView->m_iIndex,2,str);

                if(frameinfo[i].RemoteFlag == 0)
                {
                    str.Format(_T("數據幀"));
                }
                else
                {
                    str.Format(_T("遠程幀"));
                }
                theListCtrl.SetItemText(pView->m_iIndex,3,str);

                if(frameinfo[i].ExternFlag == 0)
                {
                    str.Format(_T("標準幀"));
                }
                else
                {
                    str.Format(_T("擴展幀"));
                }
                theListCtrl.SetItemText(pView->m_iIndex,4,str);

                str.Format(_T("%02d"),frameinfo[i].DataLen);
                theListCtrl.SetItemText(pView->m_iIndex,5,str);

                str.Empty();
                for(int j=0;j<frameinfo[i].DataLen;j++)
                {
                    CString strTmp;
                    strTmp.Format(_T("%02x "),frameinfo[i].Data[j]);
                    str+=strTmp;
                }
                theListCtrl.SetItemText(pView->m_iIndex,6,str);

                pView->m_iIndex ++;
                if(pView->m_iIndex>=1000)pView->m_iIndex = 0;

            }
        }

    }

    VCI_CloseDevice(CanCardType,CanCardIndex);

    return 1;
}

void CCanMonitorView::OnEditClear()
{
    // TODO: 在此添加命令處理程序代碼
    CListCtrl& theListCtrl = GetListCtrl();

    for(int i=0;i<1000;i++)
    {
        for(int j=0;j<7;j++)
        {
            theListCtrl.SetItemText(i,j,_T(" "));
        }
    }

    m_iIndex = 0;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品传媒在线| 亚洲色图色小说| 国产色一区二区| 亚洲美女屁股眼交3| 蜜臂av日日欢夜夜爽一区| 99久久99久久综合| 26uuu欧美| 午夜精品一区二区三区免费视频| 三级影片在线观看欧美日韩一区二区| 久久综合综合久久综合| 99综合电影在线视频| 日韩欧美激情四射| 亚洲国产欧美在线人成| 国产黄色成人av| 欧美成人性战久久| 午夜精品免费在线| 色婷婷综合久久久久中文一区二区 | 在线视频国内自拍亚洲视频| 欧美va亚洲va国产综合| 无吗不卡中文字幕| 欧美午夜一区二区三区| 亚洲欧美日韩国产另类专区| 国产成人免费高清| 国产午夜精品在线观看| 国产一区二区三区四区五区美女 | 欧美精三区欧美精三区| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲一卡二卡三卡四卡无卡久久 | 色综合天天综合| 国产精品护士白丝一区av| 国产精品123| 国产精品三级在线观看| 国产传媒一区在线| 欧美国产精品一区二区三区| 国产精品69毛片高清亚洲| 亚洲精品一区二区三区99| 麻豆国产一区二区| 精品国产乱码久久久久久老虎 | 6080yy午夜一二三区久久| 午夜精品福利久久久| 91精品蜜臀在线一区尤物| 日韩精品免费视频人成| 91精品黄色片免费大全| 久久精品av麻豆的观看方式| 日韩一区二区在线观看视频播放| 免费三级欧美电影| 亚洲欧美另类图片小说| 日韩一区二区三区在线视频| 天天综合色天天| 欧美一区二区三区视频免费 | 亚洲成av人片| 宅男在线国产精品| 国产主播一区二区| 国产精品欧美综合在线| 99久久久免费精品国产一区二区| 亚洲免费观看视频| 欧美精选一区二区| 国产福利91精品一区二区三区| 亚洲一区免费观看| 欧美一区二区三区影视| 国产综合色精品一区二区三区| 亚洲国产激情av| 欧美私模裸体表演在线观看| 日韩av在线发布| 国产精品青草久久| 欧美精品三级在线观看| 国产在线精品一区二区不卡了| 国产精品乱码久久久久久| 欧美体内she精视频| 国产米奇在线777精品观看| 亚洲欧美日韩久久精品| 日韩精品一区二区三区视频| 成人av电影免费在线播放| 亚洲成av人影院在线观看网| 久久在线观看免费| 欧美在线小视频| 国产成人精品亚洲777人妖| 亚洲最大成人网4388xx| 久久影院电视剧免费观看| 色香蕉久久蜜桃| 国产在线不卡一卡二卡三卡四卡| 亚洲精选一二三| 国产欧美久久久精品影院| 欧美日韩情趣电影| 成人av免费在线播放| 韩国毛片一区二区三区| 亚洲动漫第一页| 国产精品传媒入口麻豆| 欧美成人vps| 欧美日韩精品专区| va亚洲va日韩不卡在线观看| 国产成人av一区二区三区在线 | 丝袜脚交一区二区| 亚洲黄一区二区三区| 国产亚洲欧美色| 日韩色视频在线观看| 精品1区2区3区| av中文字幕在线不卡| 国产成人午夜精品5599| 蜜臀久久99精品久久久久久9| 一区二区三区高清在线| 国产精品丝袜91| 国产免费观看久久| 久久天堂av综合合色蜜桃网| 日韩午夜电影在线观看| 555www色欧美视频| 欧美日韩dvd在线观看| 欧美日韩中文字幕一区二区| 色综合久久天天| 91亚洲男人天堂| 99r精品视频| jizz一区二区| 一本久道久久综合中文字幕| 99re热视频精品| 色综合久久久久久久久| 91亚洲男人天堂| 欧美亚洲国产一区二区三区| 91福利国产成人精品照片| 在线观看一区二区视频| 欧美三级视频在线观看| 欧美日韩国产一级| 91精品欧美久久久久久动漫| 日韩亚洲电影在线| 久久久久88色偷偷免费| 中文字幕精品在线不卡| 亚洲视频一二三| 亚洲国产成人av网| 蜜桃一区二区三区在线观看| 激情五月激情综合网| 国产福利视频一区二区三区| 不卡大黄网站免费看| 色偷偷久久一区二区三区| 欧美日韩视频在线一区二区| 6080日韩午夜伦伦午夜伦| 精品国精品国产尤物美女| 国产精品免费丝袜| 亚洲专区一二三| 久久国产麻豆精品| 粉嫩aⅴ一区二区三区四区五区| 99热99精品| 欧美精品丝袜久久久中文字幕| 日韩欧美你懂的| 中文字幕在线一区免费| 亚洲一区二区三区四区的| 免费人成精品欧美精品| 国产精品一区二区黑丝| 一本色道久久综合亚洲91 | 夜夜精品浪潮av一区二区三区| 午夜激情综合网| 国产精品白丝av| 精品国产91久久久久久久妲己 | 亚洲国产aⅴ天堂久久| 亚洲成人动漫在线免费观看| 蜜臀a∨国产成人精品| 99久久久久久| 日韩一区二区麻豆国产| 国产精品视频一区二区三区不卡| 亚洲综合激情另类小说区| 精品亚洲免费视频| 色天使色偷偷av一区二区| 精品捆绑美女sm三区| 综合精品久久久| 精品一区二区三区香蕉蜜桃| 一本大道综合伊人精品热热| 欧美va亚洲va国产综合| 亚洲午夜影视影院在线观看| 国产精品香蕉一区二区三区| 欧美日韩黄色一区二区| 国产精品久久久久9999吃药| 日本不卡不码高清免费观看| 91美女精品福利| 国产亚洲成年网址在线观看| 亚洲不卡在线观看| 91免费看`日韩一区二区| 久久人人97超碰com| 日韩高清不卡一区| 在线看不卡av| 综合色天天鬼久久鬼色| 国模冰冰炮一区二区| 欧美日本不卡视频| 亚洲乱码国产乱码精品精98午夜| 国产成人精品一区二| 精品美女在线观看| 日韩 欧美一区二区三区| 欧美少妇一区二区| 一区二区三区不卡视频| 欧美sm美女调教| 国产精品每日更新| 经典三级一区二区| 欧美群妇大交群中文字幕| 一区二区三区加勒比av| 97久久精品人人做人人爽50路| 久久久久久久久岛国免费| 精品亚洲成a人在线观看| 欧美一区二区三区的| 奇米一区二区三区av| 91精品国产综合久久福利软件 | 欧美精品一区二区久久婷婷| 日韩精品成人一区二区三区| 欧美日韩在线播放一区|