📄 commucationview.cpp
字号:
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice3*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
}
m_Remain[i]=m_Money[i]-backup[i];
price.Format("%6.2f",backup[i]);
SetDlgItemText(iSpend[i],price);
price.Format("%6.2f",m_Remain[i]);
SetDlgItemText(iRemain[i],price);
switch(i)
{
case 0:m_Bitmap1.SetBitmap(hChat);
case 1:m_Bitmap2.SetBitmap(hChat);
case 2:m_Bitmap3.SetBitmap(hChat);
case 3:m_Bitmap4.SetBitmap(hChat);
case 4:m_Bitmap5.SetBitmap(hChat);
case 5:m_Bitmap6.SetBitmap(hChat);
case 6:m_Bitmap7.SetBitmap(hChat);
case 7:m_Bitmap8.SetBitmap(hChat);
case 8:m_Bitmap9.SetBitmap(hChat);
case 9:m_Bitmap10.SetBitmap(hChat);
case 10:m_Bitmap11.SetBitmap(hChat);
case 11:m_Bitmap12.SetBitmap(hChat);
case 12:m_Bitmap13.SetBitmap(hChat);
case 13:m_Bitmap14.SetBitmap(hChat);
case 14:m_Bitmap15.SetBitmap(hChat);
case 15:m_Bitmap16.SetBitmap(hChat);
}
//获取一秒后的通话费用
timetotal[i]+=1;
if((m_Data[i].time1==0)||((timetotal[i]-1)<time1[i]))
{
counter=(timetotal[i]-1)/m_Data[i].unittime1+1;
CString x;
x.Format("%d",counter);
TRACE(x);
if(counter>accumulate[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge1!=0)
{
intValue=m_Data[i].unitprice1*pos/100+m_Data[i].surcharge1;
total[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice1*pos/100;
total[i]+=(float)intValue/100;
}
accumulate[i]+=1;
}
}
else if((m_Data[i].time2==0)||((timetotal[i]-1)<time2[i]))
{
counter=m_Data[i].time1+(timetotal[i]-1-time1[i])/m_Data[i].unittime2+1;
if(counter>accumulate[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge2!=0)
{
intValue=m_Data[i].unitprice2*pos/100+m_Data[i].surcharge2;
total[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice2*pos/100;
total[i]+=(float)intValue/100;
}
accumulate[i]+=1;
}
}
else
{
counter=m_Data[i].time1+m_Data[i].time2+(timetotal[i]-1-time1[i]-time2[i])/m_Data[i].unittime2+1;
if(counter>accumulate[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge3!=0)
{
intValue=m_Data[i].unitprice3*pos/100+m_Data[i].surcharge3;
total[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice3*pos/100;
total[i]+=(float)intValue/100;
}
accumulate[i]+=1;
}
}
//减去其它费用
m_IsShut[i]=m_Money[i]-total[i];
if(m_Data[i].billcharge!=0)
{
m_IsShut[i]-=(float)m_Data[i].billcharge/100;
}
else if(m_Data[i].percharge!=0)
{
m_IsShut[i]-=m_Data[i].percharge*total[i];
}
//判断是否断开
if(m_IsShut[i]<0)
{
SendStr[SendLen]='A';
SendStr[SendLen+1]='T';
SendStr[SendLen+2]='C';
SendStr[SendLen+3]=48+i;
SendStr[SendLen+4]='\r';
SendLen+=5;
}
m_Repeat[i]=FALSE;
}
if(info.Mid(43*i,2)=="30")
{
//如果有意外情况,则执行以下操作
if(m_Repeat[i])
{
m_Repeat[i]=FALSE;
//取电话号码
Num="";
for(j=1;j<24;j++)
{
if((info.Mid(43*i+2+j,1)!="f")&&(info.Mid(43*i+2+j,1)!=" "))
{
Bit=info.Mid(43*i+2+j,1);
Num+=Bit;
}
}
PhoneNo[i]=Num;
SetDlgItemText(iTele[i],Num);
Code[i]=Num.Left(11);
//取出电话号码对应的数据
m_Data[i]=GetFeeInfo(Code[i]);
time1[i]=m_Data[i].time1*m_Data[i].unittime1;
time2[i]=m_Data[i].time2*m_Data[i].unittime2+time1[i];
iLevel[i]=m_Data[i].countlevel;
//取出通话起始时间
BeginChat[i]="";
for(j=0;j<8;j++)
{
if(info.Mid(43*i+33+j,1)==" ")
{
Bit=":";
}
else
{
Bit=info.Mid(43*i+33+j,1);
}
BeginChat[i]+=Bit;
}
//将通话起始时间赋给三个变量
sscanf(BeginChat[i].Left(2),"%d",&sHour);
sscanf(BeginChat[i].Mid(3,2),"%d",&sMin);
sscanf(BeginChat[i].Mid(6,2),"%d",&sSec);
//显示通话起始时间
SetDlgItemText(iStart[i],BeginChat[i]);
//将通话起始时间赋给BeginTime[i]变量
BeginTime[i]=CTime::GetCurrentTime();
int Year=BeginTime[i].GetYear();
int Month=BeginTime[i].GetMonth();
int Day=BeginTime[i].GetDay();
BeginTime[i]=CTime::CTime(Year,Month,Day,sHour,sMin,sSec);
timetotal[i]=GetSpendTime(i);
hour=timetotal[i]/3600;
second=timetotal[i] % 60;
minute=(timetotal[i] % 3600)/60;
//显示通话时间
CodeView.Format("%d",hour);
if(CodeView.GetLength()<2)
CodeView="0"+CodeView;
CodeView+=":";
Num.Format("%d",minute);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
CodeView+=":";
Num.Format("%d",second);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
SetDlgItemText(iTime[i],CodeView);
//特殊话费处理
ProcessTotal(i);
//计算附加费
if(m_Data[i].billcharge!=0)
{
AddFee[i]=(float)m_Data[i].billcharge/100;
backup[i]+=AddFee[i];
}
else if(m_Data[i].percharge!=0)
{
AddFee[i]=backup[i]*m_Data[i].percharge/100;
backup[i]+=AddFee[i];
}
else
{
AddFee[i]=0;
}
m_Remain[i]=m_Money[i]-backup[i];
//显示话费
price.Format("%6.2f",backup[i]);
SetDlgItemText(iSpend[i],price);
//显示余额
price.Format("%6.2f",m_Remain[i]);
SetDlgItemText(iRemain[i],price);
//求余额
m_Money[i]-=backup[i];
CString add;
add.Format("%d",i+1);
if(add.GetLength()<2)
{
add="0"+add;
}
NumFlag+=add;
m_Report=0;
ProcessFile(i);
ProcessData(i);
if(m_Data[i].IsPrint)
OnFilePrint();
//计数值还原
total[i]=0;
backup[i]=0;
accumulator[i]=0;
accumulate[i]=0;
SetDlgItemText(iTele[i],"");
SetDlgItemText(iStart[i],"");
SetDlgItemText(iSpend[i],"");
SetDlgItemText(iTime[i],"");
SetDlgItemText(iRemain[i],"");
}
switch(i)
{
case 0:m_Bitmap1.SetBitmap(hCounter);
case 1:m_Bitmap2.SetBitmap(hCounter);
case 2:m_Bitmap3.SetBitmap(hCounter);
case 3:m_Bitmap4.SetBitmap(hCounter);
case 4:m_Bitmap5.SetBitmap(hCounter);
case 5:m_Bitmap6.SetBitmap(hCounter);
case 6:m_Bitmap7.SetBitmap(hCounter);
case 7:m_Bitmap8.SetBitmap(hCounter);
case 8:m_Bitmap9.SetBitmap(hCounter);
case 9:m_Bitmap10.SetBitmap(hCounter);
case 10:m_Bitmap11.SetBitmap(hCounter);
case 11:m_Bitmap12.SetBitmap(hCounter);
case 12:m_Bitmap13.SetBitmap(hCounter);
case 13:m_Bitmap14.SetBitmap(hCounter);
case 14:m_Bitmap15.SetBitmap(hCounter);
case 15:m_Bitmap16.SetBitmap(hCounter);
}
//发送结账命令
SendStr[SendLen]='A';
SendStr[SendLen+1]='T';
SendStr[SendLen+2]='P';
SendStr[SendLen+3]=48+i;
SendStr[SendLen+4]='\r';
SendLen+=5;
if(Clear[i])
{
//关闭费率计算按钮
Clear[i]=FALSE;
//获取通话时间
timetotal[i]=GetSpendTime(i);
hour=timetotal[i]/3600;
second=timetotal[i] % 60;
minute=(timetotal[i] % 3600)/60;
//显示通话时间
CodeView.Format("%d",hour);
if(CodeView.GetLength()<2)
CodeView="0"+CodeView;
CodeView+=":";
Num.Format("%d",minute);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
CodeView+=":";
Num.Format("%d",second);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
SetDlgItemText(iTime[i],CodeView);
//累加通话费用
if((m_Data[i].time1==0)||((timetotal[i]-1)<time1[i]))
{
counter=(timetotal[i]-1)/m_Data[i].unittime1+1;
if(counter>accumulator[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge1!=0)
{
intValue=m_Data[i].unitprice1*pos/100+m_Data[i].surcharge1;
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice1*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
else if((m_Data[i].time2==0)||((timetotal[i]-1)<time2[i]))
{
counter=m_Data[i].time1+(timetotal[i]-1-time1[i])/m_Data[i].unittime2+1;
if(counter>accumulator[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge2!=0)
{
intValue=m_Data[i].unitprice2*pos/100+m_Data[i].surcharge2;
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice2*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
else
{
counter=m_Data[i].time1+m_Data[i].time2+(timetotal[i]-1-time1[i]-time2[i])/m_Data[i].unittime2+1;
if((timetotal[i]-m_Data[i].time2*m_Data[i].unitprice2-m_Data[i].time1*m_Data[i].unittime1-1)/m_Data[i].unittime3==0)
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge3!=0)
{
intValue=m_Data[i].unitprice3*pos/100+m_Data[i].surcharge3;
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice3*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
//计算附加费
if(m_Data[i].billcharge!=0)
{
AddFee[i]=(float)m_Data[i].billcharge/100;
backup[i]+=AddFee[i];
}
else if(m_Data[i].percharge!=0)
{
AddFee[i]=backup[i]*m_Data[i].percharge/100;
backup[i]+=AddFee[i];
}
else
{
AddFee[i]=0;
}
m_Remain[i]=m_Money[i]-backup[i];
//显示话费
price.Format("%6.2f",backup[i]);
SetDlgItemText(iSpend[i],price);
//显示余额
price.Format("%6.2f",m_Remain[i]);
SetDlgItemText(iRemain[i],price);
//求余额
m_Money[i]-=backup[i];
CString add;
add.Format("%d",i+1);
if(add.GetLength()<2)
{
add="0"+add;
}
NumFlag+=add;
m_Report=0;
ProcessFile(i);
ProcessData(i);
if(m_Data[i].IsPrint)
OnFilePrint();
//计数值还原
total[i]=0;
backup[i]=0;
accumulator[i]=0;
accumulate[i]=0;
SetDlgItemText(iTele[i],"");
SetDlgItemText(iStart[i],"");
SetDlgItemText(iSpend[i],"");
SetDlgItemText(iTime[i],"");
SetDlgItemText(iRemain[i],"");
}
}
}
test=2;
}
else
{
if(test==0)
{
SetDlgItemText(IDC_STATUS,"串口告警");
m_Bitmap1.SetBitmap(hAlarm);
m_Bitmap2.SetBitmap(hAlarm);
m_Bitmap3.SetBitmap(hAlarm);
m_Bitmap4.SetBitmap(hAlarm);
m_Bitmap5.SetBitmap(hAlarm);
m_Bitmap6.SetBitmap(hAlarm);
m_Bitmap7.SetBitmap(hAlarm);
m_Bitmap8.SetBitmap(hAlarm);
m_Bitmap9.SetBitmap(hAlarm);
m_Bitmap10.SetBitmap(hAlarm);
m_Bitmap11.SetBitmap(hAlarm);
m_Bitmap12.SetBitmap(hAlarm);
m_Bitmap13.SetBitmap(hAlarm);
m_Bitmap14.SetBitmap(hAlarm);
m_Bitmap15.SetBitmap(hAlarm);
m_Bitmap16.SetBitmap(hAlarm);
for(int d=0;d<16;d++)
{
m_Rept[d]=TRUE;
m_Repeat[d]=TRUE;
accumulate[d]=0;
accumulator[d]=0;
backup[d]=0;
total[d]=0;
}
}
else
{
test=test-1;
}
}
m_IsRece=0;
}
}
CFormView::OnTimer(nIDEvent);
}
LRESULT CCommucationView::OnNewMessage(UINT wParam)
{
m_IsRece=wParam;
info=m_serial.GetValue();
return 0L;
}
void CCommucationView::OnButton2()
{
// TODO: Add your control notification handler code here
if(info.GetLength()==690)
{
SignalProcess(1);
}
}
void CCommucationView::OnButton3()
{
// TODO: Add your control notification handler code here
if(info.GetLength()==690)
{
SignalProcess(2);
}
}
void CCommucationView::OnButton4()
{
// TODO: Add your control notification handler code here
if(info.GetLength()==690)
{
SignalProcess(3);
}
}
void CCommucationView::OnPriceSet()
{
// TODO: Add your command handler code here
CStdioFile file;
CPriceDialog m_Dlg;
CString str;
CString filename;
filename="Phone.txt";
if(file.Open(filename,CFile::modeReadWrite|CFile::typeText)==0)
{
AfxMessageBox("failure");
}
str.Format("余额:%6.2f元",m_Money[0]);
m_Dlg.m_sta1=str;
str.Format("余额:%6.2f元",m_Money[1]);
m_Dlg.m_sta2=str;
str.Format("余额:%6.2f元",m_Money[2]);
m_Dlg.m_sta3=str;
str.Format("余额:%6.2f元",m_Money[3]);
m_Dlg.m_sta4=str;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -