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

📄 newcomdlg.cpp

📁 串口通信,R232.使用VC++ 编写.非常难得。欢迎大家传播下载
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		return "o";
	else if(str=="EVEN偶")
		return "e";
	else if(str=="标记校验")
		return "m";
	else if(str=="空格校验")
		return "s";
	else
		return (-1);

}


void CNewComDlg::OnInclear() 
{
	// TODO: Add your control notification handler code here
	this->SetDlgItemText (IDC_RXD,"");
	m_RXD="";
}

BEGIN_EVENTSINK_MAP(CNewComDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CNewComDlg)
	ON_EVENT(CNewComDlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnComm, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CNewComDlg::OnOnComm() 
{
	// TODO: Add your control notification handler code here
	VARIANT VAR_in;
    COleSafeArray SafeArray_in;
	LONG k,len;
	BYTE rxdata[2048],bt;
    CString str,save[2];
	BOOL m_IsOK=FALSE;
	int bit=0,result=0,num=0;
	char hex[4];
	switch(m_Comm.GetCommEvent() )
	{
	case 2:
        VAR_in=m_Comm.GetInput ();
		SafeArray_in=VAR_in;
		len=SafeArray_in.GetOneDimSize ();
        for(k=0;k<len;k++)
			SafeArray_in.GetElement (&k,rxdata+k);
		if(!pdlg.m_hWnd)
		{
			for(k=0;k<len;k++)
			{
				k=0;
				bt=*(char*)(rxdata+k);
				if(m_CheckChar)
					str.Format ("%c",bt);
				else
					str.Format ("%02X ",bt);
				m_RXD+=str;
			}
		}
		else
		{
		    k=0;
			bt=*(char*)(rxdata+k);
			str.Format ("%02X",bt);
			//////////////////////////////
			if(str=="AA")
			{
				k++;
				bt=*(char*)(rxdata+k);
				str.Format ("%02X",bt);
				if(str=="55")
					m_IsOK=TRUE;
				else
					m_IsOK=FALSE;
			}
			else
			{
				m_IsOK=FALSE;
			}
			if(m_IsOK)
			{
				for(k=2;k<len-3;k++)
				{
					bt=*(char*)(rxdata+k);
					str.Format ("02X",bt);
					if(k%2==0)
						save[0]=str;
					else
					{
						save[1]=str;
						save[1]+=save[0];
						for(int j=0;j<4;j++)
						{
							hex[j]=save[1].GetAt (j);
							bit=StrToDec(hex[j]);
							switch (j)
							{
							case 0:
								bit=bit*16*16*16;
								break;
							case 1:
								bit=bit*16*16;
								break;
							case 2:
								bit=bit*16;
								break;
							default:
								bit=bit;
								break;
							}
							result+=bit;
						}
						str.Format ("%d ", result);
						m_ViewNum[num]=str;
						num++;
						m_res+=str;
						if(k=15)
							m_res+="\r\n";
						CStdioFile file(m_FileName,CFile::modeCreate|CFile::modeWrite|CFile::typeText);
						file.WriteString (m_res);
						result=0;
					}
				}
			}
			else
			{
				MessageBox("m_IsOK is FALSE");
				//Reserve;
                for(k=0;k<len;k++)
				{
					bt=*(char*)(rxdata+k);
					str.Format ("%02X",bt);
					if(str=="AA")
						break;
				}
				m_Comm.SetInputLen(len-k);
				VAR_in=m_Comm.GetInput ();
				
			}
			pdlg.m_static1=m_ViewNum[0];
			pdlg.m_static2=m_ViewNum[1];
			pdlg.m_static3=m_ViewNum[2];
			pdlg.m_static4=m_ViewNum[3];
			pdlg.m_static5=m_ViewNum[4];
			pdlg.m_static6=m_ViewNum[5];
			pdlg.m_static7=m_ViewNum[6];
			pdlg.m_static8=m_ViewNum[7];
		}
		break;
	case 1:
		m_status="缓冲区字符数目小于门限值...";
		Beep(1000,100);
		break;
	case 1008:
		m_status="缓冲区溢出!";
		Beep(1000,100);
		break;
	case 1010:
		m_status="缓冲区满!";
		Beep(1000,100);
		break;
	}
	CEdit* pEdit=(CEdit*)GetDlgItem(IDC_RXD);
	pEdit->LineScroll (pEdit->GetLineCount ());
	UpdateData(FALSE);

}

void CNewComDlg::OnOutputSetting() 
{
	// TODO: Add your command handler code here
	OutSetDlg dlg;
	if(IDOK==dlg.DoModal ())
	{
		if(dlg.m_CheckAuto && dlg.m_CheckFile )
		{
			MessageBox("只能选择一个模式,请重新选择!");
			return;
		}
		if(dlg.m_CheckAuto )
		{
			m_Time=dlg.m_time ;
			m_OutputChar=dlg.m_OutputChar ;
			this->SetDlgItemText (IDC_SENDMUL,"自动发送");
            m_status="自动发送模式...";
		}
		else if (dlg.m_CheckFile )
		{
			this->SetDlgItemText (IDC_SENDMUL,"发送文件");
			m_status="发送文件模式...";
		}
		else
		{
			this->SetDlgItemText (IDC_SENDMUL,"手动发送");
			m_status="手动发送模式...";
		}
	}
	m_OutFileName=dlg.m_OutFileName ;
	m_Comm.SetRTSEnable (1);
	UpdateData(FALSE);
}


void CNewComDlg::OnAbout() 
{
	// TODO: Add your command handler code here
	CAboutDlg dlg;
	dlg.DoModal ();
}

HBRUSH CNewComDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if(pWnd->GetDlgCtrlID ()==IDC_RXD)
	{
		pDC->SetBkColor (RGB(255,255,255));
		return m_Brush;
	}
	if(pWnd->GetDlgCtrlID ()==IDC_STATUS)
	{
		CFont ft;
		ft.CreatePointFont (100,"仿宋体");
		pDC->SelectObject (&ft);
		return hbr;
	}
		
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CNewComDlg::OnClearoutput() 
{
	// TODO: Add your control notification handler code here
	this->SetDlgItemText (IDC_TXD,"");
	m_TXD="";
}

void CNewComDlg::OnSendmul() 
{
	// TODO: Add your control notification handler code here
	CString str;
	GetDlgItemText (IDC_SENDMUL,str);
	if(str=="自动发送")
	{
		SetTimer(1,m_Time ,NULL);
		this->SetDlgItemText (IDC_SENDMUL,"停止");
	}
	else if(str=="停止")
	{
		KillTimer(1);
		this->SetDlgItemText (IDC_SENDMUL,"自动发送");
	}
	else if(str=="发送文件")
	{
		CString m_SendFile;
		CFile file(m_OutFileName,CFile::modeRead );
		file.ReadHuge (m_SendFile.GetBuffer (file.GetLength ()),file.GetLength ());
		file.Close ();
		m_status="开始发送...";
		UpdateData(FALSE);
		m_Comm.SetOutput (COleVariant(m_SendFile));
		m_status="发送完毕...";
		UpdateData(FALSE);
		m_SendFile.ReleaseBuffer ();
	}
	else
	{
		m_Comm.SetOutput (COleVariant(m_TXD));
	}
	
}


BOOL CAboutDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_ZIZHUAN="1978年,的确是春天,我从心里喜欢这句话。因为,那年我出生了。只听妈妈告诉我说:”你出生的那天晚上月亮好圆“,阴历十五嘛,不圆才怪呢!";
	m_ZIZHUAN+="10岁的时候,我总爱照镜子,因为小时侯就帅,没有办法~。我家有个一米八多的大立柜,上面有一面大镜子,我天天站在镜子前左看右看,就是看不够。";
    m_ZIZHUAN+="一天我突然指着镜子上一个”小太阳“,对我爸爸说:”我以后要长到和镜子上小太阳一样高“。我爸爸不高兴的说:“那才多高”。果然,";
    m_ZIZHUAN+="我真长到小太阳一样高,可惜的是,那个小太阳海拔才一米七多些。15岁那年,路过家乡的一所大学,我又对我爸爸说:”我以后要考这个大学“。我爸爸说:";
	m_ZIZHUAN+="这个大学不好,没有名。遗憾的是,又被我言中了。还学了汽车专业。20岁的时候,到长春亲戚家玩,溜达到吉林大学,我心里突然想,我以后要考吉林大学硕士。";
	m_ZIZHUAN+="不幸的是,我毕业的时候,连考研的意图都没有,就迷迷糊糊的去了一个汽车研究所混了三年。一次到深圳旅游(自费),我坐着波音飞机,心里这个怕啊,怕掉下来啊。";
	m_ZIZHUAN+="我和旁边一个大款搭话(看起来象大款),我说:”飞机掉下去怎么办?“。他居然回答:”飞机上这么多人呢,怕什么。“我靠~,人多就不怕?那可是飞机,在10000米高空哦。";
	m_ZIZHUAN+="在深圳折腾没有钱了,只能坐火车回去了,在车上遇到一个山东大学的女孩。她说她月薪4500,居然辞职考研了。这下把我刺激坏了,老子也考。一下不小心,就考到吉林大学来了。";
	m_ZIZHUAN+="也许是天意,缘分啊~";
	m_ZIZHUAN+="故事还有很多,没有什么风花雪月,就是那么朴实真实。不经历了风风雨雨,怎么才能看到彩虹。再讲一个故事,从小学的时候,就开始玩电子游戏,那个时代还是“小型”,比如:";
	m_ZIZHUAN+="运河大战,警察抓小偷等。4毛钱打一把。后来,出现了,魂斗罗,超级玛丽,汽车要塞,绿色兵团,影子传说,等等吧。电视也从黑白变成了彩色。价格也降到了2毛一把。";
	m_ZIZHUAN+="到了我上初中的时候,就出现的大型电子游戏,如:双截龙,战斧等。大年三十的前一个晚上,我又偷偷的溜进了游戏厅,正玩的高兴,被我爸爸当场把我抓住,在回家路上,我怕啊,";
	m_ZIZHUAN+="怕我爸爸回家揍我,我真想找个机会跑掉,就是没有这个胆量。很幸运,因为要过年,就算了。不过,以后的一次打游戏,把书包丢了,终于没有逃脱这顿揍啊。";
	m_ZIZHUAN+="后来,我考上了重点高中,学习忙,也就没有机会再去打大型游戏,其实,那个时候,我把兴趣转到了286电脑上了。改打电脑游戏了。玩的第一款游戏是:英雄无敌2。";
	m_ZIZHUAN+="人年龄要是大了,就是求稳定啊,不愿意动了,不喜欢折腾了。现在我就想着,等我毕业了,找个轻松的地方一迷。多潇洒~~~                                     ";
	m_ZIZHUAN+="Email:  xiaolanyu@163.com     作者:Pink   2006年5月";
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int CNewComDlg::StrToDec(char ch)
{
	if(ch>='0'&&ch<='9')
		return ch-0x30;
	else if(ch>='A'&&ch<='F')
		return ch-'A'+10;
	else if(ch>='a'&&ch<='f')
		return ch-'a'+10;
	else
		return (-1);

}

void CNewComDlg::OnNum() 
{
	// TODO: Add your command handler code here
	if(!pdlg.m_hWnd)
	{
		pdlg.Create (IDD_VIEWNUM);
		pdlg.ShowWindow (SW_SHOW);
	}
}

void CNewComDlg::OnUpdateNum(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck ();	
}


void CNewComDlg::OnCurve() 
{
	// TODO: Add your command handler code here
	CDlgCurve *pCdlg=new CDlgCurve();
	pCdlg->Create (IDD_CURVE);
	pCdlg->ShowWindow (SW_SHOW);
}

⌨️ 快捷键说明

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