📄 seriesportdlg.cpp
字号:
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,¶m,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 + -