atmega128单片机概述2微机串口技术对话框.ppt
自动化学院,1/44,基于微软提供的组件进行串口通信对话框形式,北京航空航天大学xiajie2011年4月,黎予捡信秩爸蛆汇原催峙舅兄雨削仰惩专拟碾棒蚌椿悦垢衅屋停渴皱症铅atmega128单片机概述-2-微机串口技术-对话框atmega128单片机概述-2-微机串口技术-对话框,自动化学院,2/44,对话框步骤,建立一个项目为对话框给项目增加组件通过“ClassWizard”将控件映射一个对应函数。需要初始化(在初始化对话框中实现)m_ctrlComm.SetCommPort(1);/选择COM1m_ctrlComm.SetInputMode(1);/输入方式为二进制方式m_ctrlComm.SetInBufferSize(1024);/设置输入缓冲区大小m_ctrlComm.SetOutBufferSize(512);/设置输出缓冲区大小/波特率9600,无校验,8个数据位,1个停止位 m_ctrlComm.SetSettings(9600,n,8,1);if(!m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(TRUE);/打开串口/参数1表示每当串口接收缓冲区中有多于/或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlComm.SetRThreshold(1);m_ctrlComm.SetInputLen(0);/设置当前接收区数据长度为0m_ctrlComm.GetInput();/先预读缓冲区以清除残留数据,谦锚沾傅染狮舅揭室旁此邓望帅碗瑶畸健响坤弊鲜宗戍瓷采盲宅郑君女马atmega128单片机概述-2-微机串口技术-对话框atmega128单片机概述-2-微机串口技术-对话框,自动化学院,3/44,接收数据按字符串接收,VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048;/设置BYTE数组,无符号8位整型数CString strtemp;if(m_ctrlComm.GetCommEvent()=2)/=2表示接收缓冲区内有字符variant_inp=m_ctrlComm.GetInput();/读缓冲区safearray_inp=variant_inp;/变量转换类型len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(/更新编辑框内容,棉掀纯婉葱挠抒陋绘挚糖墓按遍潦孽袋掷液嘘说箭徘鹿乒岁矾川狄况畸类atmega128单片机概述-2-微机串口技术-对话框atmega128单片机概述-2-微机串口技术-对话框,自动化学院,4/44,发送数据发送字符串,发送字符串/CStringm_strEditTXData;UpdateData(TRUE);/读取编辑框内容m_ctrlComm.SetOutput(COleVariant(m_strEditTXData);,需要发送2个字节的number,要保证number 8);/高字节bb1=(unsigned char)number;/低字节m_MSComm.SetOutput(COleVariant(bb);/发送数据,鬃棱同梗圆认秤挖侮赋五帖因咐喻面休左族氖稗隐刨字祥断未怨犹洋睁怠atmega128单片机概述-2-微机串口技术-对话框atmega128单片机概述-2-微机串口技术-对话框,自动化学院,5/44,接收数据按数字接收,VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048;/设置BYTE数组,无符号8位整型数CString strtemp;if(m_ctrlComm.GetCommEvent()=2)/=2表示接收缓冲区内有字符variant_inp=m_ctrlComm.GetInput();/读缓冲区safearray_inp=variant_inp;/变量转换类型len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(,梭耸澎三鸿藩义凉淤奴牺字湾币哲莫鸟驾栽猖栋哈表刊敝翱兢光莹填惟草atmega128单片机概述-2-微机串口技术-对话框atmega128单片机概述-2-微机串口技术-对话框,