预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

串口通信通信简介通信就是系统间利用线路相互交换数据;构成整个通信的线路称为网络。通信的目的是进行数据交换,数据必须经过交换才能由一端传送到另一端。发送数据的一端称为发送端,接受信息的一端是接收端。通信可分为并行通信和串行通信;并行通信传输速度快,但传输距离短;并行通信传输速度慢,但传输距离远。一个完整的通信系统由发送端、接收端、转换数据的接口及传送数据的实际信道或媒体组成。通信又可分为同步通信和异步通信;同步通信的两端使用同步信号作为通信的依据;异步通信使用起始位(StartBit)及停止位(StopBit)作为通信的判断标准。通信中数据的传输速度称为波特率,它表示每一秒所能产生的最大信息状态改变率。通信的工作模式:单工、半双工和全双工。串行数据的流动方式:设备A-输出缓冲区---(RS232)---接收缓冲区-设备B;所谓缓冲区就是计算机上的一块内存,它用来暂时存放数据,等到程序取用后,再清除已经被取用的部分。二、RS-2321、RS-232信号传输方式RS-232的信号标准电位是参考地线。发送端参考接地端1来发送数据;接收端参考接地端2来还原出发送端信号的标准电位;在两接地端同电位的前提下,发送与接收端的标准电位是相同的。2、RS232受到干扰时的情形干扰信号在地线和信号线上均会产生影响,原始信号加上干扰信号依然发送过来;而地线部分的信号则被地电压抵消了,因此,信号便发生了扭曲3、引脚名称及意义引脚1(CD),载波检波;引脚2(RXD),接收字符;引脚3(TXD),发送字符;引脚4(DTR)数据端备妥;引脚5(GND),地线;引脚6(DSR),数据备妥;引脚7(RTS),请求发送;引脚8(CTS),清除发送;引脚9(RI),响铃检测;说明:引脚5(GND)——地线,作为计算机与调制解调器之间的标准电位参考。两设备的地线标准电位必须一样,否则会产生地回路(GroundLoop),使信号因标准电位不同而产生偏移。4、引脚连线程序设计END_EVENTSINK_MAP()voidCSCommTestDlg::OnComm(){VARIANTvariant_inp;COleSafeArraysafearray_inp;LONGlen,k;BYTErxdata[2048];CStringstrtemp;if(m_ctrlComm.GetCommEvent()==2){variant_inp=m_ctrlComm.GetInput();safearray_inp=variant_inp;len=safearray_inp.GetOneDinSize();for(k=0;k<len;k++)safearray_inp.GetCommEvent(&k,rxdata+k);for(k=0;k<len;k++){BYTEbt=*(char*)(rxdata+k);strtemp.Format("%c",bt);m_strTXDATA+=stemp;}}UpdateData(FALSE);if(!strAboutMenu.IsEmpty()){pSysMewnu->AppendMenu(MF_SEPARAROR);pSysMewnu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}SetIcon(m_hIcon,TRUE);SetIcon(m_hIcon,FALSE);if(m_ctrlComm.GetPortOpen());m_ctrlComm.SetPortOpen(FALSE);m_ctrlComm.SetCommPort(3);if(!m_ctrlComm.GetPortOpen());m_ctrlComm.SetPortOpen(TRUE);elseAfxMessageBox("cannotopenserialport");m_ctrlComm.SetSettings("9600,n,8,1");m_ctrlComm.SetInputMode(1);m_ctrlComm.SetRThreshould(1);m_ctrlComm.SetInputLen(0);m_ctrlComm.GetInput();returnTRUE;}voidCSCommTestDlg::OnSysCommamd(UINTnID,LPARAMlParam){if((nID&0xFFF0)==IDM_ABOUTBOX){voidCSCommTestDlg::OnButtonManualsend(){UpdateData(TRUE);m_ctrlComm.SetOutput(COleVariant(m_strTXData));}