⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cantest2dlg.cpp

📁 CanTest2
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		sendbuf->BiaoShiFu[1]=0x04;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	case 5:
		sendbuf->BiaoShiFu[1]=0x05;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	case 6:
		sendbuf->BiaoShiFu[1]=0x06;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	case 7:
		sendbuf->BiaoShiFu[1]=0x07;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	case 8:
		sendbuf->BiaoShiFu[1]=0x08;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	case 9:
		sendbuf->BiaoShiFu[1]=0x0F;
		m_ctrlZhenMuDi.GetWindowText(string);
		break;
	}
	sendbuf->BiaoShiFu[0]=0x00;
*/    
	if(m_nZhenLeiXing==0)
	{
		sendbuf->RemoteFlag=0;
		for(i=0;i<datanum;i++)
			sendbuf->Data[i]=buf[i];
	}
	else
	{
		sendbuf->RemoteFlag=1;
		for(i=0;i<datanum;i++)
			sendbuf->Data[i]=0x00;
	}
	if(VCI_Transmit(DEV_USBCAN200,0,m_nTongDao,sendbuf)!=1)
	{
		if(VCI_Transmit(DEV_USBCAN200,0,m_nTongDao,sendbuf)==-1)
			MessageBox("设备未打开");
		else if(VCI_Transmit(DEV_USBCAN200,0,m_nTongDao,sendbuf)==0)
			MessageBox("发送失败");
		return;
	}

	CSize size;
	unsigned int JustnowItem;
	BYTE data;

	CString strTime;
	SYSTEMTIME   systime;   
	GetLocalTime(&systime);   
	strTime.Format("%02d:%02d:%02d:%03d", systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);   

	size.cx=0;
	size.cy=50;
	CString str;
	str.Format("%d",nextrow);
	m_list.ItemColorFlag[nextrow]=1;
	JustnowItem=m_list.InsertItem(nextrow,str);	

	nextrow++;	
	m_list.SetItemText(JustnowItem,1,strTime);		
	str.Format("  %d",m_nTongDao);	
	m_list.SetItemText(JustnowItem,2,str);		
	m_list.SetItemText(JustnowItem,3,"发送");		
	str="";

//	m_list.SetItemText(JustnowItem,4,"EGSE");

	m_list.SetItemText(JustnowItem,5,string);

	if(m_nZhenLeiXing==0)
		m_list.SetItemText(JustnowItem,6,"数据帧");	
	else
		m_list.SetItemText(JustnowItem,6,"远程帧");	
		
	m_list.SetItemText(JustnowItem,7,"标准帧");				

	str.Format("%d",sendbuf->DataLen);	
	m_list.SetItemText(JustnowItem,8,str);	
	
	str="";
	if(m_nZhenLeiXing==0)
	{
		for(i=0;i<sendbuf->DataLen;i++)		
		{
			data=sendbuf->Data[i];
			str1.Format("%02X",data);
			str+=str1+" ";	
		}
		m_list.SetItemText(JustnowItem,9,str);
	}
	else
	{
		for(i=0;i<sendbuf->DataLen;i++)		
		{
			data=0x00;
			str1.Format("%02X",data);
			str+=str1+" ";	
		}
		m_list.SetItemText(JustnowItem,9,str);
	}
	m_list.Scroll(size); 
}

void CCanTest2Dlg::OnClear() 
{
	// TODO: Add your control notification handler code here
	m_list.DeleteAllItems();
	nextrow=0;
}

void CCanTest2Dlg::OnSave() 
{
	// TODO: Add your control notification handler code here
	CString m_strFileName;
	CString sPath;
	
	CFileDialog dlg(FALSE, "xls", NULL,
		OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
		"Excel 文件(*.xls)|*.xls||", this);
	dlg.m_ofn.lpstrTitle = _T("保存");
	
	if(dlg.DoModal() == IDOK)
		sPath = dlg.GetPathName();
	else
		return;
	
	m_strFileName = dlg.GetFileName();
		
    CString sDsn;
    CString sExcelFile;
	
    int nPos;
	nPos=sPath.ReverseFind('\\');
	sPath=sPath.Left(nPos);
	
	sExcelFile = sPath +"\\"+ m_strFileName;
	
	CDatabase database;
	CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel driver
	
	CString sSql;
	
	TRY
	{
		sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);
		
		if(database.OpenEx(sSql,CDatabase::noOdbcDialog))
		{
			sSql = "CREATE TABLE canlog (序号 TEXT,时间 TEXT,CAN通道 TEXT,传输方向 TEXT,帧源 TEXT,帧目的地 TEXT,帧类型 TEXT,帧格式 TEXT,数据长度 TEXT,数据信息 TEXT)";
			database.ExecuteSQL(sSql);
			
			CString strSQL;			
	
			CString str[10]={"10","11","12","13","14","15","16","17","18","19"}; 
					
			int nCount = m_list.GetItemCount();   
			
			for(int i=0;i<nCount;i++)   
			{   				
				for(int j=0;j<10;j++)   
				{   
					str[j]=m_list.GetItemText(i,j); 								
				}  
				sSql.Format("INSERT INTO canlog VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" ,
					str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9]);
				database.ExecuteSQL(sSql);							
			}	
		}      
		
		database.Close();
		
		MessageBox("保存成功");
	}
	CATCH_ALL(e)
	{
		TRACE1("no driver for excel: %s",sDriver);
	}
    END_CATCH_ALL;
}


CString GetExcelDriver()
{
    char szBuf[2001];
    WORD cbBufMax = 2000;
    WORD cbBufOut;
    char *pszBuf = szBuf; 
    CString sDriver;
	
    if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
        return "";
    do
    {
        if(strstr(pszBuf,"Excel") != 0)
        {
            sDriver = CString(pszBuf);
            break;
        }
        pszBuf = strchr(pszBuf,'\0') + 1;
    }
    while(pszBuf[1] != '\0');
    
	return sDriver;
}

UINT CCanTest2Dlg::ReceiveThread(LPVOID v)
{
	CCanTest2Dlg *dlg=(CCanTest2Dlg*) AfxGetApp()->GetMainWnd();	
	int k=0;
	while(1)
	{
		int NumValue;
		int i;

		VCI_CAN_OBJ pCanObj[1];

		CString strbuf[200],str1;
		int num=0;

		CSize size;
		unsigned int JustnowItem;
		BYTE ReceivedID[4];

		size.cx=0;
		size.cy=50;
		CString str;
		int Len=0;

		NumValue=VCI_Receive(DEV_USBCAN200,0,0,pCanObj);

		if(pCanObj->RemoteFlag==0)
		{
			k++;
			CString strTime;
			SYSTEMTIME   systime;   
			GetLocalTime(&systime);   
			strTime.Format("%02d:%02d:%02d:%03d", systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);   

			for(num=0;num<NumValue;num++)
			{
				if(nextrow==59999)
				{
					dlg->m_list.DeleteAllItems();
					nextrow=0;
				}

				dlg->m_list.ItemColorFlag[nextrow]=0;

				str.Format("%d",nextrow);
				JustnowItem=dlg->m_list.InsertItem(nextrow,str);	
				nextrow++;	
			
				dlg->m_list.SetItemText(JustnowItem,1,strTime);		

				dlg->m_list.SetItemText(JustnowItem,2,"  0");		
				dlg->m_list.SetItemText(JustnowItem,3,"接收");	
				str="";

				dlg->m_list.SetItemText(JustnowItem,6,"数据帧");
					
				dlg->m_list.SetItemText(JustnowItem,7,"标准帧");						

				str.Format("%d",(pCanObj->DataLen));	
				dlg->m_list.SetItemText(JustnowItem,8,str);	
					
				str="";
				for(i=0;i<(pCanObj->DataLen);i++)			
				{
					str1.Format("%02X ",pCanObj->Data[i]);
					str+=str1;					
				}

				dlg->m_list.SetItemText(JustnowItem,9,str);	
				dlg->m_list.Scroll(size); 	
			}			
			if(StopFlag==1)
				return 0;	
		}
		else
		{
			k++;
			CString strTime;
			SYSTEMTIME   systime;   
			GetLocalTime(&systime); 
			strTime.Format("%02d:%02d:%02d:%03d", systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds);   

			for(num=0;num<NumValue;num++)
			{
				if(nextrow==59999)
				{
					dlg->m_list.DeleteAllItems();
					nextrow=0;
				}

				dlg->m_list.ItemColorFlag[nextrow]=0;

				str.Format("%d",nextrow);
				JustnowItem=dlg->m_list.InsertItem(nextrow,str);	
				nextrow++;	
			
				dlg->m_list.SetItemText(JustnowItem,1,strTime);		

				dlg->m_list.SetItemText(JustnowItem,2,"  0");		
				dlg->m_list.SetItemText(JustnowItem,3,"接收");	
				str="";
/*
				switch(pCanObj->BiaoShiFu[1])
				{
				case 0x00:
                    dlg->m_list.SetItemText(JustnowItem,4,"总线恢复开始");
					break;
				case 0x01:
					dlg->m_list.SetItemText(JustnowItem,4,"遥测遥控");
					break;
				case 0x02:
					dlg->m_list.SetItemText(JustnowItem,4,"星载计算机");
					break;
				case 0x03:
					dlg->m_list.SetItemText(JustnowItem,4,"姿控分系统1");
					break;
				case 0x04:
					dlg->m_list.SetItemText(JustnowItem,4,"姿控分系统2");
					break;
				case 0x05:
					dlg->m_list.SetItemText(JustnowItem,4,"微动量惯性组合");
					break;
				case 0x06:
					dlg->m_list.SetItemText(JustnowItem,4,"数字太阳敏");
					break;
				case 0x07:
					dlg->m_list.SetItemText(JustnowItem,4,"反作用轮");
					break;
				case 0x08:
					dlg->m_list.SetItemText(JustnowItem,4,"地面测试");
					break;
				case 0x0F:
					dlg->m_list.SetItemText(JustnowItem,4,"总线恢复结束");
					break;
				}

                //if((pCanObj->BiaoShiFu[1])==0x00)
				dlg->m_list.SetItemText(JustnowItem,4,"总线恢复开始");

				dlg->m_list.SetItemText(JustnowItem,5,"EGSE");
*/
				dlg->m_list.SetItemText(JustnowItem,6,"远程帧");				
	
				dlg->m_list.SetItemText(JustnowItem,7,"标准帧");						

				str.Format("%d",(pCanObj->DataLen));	
				dlg->m_list.SetItemText(JustnowItem,8,str);	
					
				str="";
				for(i=0;i<(pCanObj->DataLen);i++)			
				{
					str1.Format("%02X ",pCanObj[num].Data[i]);
					str+=str1;					
				}

				dlg->m_list.SetItemText(JustnowItem,9,str);	
				dlg->m_list.Scroll(size); 	
			}			
			if(StopFlag==1)
				return 0;
		}
    }
    return 1;
}

void CCanTest2Dlg::OnReceive() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_Receive)
	{
		StopFlag=0;
		AfxBeginThread(ReceiveThread,0);	
	}
	else
		StopFlag=1;
}

void CCanTest2Dlg::OnSelfcheck() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	
	BYTE pData[15];

	if(m_SelfCheck)
	{
		pData[0]=1;

		int i=VCI_SetReference(DEV_USBCAN200,0,0,REFTYPE_MODE,pData);
	}
	else
	{
		pData[0]=0;

        int i=VCI_SetReference(DEV_USBCAN200,0,0,REFTYPE_MODE,pData);
	}
}

void CCanTest2Dlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	BYTE pData[15];

	pData[0]=0;

	int i=VCI_SetReference(DEV_USBCAN200,0,0,REFTYPE_MODE,pData);
}

void CCanTest2Dlg::OnSelchangeComboMudi() 
{
	// TODO: Add your control notification handler code here
	m_nZhenMuDi=m_ctrlZhenMuDi.GetCurSel();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -