📄 interfacedlg.cpp
字号:
return TRUE;
}
void CInterfaceDlg::OnReFreash()
{
// TODO: Add your control notification handler code here
//刷新设置
ShowLabel();
}
void CInterfaceDlg::OnChannelcheck0()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck4()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck5()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck6()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnChannelcheck7()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<8;i++)
m_channelinfo[i].Checked=ChannelChecked[i];
}
void CInterfaceDlg::OnStart()
{
// TODO: Add your control notification handler code here
//开始采集
if(beStarting==1)
{
Serial.PortClose();
KillTimer(m_nTimer);
beStarting=0;
beGetting=0;
TimerNow=0;
for(int i=0;i<8;i++)
m_channelinfo[i].SignalIndex=0;
return;
}
//打开计时器
else
{
//if(beTimering==0)
//{ beTimering=1;
beStarting=1;
if(Serial.m_bOpened==FALSE)
Serial.Open(5,2400);
m_nTimer=SetTimer(1,1000,NULL);
//Serial.PortClose();
//}
//else
//{
//}
}
}
UINT AThreadGetdate(LPVOID lParam)
{
//开始采集
CInterfaceDlg * ad=(CInterfaceDlg *)lParam;
// CSerial Serial;
CString str;
char buff_1[3];
if(ad->Trans_Ser->add>9)
sprintf(buff_1,"%d",ad->Trans_Ser->add);
else
sprintf(buff_1,"0%d",ad->Trans_Ser->add);
float val;
int chn,index;
chn=ad->Trans_Ser->channel;
index=ad->m_channelinfo[chn].SignalIndex;
//采集
val=Serial.GetData(buff_1,ad->Trans_Ser->channel)/30;
//分析过滤
if(val>255||val<0)
if(index>0)
val=ad->m_channelinfo[chn].SignalLine[index-1];
else
if(val>255)
val=255;
else
val=0;
//采集到的值入队
if (index<ad->m_channelinfo[chn].PointCount)
{
ad->m_channelinfo[chn].SignalLine[index]=val;
ad->m_channelinfo[chn].SignalIndex=index+1;
}
else
{
//记录
// if (ad->Isrecord==TRUE)
// { WaitForSingleObject(AfxBeginThread(AThreadGetdate,ad,THREAD_PRIORITY_BELOW_NORMAL,0,0),INFINITE);
// ad->Isrecord=FALSE;
//}
ad->m_channelinfo[chn].SignalIndex=1;
ad->m_channelinfo[chn].SignalLine[0]=val;
}
//显示输出
ad->m_lastval[chn].Format(_T("%d;%3.2f"),index,val);
ad->OnControlRemote(ad->Trans_Ser->add,chn);
//ad->beGetting=0;
//ad->beTimering=0;
//ad->New_BK.DrawSingle(ad->GetDC());
//ad->OnShowLastVal();
return 0;
}
void CInterfaceDlg::OnSetCommPort()
{
// TODO: Add your control notification handler code here
int intes[8]={2,5,7,11,29,37,43,57};
for(int i=0;i<8;i++)
{
m_channelinfo[i].PointCount=10;
m_channelinfo[i].Interval=intes[i];
inters[i]=intes[i];
}
Onshowset2info();
}
void CInterfaceDlg::Get51Data()
{
}
void CInterfaceDlg::OnTimer(UINT nIDEvent)
{
//采集的定时中断
// TODO: Add your message handler code here and/or call default
TimerNow++;//保证时间的计数
//增加一个等队列,不空时去检测
//{}
for(int i=0;i<8;i++)
{
if((ChannelChecked[i]==1)&&(TimerNow%inters[i]==0)&&(beGetting==0))
{
while(beGetting)
{;}
beGetting=1;
Trans_Ser->channel=i;
//UpdateData(TRUE);
CWinThread* pThread=NULL;
beTimering=1;
pThread=AfxBeginThread(AThreadGetdate,this,THREAD_PRIORITY_BELOW_NORMAL,0,0);
pThread->m_bAutoDelete=FALSE;
pThread->ResumeThread();
WaitForSingleObject(pThread->m_hThread,INFINITE);
//等待线程结束,此函数后面会介绍。
//while(beGetting)
//{Sleep(50);}
beGetting=0;
delete pThread;
UpdateData(FALSE);
//OnShowLastVal();
New_BK.DrawSingle(pDC_h);
((CStatic*)GetDlgItem(IDC_PIC))->EnableWindow(FALSE);
}
}
// CDC *pDC;
// pDC=GetDC();
// New_BK.DrawSingle(pDC);
// ReleaseDC(pDC);
CDialog::OnTimer(nIDEvent);
}
void CInterfaceDlg::OnButton2()
{
// TODO: Add your control notification handler code here
// Serial.PortClose();
CCommunite cdlg;
// CDialog::OnOK();
cdlg.DoModal();
}
void CInterfaceDlg::OnOpenpic()
{
((CStatic*)GetDlgItem(IDC_PIC))->EnableWindow(TRUE);
DIB dib;
HBITMAP g_hShowBmp;
DeleteObject(g_hShowBmp);
// dib.szFileName="\\P1.bmp";
g_hShowBmp=dib.DIBLoaditmap();
((CStatic*)GetDlgItem(IDC_PIC))->SetBitmap(g_hShowBmp);
((CStatic*)GetDlgItem(IDC_PIC))->MoveWindow(New_BK.StartX,New_BK.StartY,New_BK.H_Size+New_BK.StartX,New_BK.V_Size+New_BK.StartY,TRUE);
}
void CInterfaceDlg::OnControlRemote(int add, int chnl)
{
//CSerial ser;
//CSerial SerialC;
//用于控制的串口
//SerialC.Open(5,2400);
float val;
float linjie;
int Bool_Hei;
char buff_1[3];
//对地址进行字符转换
if(add>9)
sprintf(buff_1,"%d",add);
else
sprintf(buff_1,"0%d",add);
if(m_channelinfo[chnl].Bound==1)//是否选择了绑定
{
val=m_channelinfo[chnl].SignalLine[m_channelinfo[chnl].SignalIndex-1];
linjie=255*(m_channelinfo[chnl].Critical-m_channelinfo[chnl].Low)/(m_channelinfo[chnl].Height-m_channelinfo[chnl].Low);
if(val>linjie)
{
Bool_Hei=1;
for(int i=0;i<3;i++)
MessageBeep(MB_ICONASTERISK);
Sleep(50);
for( i=0;i<3;i++)
MessageBeep(MB_ICONASTERISK);
}
else
Bool_Hei=0;
if(m_channelinfo[chnl].Operat==1)//高于临界值是打开
Serial.ContralOP(buff_1,chnl,Bool_Hei);
else
Serial.ContralOP(buff_1,chnl,1-Bool_Hei);
Sleep(50);
}
}
void CInterfaceDlg::OnFileSet()
{
// TODO: Add your control notification handler code here
CSetDlg setdlg;
setdlg.DoModal();
}
void CInterfaceDlg::OnExit()
{
EndDialog(0);
}
////////////////////////////////
UINT AThreadWriteFile(LPVOID lParam)
{
HANDLE hFile;
CString buf;
BOOL bRc;
CInterfaceDlg *adlg=(CInterfaceDlg *)lParam ;
DWORD dwBytesWritten,dwPos;
hFile = CreateFile (TEXT("Data.txt"), // Open One.txt.TEXT("D:\\Test\\Recv.txt")
GENERIC_READ|GENERIC_WRITE, // Open for reading
0, // Do not share
NULL, // No security
OPEN_EXISTING,//CREATE_NEW, // Existing file only
FILE_ATTRIBUTE_NORMAL, // Normal file
NULL);
dwPos=SetFilePointer(hFile,0,NULL,FILE_END);
for(int i=0;i<8;i++)
for(int j=0;j<adlg->m_channelinfo[i].PointCount;j++)
{
buf.Format(_T("%4.2f"),adlg->m_channelinfo[i].SignalLine[j]);
bRc =WriteFile (hFile,buf,buf.GetLength()*2,&dwBytesWritten, NULL);
}
CloseHandle(hFile);
return 0;
}
void CInterfaceDlg::OnRecord()
{
//Isrecord=TRUE;
}
void CInterfaceDlg::OnControl0()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control0==TRUE)
key=1;
else
key=0;
Control(0,key);
}
void CInterfaceDlg::OnControl1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control1==TRUE)
key=1;
else
key=0;
Control(1,key);
}
void CInterfaceDlg::OnControl2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control2==TRUE)
key=1;
else
key=0;
Control(2,key);
}
void CInterfaceDlg::OnControl3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control3==TRUE)
key=1;
else
key=0;
Control(3,key);
}
void CInterfaceDlg::OnControl4()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control4==TRUE)
key=1;
else
key=0;
Control(4,key);
}
void CInterfaceDlg::OnControl5()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control5==TRUE)
key=1;
else
key=0;
Control(5,key);
}
void CInterfaceDlg::OnControl6()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control6==TRUE)
key=1;
else
key=0;
Control(6,key);
}
void CInterfaceDlg::OnControl7()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int key; //开或者关
if(m_control7==TRUE)
key=1;
else
key=0;
Control(7,key);
}
void CInterfaceDlg::Control(int chnl, int key)
{
while(beGetting==1)
Sleep(100);
beGetting=1;
if(Serial.m_bOpened==FALSE)
Serial.Open(5,2400);
char buff_1[3];
if(Trans_Ser->add>9)
sprintf(buff_1,"%d",Trans_Ser->add);
else
sprintf(buff_1,"0%d",Trans_Ser->add);
Serial.ContralOP(buff_1,chnl,key);
Sleep(100);
beGetting=0;
}
void CInterfaceDlg::OnCheckCk()
{
// TODO: Add your control notification handler code here
while(beGetting==1)
Sleep(100);
beGetting=1;
if(Serial.m_bOpened==FALSE)
Serial.Open(5,2400);
char buff_1[3];
if(Trans_Ser->add>9)
sprintf(buff_1,"%d",Trans_Ser->add);
else
sprintf(buff_1,"0%d",Trans_Ser->add);
int GV;
char buff[10];
char szMessage[11];
buff[1]='\0';
strncpy(szMessage,"AA302000BB",10);
szMessage[10]='\0';
Serial.SendData(szMessage,strlen(szMessage));
Serial.ReadData(buff);
{
char Gdata[3];
strncpy(Gdata,buff+4,1);//取得传送来的4位16进制;
if(((int)*Gdata)<0)
GV=(256+(int)*Gdata);
else
GV=(int)*Gdata;
}
int ss[8]={1,2,4,8,16,32,64,128};
CString strrr;
strrr.Format(_T("%d"),GV);
GetDlgItem(IDC_EDIT2)->SetWindowText(strrr);
beGetting=0;
CBitmap bmpr,bmpb;
bmpr.LoadBitmap(IDB_RED_BMP);
bmpb.LoadBitmap(IDB_BLACK_BMP);
for(int j=0;j<8;j++)
{
if(!(ss[j]&GV))
m_bmp[j].SetBitmap(bmpr);
else
m_bmp[j].SetBitmap(bmpb);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -