📄 cz_cl.cpp
字号:
GetDlgItem(IDC_SAVE_ONE)->EnableWindow(false);
saveall();
com.PortClose();
CDialog::OnCancel();
}
void CCz_cl::OnCancel()//全站取消,不存盘退出
{
// TODO: Add extra cleanup here
clean();
com.PortClose();
CDialog::OnCancel();
}
bool CCz_cl::str_copy(TCHAR dec[], CString src)
{
dec[0]='\0';
int len=src.GetLength();
for(int i=0;i<len; i++)
{
dec[i]=src.GetAt(i);
dec[i+1]='\0';
}
return true;
}
void CCz_cl::OnChangeCdg()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
// GetDlgItem(IDC_SAVE_ONE)->EnableWindow(true);
}
//搜索觇标高
double CCz_cl::search_cbg(int index)
{
CString str;
double cbg=-10.0;
str.Format(_T("%s"),theApp.clsx.GetAt(index)->CDM);
for(int i=0;i<=index;i++)
{
if(str.Compare(theApp.clsx.GetAt(i)->CDM)==0)
{
if(theApp.clsx.GetAt(i)->cbg!=-10.0)
cbg=theApp.clsx.GetAt(i)->cbg;
}
}
return cbg;
}
//设置觇标高
void CCz_cl::set_cbg(int index)
{
UpdateData(true);
theApp.clsx.GetAt(index)->cbg=m_cdg;
}
void CCz_cl::OnKillfocus()
{
// TODO: Add your control notification handler code here
SHSipPreference(AfxGetMainWnd()->m_hWnd,SIP_DOWN);
}
void CCz_cl::OnSetfocus()
{
// TODO: Add your control notification handler code here
SHSipPreference(AfxGetMainWnd()->m_hWnd,SIP_UP);
}
void CCz_cl::TOP_strspl()
{
CString temp,str=theApp.Ser_buf;
//AfxMessageBox(str);
TCHAR string[100],seps[] = _T("<?'(+m-*");
TCHAR *token;
int i=str.Find('<');
if(i!=-1)
{
wcscpy(string,str.Right(str.GetLength()-i-1));
token = wcstok( string, seps );
m_czj=com.widechartodouble(token)*0.0001;
token = wcstok( NULL, seps );
m_spj=com.widechartodouble(token)*0.0001;
m_distance=0.0;
theApp.Ser_buf[0]='\0';
//测角 2 3 7
}
i=str.Find('?');
if(i!=-1)
{
//测边 2 3 7
i+=2;
wcscpy(string,str.Right(str.GetLength()-i));
token = wcstok( string, seps );
m_distance=com.widechartodouble(token)*0.001;
jl+=m_distance;
temp.Format(_T("%f"),m_distance);
wcscat(theApp.JL_buf,temp);
wcscat(theApp.JL_buf,_T("+"));
token = wcstok( NULL, seps );
m_czj=com.widechartodouble(token)*0.0001;
token = wcstok( NULL, seps );
m_spj=com.widechartodouble(token)*0.0001;
}
i=str.Find('\'');
if(i!=-1)
{
wcscpy(string,str.Right(str.GetLength()-i-1));
token = wcstok( string, seps );
m_czj=com.widechartodouble(token)*0.00001;
token = wcstok( NULL, seps );
m_spj=com.widechartodouble(token)*0.00001;
m_distance=0.0;
theApp.Ser_buf[0]='\0';
}
i=str.Find('(');
if(i!=-1)
{
//测边 2 3 7
i+=2;
wcscpy(string,str.Right(str.GetLength()-i));
token = wcstok( string, seps );
m_distance=com.widechartodouble(token)*0.0001;
jl+=m_distance;
temp.Format(_T("%f"),m_distance);
wcscat(theApp.JL_buf,temp);
wcscat(theApp.JL_buf,_T("+"));
wcscat(theApp.JL_buf,temp);
wcscat(theApp.JL_buf,_T("+"));
wcscat(theApp.JL_buf,temp);
wcscat(theApp.JL_buf,_T("+"));
wcscat(theApp.JL_buf,temp);
wcscat(theApp.JL_buf,_T("+"));
token = wcstok( NULL, seps );
m_czj=com.widechartodouble(token)*0.00001;
token = wcstok( NULL, seps );
m_spj=com.widechartodouble(token)*0.00001;
}
UpdateData(false);
if(theApp.mode>1&&theApp.cj==3)
{
GetDlgItem(IDC_STOP)->EnableWindow(false);//测量结束
GetDlgItem(IDC_SAVE_ONE)->EnableWindow(true);//存盘
GetDlgItem(IDCANCEL)->EnableWindow(true);
CloseHandle(theApp.hReadThread);
}else if(theApp.mode==1)
{
GetDlgItem(IDC_STOP)->EnableWindow(false);//测量结束
GetDlgItem(IDC_SAVE_ONE)->EnableWindow(true);//存盘
GetDlgItem(IDCANCEL)->EnableWindow(true);
CloseHandle(theApp.hReadThread);
}
}
void CCz_cl::split_jl(TCHAR *jl1, TCHAR *jl2, TCHAR *jl3, TCHAR *jl4)
{
TCHAR string[100],seps[] = _T("+");
TCHAR *token;
wcscpy(string,theApp.JL_buf);
token = wcstok( string, seps );
wcscpy(jl1,token);
token = wcstok( string, seps );
wcscpy(jl2,token);
token = wcstok( string, seps );
wcscpy(jl3,token);
token = wcstok( string, seps );
wcscpy(jl4,token);
theApp.Ser_buf[0]='\0';
}
void CCz_cl::save_pz()//盘左数据
{
UpdateData(true);
CString str;
int i;
if(theApp.spjistrue && theApp.clsx.GetAt(clsx_index)->spj)//水平角
{
i = search_czj_record(_T("DXSPJ"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i!=-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXSPJ")))
{
AfxMessageBox(_T("不能打开数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_cdg);
theApp.DataBase.m_values.SetAt(3,str);
str.Format(_T("%f"),m_spj);
theApp.DataBase.m_values.SetAt(4,str);
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
if(theApp.czjistrue && theApp.clsx.GetAt(clsx_index)->czj)//垂直角
{
i = search_czj_record(_T("DXCZJ"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i!=-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXCZJ")))
{
AfxMessageBox(_T("不能打开DXCZJ数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_cdg);
theApp.DataBase.m_values.SetAt(3,str);
str.Format(_T("%f"),m_czj);
theApp.DataBase.m_values.SetAt(4,str);
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
if(m_distance>0)
if(theApp.jlistrue && theApp.clsx.GetAt(clsx_index)->jl)//距离
{
str=theApp.JL_buf;
if(str.GetLength()<=0)
return;
i = search_czj_record(_T("DXJL"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i>-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXJL")))
{
AfxMessageBox(_T("不能打开数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_cdg);
theApp.DataBase.m_values.SetAt(3,str);
// TCHAR jl1[20],jl2[20],jl3[20],jl4[20];
// split_jl(jl1,jl2,jl3,jl4);
str.Format(_T("%f"),m_distance);
theApp.DataBase.m_values.SetAt(4,str);
theApp.DataBase.m_values.SetAt(5,str);
theApp.DataBase.m_values.SetAt(6,str);
theApp.DataBase.m_values.SetAt(7,str);
str.Format(_T("%f"),m_distance);
theApp.DataBase.m_values.SetAt(8,str);
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
}
void CCz_cl::save_py()
{
int i;
CString str;
if(theApp.spjistrue && theApp.clsx.GetAt(clsx_index)->spj)
{
i=search_czj_record(_T("DXSPJ"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i!=-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXSPJ")))
{
AfxMessageBox(_T("不能打开数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_spj);
theApp.DataBase.m_values.SetAt(5,str);
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
if(theApp.czjistrue && theApp.clsx.GetAt(clsx_index)->czj)
{
i=search_czj_record(_T("DXCZJ"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i!=-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXCZJ")))
{
AfxMessageBox(_T("不能打开数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_czj);
theApp.DataBase.m_values.SetAt(5,str);
//I A 计算
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
if(m_distance>0)
if(theApp.jlistrue && theApp.clsx.GetAt(clsx_index)->jl)//距离
{
str=theApp.JL_buf;
if(str.GetLength()<=0)
return;
i = search_czj_record(_T("DXJL"),theApp.clsx.GetAt(clsx_index)->chs,theApp.clsx.GetAt(clsx_index)->CDM);
if(i==-1)
{
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXJL")))
{
AfxMessageBox(_T("不能打开数据库"));
return;
}
theApp.DataBase.ReadRecord(i);
str.Format(_T("%f"),m_cdg);
theApp.DataBase.m_values.SetAt(3,str);
// TCHAR jl1[20],jl2[20],jl3[20],jl4[20];
// split_jl(jl1,jl2,jl3,jl4);
str.Format(_T("%f"),m_distance);
theApp.DataBase.m_values.SetAt(4,str);
theApp.DataBase.m_values.SetAt(5,str);
theApp.DataBase.m_values.SetAt(6,str);
theApp.DataBase.m_values.SetAt(7,str);
str.Format(_T("%f"),m_distance);
theApp.DataBase.m_values.SetAt(8,str);
theApp.DataBase.MotifyRecord(i);
theApp.DataBase.CloseTable();
}
}
}
double CCz_cl::m_wtof(CString str)
{
char buf [250];
buf[0]='\0';
int i,len=wcslen(str);
for(i=0;i<len;i++)
{
switch(str.GetAt(i))
{
case '-':
buf[i]='-';
buf[i+1]='\0';
break;
case '.':
buf[i]='.';
buf[i+1]='\0';
break;
case '0':
buf[i]='0';
buf[i+1]='\0';
break;
case '1':
buf[i]='1';
buf[i+1]='\0';
break;
case '2':
buf[i]='2';
buf[i+1]='\0';
break;
case '3':
buf[i]='3';
buf[i+1]='\0';
break;
case '4':
buf[i]='4';
buf[i+1]='\0';
break;
case '5':
buf[i]='5';
buf[i+1]='\0';
break;
case '6':
buf[i]='6';
buf[i+1]='\0';
break;
case '7':
buf[i]='7';
buf[i+1]='\0';
break;
case '8':
buf[i]='8';
buf[i+1]='\0';
break;
case '9':
buf[i]='9';
buf[i+1]='\0';
break;
}
}
return atof(buf);
}
int CCz_cl::spj_xcjs(int chs)//计算方向值 2c f
{
double F0,L,R,A0=1000,c2;
CJbjs js;
CString str;
int rec,index=0;
// AfxMessageBox(_T("2"));
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXSPJ")))
{
AfxMessageBox(_T("不能打开DXSPJ数据库"));
return -1;
}
theApp.DataBase.ReadRecord(0);
TCHAR CDM[20];
wcscpy(CDM,theApp.DataBase.m_values.GetAt(2));
theApp.DataBase.CloseTable();
rec=search_czj_record(_T("DXSPJ"),theApp.clsx.GetAt(clsx_index)->chs,CDM);
if(rec!=-1)
{
theApp.c2=new double[theApp.spj_rec_len];
if(!theApp.DataBase.OpenTable(theApp.DataBase.szFileName,_T("DXSPJ")))
{
AfxMessageBox(_T("不能打开DXSPJ数据库"));
return -1;
}
theApp.DataBase.ReadRecord(rec);
L=m_wtof(theApp.DataBase.m_values.GetAt(4));
R=m_wtof(theApp.DataBase.m_values.GetAt(5));
F0=js.fxz_f0(L,R);
if(theApp.spj_rec_len>4)//带归零向
{
theApp.DataBase.ReadRecord(rec+theApp.spj_rec_len);
L=m_wtof(theApp.DataBase.m_values.GetAt(4));
R=m_wtof(theApp.DataBase.m_values.GetAt(5));
A0=js.fxz_0_f0(L,R,F0);
F0=A0;
str.Format(_T("%f"),F0);
theApp.DataBase.m_values.SetAt(6,str);
theApp.DataBase.MotifyRecord(rec+theApp.spj_rec_len);//存盘
}
// str.Format(_T("spj_rec_len = %d"),theApp.spj_rec_len);
// AfxMessageBox(str);
for(int i=0;i<theApp.spj_rec_len;i++)
{
theApp.DataBase.ReadRecord(i+rec);
L=m_wtof(theApp.DataBase.m_values.GetAt(4));
R=m_wtof(theApp.DataBase.m_values.GetAt(5));
if(i==0)//第一个水平方向
{
str.Format(_T("%f"),F0);
theApp.DataBase.m_values.SetAt(6,str);
}else if(theApp.spj_rec_len>4 && i==theApp.spj_rec_len-1)//最后一个水平方向
{
str.Format(_T("%f"),F0);
theApp.DataBase.m_values.SetAt(6,str);
}
else
{
A0=js.fxz(L,R,F0);
str.Format(_T("%f"),A0);
theApp.DataBase.m_values.SetAt(6,str);
}
c2=js._2C(L,R);
str.Format(_T("%f"),c2);
theApp.DataBase.m_values.SetAt(7,str);
theApp.c2[i]=c2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -