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

📄 seriesportdlg.cpp

📁 通过COM1与单片机通讯的界面程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	m_statusbar.SetIndicators(array,sizeof(array)/sizeof(UINT));

	for(int n=0;n<5;n++)
	{
		m_statusbar.SetPaneInfo(n,array[n],0,240);
	}

	m_statusbar.SetPaneInfo(4,array[4],0,300);
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
    m_machine="无DUT接入";
	RECT m_rect,m_rect2;
	m_statusbar.GetItemRect(2,&m_rect);
    m_statusbar.GetItemRect(3,&m_rect2);

	CClientDC  dc(this);
    CSize simy;
    simy=dc.GetTextExtent(ddtime);
    m_statusbar.SetPaneInfo(3,3,SBPS_NORMAL,simy.cx);
    m_statusbar.SetPaneText(3,ddtime);
    m_statusbar.SetPaneText(2,m_machine);

//  m_data10.SetParent(&m_statusbar);
//	m_data10.MoveWindow(&m_rect);
//	m_myedt1.SetParent(&m_statusbar);
//	m_myedt1.MoveWindow(&m_rect2);

char THmin[30][12]={"Ath2","Bth","Cth","QambBs","TIbbTs","TIambT",
"GNI","Rvtco","SdPER","BatMed","BatLow","fTH8E2R","Mcount","CAQAfg",
"SN_MSB","SN_LSB","TIoral","MeaTHigh","FevTemp","MeaTLow","TIrvtco","AOffset",
"Kamb1","Kamb2","PDStatus","DUTver","DUTpara5","DUTpara6","SKinHi","SKinLo"};
char THitem[30][2]={"D","b","c","d","L","f","g","h","i","j","k","p","n","o","G",
 "I","T","M","N","O","m","l","q","U","s","Z","r","y","V","W"};
char TN205min[30][12]={"Ath2","Bth","Cth","QambBs","TIbbTs","TIambT",
"GNI","Rvtco","SdPER","BatMed","BatLow","SpMode","MeaTHigh","SN_MSB","SN_LSB","CtrlFg",
"ExtPCtrl","Emiss","MeaTLow","ModeCtl","AOffset","Wbb0","Wbb1","Wbb2","Wbb3","DUTver",
"Wamb0GR1","Wamb0GR2","Wamb0GL1","Wamb0GL2"};
char TN205item[30][2]={"D","b","c","d","L","f","g","h","i","j","k","~","M","G","I","r",
"K","S","O","}","l","T","U","V","W","Z","n","o","p","q"};
char TN4min[31][12]={"Ath2","Bth","Cth","QambBs","TIbbTs","TIambT",
"GNI","Rvtco","SdPER","BatMed","BatLow","GNJ","SpMode","MeaTHigh","SN_MSB","SN_LSB",
"CtrlFg","ExtPCtrl","Emiss","MeaTLow","LCDCon","AOffset","GNRatio0","GNRatio1",
"GNRatio2","GNSwLv1","GNSwLv2","QdnRTB","DUTver","WIenIdx","WIenData"};
char TN4item[31][2]={"D","b","c","d","L","f","g","h","i","j","k","A","~","M","G","I",
"r","K","S","O","}","l","T","U","V","W","n","o","Z","p","q"};
char TCT22min[42][12]={"Ath2","Bth","Cth","QambBs","TIbbTs","TIambT",
"GNI","Rvtco","SdPER","BatMed","BatLow","GNJ","SpMode","MeaTHigh","SN_MSB","SN_LSB",
"RwCA","VcpHigh","VcpLow","TIprbTs","TCTHigh","CtrlFg","ExtPCtrl","Emiss","MeaTLow",
"ModeCtrl","AOffset","Wbb0","Wbb1","Wbb2","Wbb3","DUTver","Wamb0GR1","Wamb0GR2",
"Wamb0GL1","Wamb0GL2","RwCP32","TCTLow","ZwCP0","ZwCP1","ZwCP2","ZwCP3"};
char TCT22item[42][2]={"D","b","c","d","L","f","g","h","i","j","k","A","~","M","G",
"I", "[","{","'","s","]","r","K","S","O","}","l","T","U","V","W","Z","n","o","p","q",
"\\","^","v","w","x","y"};
char TN105min[31][12]={"Ath2","Bth","Cth","QambBs","TIbbTs","TIambT",
"GNI","Rvtco","SdPER","BatMed","BatLow","RDModCtl","EmissLow","MeaThigh","SN_MSB","SN_LSB",
"CtrlFg","ExtPCtrl","Emiss","MeaTLow","TIrvtco","AOffset","Wbb0","Wbb1","Wbb2","Wbb3"
"DUTver","Wamb0","Wamb1","Wamb2","Wamb3"};
char TN1item[31][2]={"D","b","c","d","L","f","g","h","i","j","k","y","'","M","G","I","r",
"K","S","O","m","l","T","U","V","W","Z","n","o","p","q"};

   filehead=0;
   WienIndex=0;
	for (int iwien=0;iwien<14;iwien++)
		WienData[iwien]=0;
	SetTimer(1,100,NULL);
	SetTimer(4,1000,NULL);
	SetTimer(3,1,NULL);
	ii=0;ii1=0;ii2=0;ii3=0;ii4=0;ii5=0;ii6=0;ii7=0;ii8=0;
	((CListCtrl*)GetDlgItem(IDC_LIST1))->SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);
    ((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"TLprbTc",LVCFMT_LEFT,75);//9
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"QdnRef",LVCFMT_LEFT,65);//9
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"QdnambTs",LVCFMT_LEFT,85);//8
    ((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"TjambT",LVCFMT_LEFT,65);//7
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"Qdn0",LVCFMT_LEFT,65);//6
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"Qdnup",LVCFMT_LEFT,70);//5
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"QdnR",LVCFMT_LEFT,70);//4
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"Tjbbpc",LVCFMT_LEFT,70);//3
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"QdnBatt",LVCFMT_LEFT,70);//2
	((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,"QdnVos",LVCFMT_LEFT,70);//1
    m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");
	m_lis.InsertItem(0,"");

	for(int i=0;i<11;i++)
	{
		for(int j=1;j<4;j++)
		{
			//int numb=2*j-i+30;
			//CString str;
			//str.Format("%i",numb);
			m_lis.SetItemText(i,j,"");
		}
	}
	((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,"");
((CListCtrl*)GetDlgItem(IDC_LIST2))->SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"数据",LVCFMT_LEFT,45);//9
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"ITEM",LVCFMT_LEFT,30);//8
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"参数二",LVCFMT_LEFT,80);//7
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"数据",LVCFMT_LEFT,45);//6
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"ITEM",LVCFMT_LEFT,30);//5
((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertColumn(0,"参数一",LVCFMT_LEFT,65);//4

if(DUTStation=="0168TH")
{ for(int i=0;i<30;i++)
    {  if(i>=0&&i<=14)
    ((CListCtrl*)GetDlgItem(IDC_LIST2))->InsertItem(0,THmin[14-i]);
           else if(i>=15)
	((CListCtrl*)GetDlgItem(IDC_LIST2))->SetItemText(i-15,3,THmin[i]);//3表示列
    }//4
  for( i=0;i<=14;i++)
  {((CListCtrl*)GetDlgItem(IDC_LIST2))->SetItemText(i,1,THitem[i]);//1表示列
  ((CListCtrl*)GetDlgItem(IDC_LIST2))->SetItemText(i,4,THitem[i+15]);}//1表示列
}
((CListCtrl*)GetDlgItem(IDC_LIST3))->SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertColumn(0,"DATA数据",LVCFMT_LEFT,80);//5
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertColumn(0,"ITEM",LVCFMT_LEFT,50);//5
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertColumn(0,"参数序列",LVCFMT_LEFT,30);//5
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"25");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"24");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"23");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"22");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"21");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"20");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"19");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"18");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"17");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"16");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"15");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"14");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"13");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"12");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"11");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"10");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"9");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"8");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"7");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"6");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"5");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"4");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"3");//4
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"2");//4	
((CListCtrl*)GetDlgItem(IDC_LIST3))->InsertItem(0,"1");//4


((CListCtrl*)GetDlgItem(IDC_LIST3))->SetItemText(0,1,"GNI");//1表示列
((CListCtrl*)GetDlgItem(IDC_LIST3))->SetItemText(18,1,"SN_M");//1表示列
((CListCtrl*)GetDlgItem(IDC_LIST3))->SetItemText(19,1,"SN_L");//1表示列
//GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
//GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
//GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);

//GetDlgItem(IDC_BUTTON6)->EnableWindow(FALSE);
//GetDlgItem(IDC_BUTTON7)->EnableWindow(FALSE);
//GetDlgItem(IDC_BUTTON8)->EnableWindow(FALSE);
	BuffAdd=0;
	for(int jj=0;jj<20;jj++)
		for(int kk=0;kk<100;kk++)
	InforBuff[jj][kk]='\0';
   	//	xmove=10;
	//	ymove=10;
	Y_Head=0;
	Y_Tail=0;
	oldY_Tail=0;
	for(int ii=0;ii<60;ii++)
		for(int jj=0;jj<20;jj++)
		Queue[ii][jj]='\0';
	QueueX=0;
	shift=0;

	hCom = CreateFile("COM1",  //打开串口1
		GENERIC_READ|GENERIC_WRITE, //允许读和写操作
		0,  //独占方式
		NULL,
		OPEN_EXISTING, //打开一个存在的串口
		FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //异步方式打开
		NULL
		);
	if (hCom==INVALID_HANDLE_VALUE)
	{
		MessageBox("端口打开失败.");
		//return;
	}



	SetupComm(hCom,1024,1024); //设置发送和接收缓冲区大小

	//设置串口信息
	DCB dcb;
	GetCommState(hCom,&dcb);
	dcb.BaudRate = 19200;
	dcb.fBinary = TRUE;
	dcb.fParity = FALSE;
	dcb.ByteSize = 8;
	dcb.Parity = ODDPARITY;

	dcb.StopBits = ONESTOPBIT;

	if (!SetCommState(hCom,&dcb))
	{
		MessageBox("掩码设置失败.","提示");
		//return;		
	}

	if (!SetCommMask(hCom,EV_RXCHAR | EV_TXEMPTY))
	{
		MessageBox("掩码设置失败.","提示");
		//return;
	}

	DWORD param;
	hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunction,&param,0,&dwThreadID);
	if (hThread==INVALID_HANDLE_VALUE)
	{
		MessageBox("线程创建失败.","提示",64);
		//return;
	}
	IsFun = TRUE;	
//	GetDlgItem(IDC_LIST1)->ShowWindow(FALSE);
//  GetDlgItem(IDC_LIST2)->ShowWindow(FALSE);
//	GetDlgItem(IDC_STATIC3)->ShowWindow(FALSE);
//	GetDlgItem(IDC_STATIC2)->ShowWindow(FALSE);
	

	DWORD threadID=0;
  hCommThread=(HANDLE)::CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)THCTestThreadProcess,AfxGetMainWnd()->m_hWnd,0,&threadID);
  if(hCommThread==NULL)
    {
	::AfxMessageBox("创建测试线程失败");
	::PostQuitMessage(0);
    }	

     CTime time0=CTime::GetCurrentTime();
	 CString pFileName= time0.Format("%Y%m%d");
   pFileName +=".txt";
	if(!file1.Open(pFileName,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite,NULL))
	{   
		MessageBox("文件打开失败.","提示",64) ; }



	


        LONGLONG fadd= file1.GetLength();
       if((fadd%89)!=0)
	   filehead=fadd-89;
	   else  filehead=fadd-(fadd%89)-89;
       ULONGLONG dwActual=file1.SeekToEnd();
      _int64 fileaddsig=dwActual%60;
        if(fileaddsig!=0)
	   file1.Seek((long)(60-fileaddsig),CFile::current);
	   else file1.Seek(0,CFile::current);
	  // char Ntime3[7]="abcdef";
     //  file1.Write(Ntime3,sizeof(Ntime3));

CTime time2=CTime::GetCurrentTime();
	 CString pFileName2= time2.Format("02%Y%m%d");
     pFileName2 +=".txt";
	if(!file2.Open(pFileName2,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite,NULL))
	{   
		MessageBox("文件打开失败.","提示",64) ; }
      
	 file2.Write("环境温度",sizeof("环境温度"));
      file2.Write("  ",sizeof("  "));

	   file2.Write("时间",sizeof("时间"));

	   char   buf[2]   ;   
  sprintf(buf,"%c%c",0x0d,0x0a);   
  file2.Write(buf,sizeof(buf));
	  
	file2.Seek(0,CFile::end);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CSeriesPortDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
		if(nID==SC_MAXIMIZE) 
		{	//MessageBox("最大化窗口!");
		    RECT   rctScreen;   
  ::GetClientRect(::GetDesktopWindow(),   &rctScreen);   
  m_statusbar.MoveWindow(0,-100+rctScreen.bottom,rctScreen.right,20,FALSE);

		   
			}
        
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CSeriesPortDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}


	CDC *pDC=GetDC();
    CPen cpen;
    cpen.CreatePen(PS_SOLID,1,RGB(0,255,0));
    pDC->SelectObject(cpen);
	pDC->SetBkColor(RGB(0,255,0));
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(0x00ff00aa);
	//pDC->TextOut(360,600,"热映光电TH机型PCAQ测试");
	//pDC->TextOut(200,200,"测试控件的可视性对绘图的影响!");
	pDC->TextOut(35,450,"请注意TCT,TN2的WIEN是Wbb1到Wbb4;TN4 的是w1到w14 !");
	CSeriesPortDlg::IsoImages() ;
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.


HCURSOR CSeriesPortDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

/*void CSeriesPortDlg::OnButton1() 
{   
//	for(int ip=0;ip<21;ip++)
  //  for(int jp=0;jp<2;jp++)
   //  ((CListCtrl*)GetDlgItem(IDC_LIST2))->SetItemText(ip,3*jp+2,"");  
		
	DWORD res;
	DWORD factdata = 0;
   	CString str;
	char jji[10];
	jji[0]=STX;
	jji[1]='@';
	jji[2]='0';
	jji[3]='0';
	jji[4]='3';
	jji[5]='1';
	jji[6]='7';
	jji[7]='1';
	jji[8]=CR;
	jji[9]='\0';
	str=jji;
	//m_info.GetWindowText(str);
	wOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);//创建一个事件对象
	//IsStop = FALSE;
	if (WriteFile(hCom,str,str.GetLength(),&factdata,&wOverLaped))//开始发送数据
	{
		//IsStop = TRUE;
		MessageBox("发送成功");
	}
	else
	{
		res = WaitForSingleObject(wOverLaped.hEvent,50); //延时5秒,等待数据发送
		if (WAIT_OBJECT_0 == res)//如果事件处于有信号状态,表示发送完成
		{
			//IsStop = TRUE;
		}
		else
			//IsStop = FALSE;

		Sleep(10); //延时1秒钟		
	}	
//	GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);
	KillTimer(2);
}*/

//自定义消息处理函数,用于接收消息		
void CSeriesPortDlg::OnRecieveData(WPARAM wParam, LPARAM lParam)
{

	DWORD res,factbyte;

	memset(DataBuffer,0,1024); //初始化数据缓冲区
	COMSTAT rst;

	ClearCommError(hCom,&res,&rst);//清空串口错误标志,记录当前通信状态

⌨️ 快捷键说明

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