




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实践教学兰州理工大学计算机与通信学院2012年秋季学期通信系统综合训练题目串行异步通信程序设计_专业班级09级通信一班_姓名张明哲_学号_09250104_指导教师王惠琴_成绩_摘要串口是常用的计算机与外部串行设备之间的数据传输通道,串行接口SERIALINTERFACE是指数据一位一位地顺序传送,并可以利用电话线传输,从而大大降低了成本,但是传送速度慢。在VC60中利用第三方软件实现串口通信时实时性较差,系统资源利用率不足,为了提高串口通信的利用率,在WINDOWS环境下实现通信的方法主要有利用MSCOMM控件和直接编程。串行异步通信即RS232通信,是主机与外部硬件设备的常用通讯方式。可以双向传输。如卫星信号接收版收到的数据传导到计算机处理,主要使用串行异步通信处理。异步通信中,在异步通行中有两个比较重要的指标字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。关键词串行接口;MSCOMM控件;VC;目录前言4第一章串行通信原理511串口通信的基本概念512串行通信协议513串行通信的工作模式614基本数据7第二章串口通信分析821功能描述822VC6软件简介823串口通信协议设计9第三章系统设计与调试1231VC的MICROSOFTCOMMUNICATIONSCONTROL控件1232使用MSCOMM控件编程过程1233添加消息处理函数16第四章串口通信系统调试1841计算机串口设置1842虚拟串口1843设置串口大师1944用串口大师测试MSCOMMTEST程序19总结22心得体会22前言在通信领域内,有两种数据通信方式并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。随着通信技术和计算机网络技术的发展、INTERNET网的普及,计算机远程通信已渗透到各个领域,而远程通信绝大多数采用串行通信的方式,所以研究串行通信是必不可少的过程,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息。第一章串行通信原理11串口通信的基本概念串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。以每次一个二进制的0、1为最小单位逐位进行传输,串行数据传送的特点是第一串行传送在一根传输线上既传送数据信息又传送联络控制信号第二有固定的数据格式,分异步与同步数据格式第三串行通信中对信号的逻辑定义与TTL不兼容,故需要进行逻辑关系与逻辑电平转换第四串行传送信息的速率需要控制,要求双方设定通信传输的波特率12串行通信协议串行通信协议分同步协议和异步协议。(1)异步协议起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身有57位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位,或意味半,或二位停止位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。异步通信是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,只有约80。因此,起止协议一般用在数据速率较慢的场合(小于192KBIT/S)。在高速传送时,一般要采用同步协议。(2)同步协议特点与格式这种协议的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。由于被传送的数据块是由字符组成,故被称作面向字符的协议。数据透明的实现面向字符的同步协议,不象异步起止协议那样,需要在每个字符前后附加起始和停止位,因此,传输效率提高了。同时,由于采用了一些传输控制字,故增强了通信控制能力和校验功能。协议应具有将特定字符作为普通数据处理的能力,这种能力叫做“数据透明”。为此,协议中设置了转移字符DLEDATALINKESCAPE。当把一个特定字符看成数据时,在它前面要加一个DLE,这样接收器收到一个DLE就可预知下一个字符是数据字符,而不会把它当作控制字符来处理了。DLE本身也是特定字符,当它出现在数据块中时,也要在它前面加上另一个DLE。这种方法叫字符填充。字符填充实现起来相当麻烦,且依赖于字符的编码。正是由于以上的缺点,故又产生了新的面向比特的同步协议。(3)面向比特的同步协议特点与格式特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称“面向比特”的协议。帧信息的分段SDLC/HDLC的一帧信息包括以下几个场FILED),所有场都是从有效位开始传送。13串行通信的工作模式通过单线传输信息是串行数据通信的基础。数据通常是在两个站(点对点)之间进行传送,按照数据流的方向可分成3种传送模式单工、半双工和全双工。(1)单工通信单工形式的数据传送是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端。信息只能沿一个方向传送,使用一根传输线,如图2所示。单工形式一般用在只向一个方向传送数据的场合。例如,计算机与打印机之间的通信是单工形式,因为只有计算机向打印机传送数据,而没有相反的数据传送。还有在某些通信信道中,如单工无线发送等。(2)半双工通信即HALFDUPLEXCOMMUNICATION。这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接收端。但同一时刻里,信息只能有一个传输方向。因此半双工形式既可以使用一条数据线,也可以使用两条数据线。(3)全双工通信全双工数据通信分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,在全双工方式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。14基本数据波特率实际上就是传输速度,它表示每秒钟传送的BIT的个数。当我们提到时钟周期时,我们就是指波特率。波特率可以远远大于这些值,但是波特率和距离成反比。数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。停止位用于表示单个包的最后一位。典型的值为1,15和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。奇偶校验位在串口通信中一种简单的检错方式。有四种检错方式偶、奇、高和低。当然没有校验位也是可以的。第二章串口通信分析21功能描述本设计通过串口在两台计算机之间建立连接,按照自定义串口通信协议进行信息交换,通过串口实现聊天、文件传输的功能。22VC6软件简介VISUALC60,简称VC或者VC60,是微软推出的一款C编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。VISUALC是一个功能强大的可视化软件开发工具。自1993年MICROSOFT公司推出VISUALC10后,随着其新版本的不断问世,VISUALC已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VISUALCNETVISUALC70,但它的应用有很大的局限性,只适用于WINDOWS2000、WINDOWSXP和WINDOWSNT40。所以实际中,更多的是以VISUALC60为平台。VISUALC60由MICROSOFT开发,它不仅是一个C编译器,而且是一个基于WINDOWS操作系统的可视化集成开发环境(INTEGRATEDDEVELOPMENTENVIRONMENT,IDE)。VISUALC60由许多组件组成,包括编辑器、调试器以及程序向导APPWIZARD、类向导CLASSWIZARD等开发工具。这些组件通过一个名为DEVELOPERSTUDIO的组件集成为和谐的开发环境。MICROSOFT的主力软件产品。VISUALC是一个功能强大的可视化软件开发工具。自1993年MICROSOFT公司推出VISUALC10后,随着其新版本的不断问世,VISUALC已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VISUALCNETVISUALC70,但它的应用的很大的局限性,只适用于WINDOWS2000,WINDOWSXP和WINDOWSNT40。所以实际中,更多的是以VISUALC60为平台。VISUALC60以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件STDAFXH、最小重建功能及累加连结LINK著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。由于C是由C语言发展起来的,也支持C语言的编译。60版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。仅支持WINDOWS操作系统。目前发现与WINDOWS7兼容性不好,安装成功后可能会出现无法打开CPP文件的现象。23串口通信协议设计串口通信协议设计思想基于帧传输方式,即在向串口发送数据时是一帧一帧地发送。对于上层应用来说,应用程序所发送的和所接收的都是流式数据,即如果应用程序需要进行上层的协议解释的说,它将面对这些流数据的重新拼装。为保证可靠的传输,在传输开始前,通过握手建立连接,在每一帧的传输中,采用发送/应答/重连/失败方式(1)数据帧所谓数据帧,就是数据链路层的协议数据单元,它包括三部分帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要得控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如IP数据包。在发送端,数据链路层把网络层传下来得数据封装成帧,然后发送到链路上去;在接收端,数据链路层把收到的帧中的数据取出并交给网络层。不同的数据链路层协议对应着不同的帧,所以,帧有多种,比如PPP帧、MAC帧等,其具体格式也不尽相同。(2)控制帧控制帧又叫S帧,用于差错控制和流量控制。在没有发生传输错误的情况下,一次传输只会出现两次控制帧,第一次在传输开始时(计为控制首帧),第二次在传输结束时。(3)短语帧短语帧相对简单,帧中负载均为文本数据。发送与接收该帧不需建立连接也没有错误控制,只是在帧头和帧尾插入了同步信号。0X03文本数据0X032控制信号为提高通信效率,串口通信协议使用控制信号进行通信同步、纠错等各种控制任务。下面是串口通信协议定义的6种控制信号。CONSTBYTESYN10X1/请求CONSTBYTEACK10X2/响应CONSTBYTERESEND10X4;/重发CONSTBYTEBUSY10X7;/忙CONSTBYTEBYE36,0,6;/断开连接CONSTBYTESTR10X3;/短信息同步信号3数据分帧及数据重组应用程序送过来的数据作为一个流按串口通信协议进行分帧,切割后为每个帧加上帧头和校验和,放入串口通信协议内部缓冲区内准备发送;在接收端,分帧的数据去掉帧头重新归到接收缓冲区流,由应用程序接收。4传输流程在发送数据前,串口通信协议发送方将应用程序希望发送的数据进行分帧,然后按下面的步骤进行通信。(1)握手A由发送端发SYN信号,等待反馈。B接收端收到SYN信号后发回ACK信号。C发送端收到ACK信号后,由发送端发出控制首帧。D接收端收到控制首帧后,CHECKSUM错误则发RESEND信号,然后重复步骤CD。如果正确,发ACK信号。E发送端收到ACK信号后,转到(2)数据传输的步骤A。(2)数据传输A由发送端发送第I帧的帧头,等待反馈;若发送方发现该帧是ABORT帧,则转到(3)断开连接的步骤A。B接收端收到帧头后,帧长度校验和错误则发RESEND信号,然后重复步骤AB。如果正确,发ACK信号。C若发送端收到ACK信号,则发送帧中数据和校验和。D接收端收到数据后,负载数据校验和错误则发RESEND信号,然后重复步骤CD。如果正确,发ACK信号。E若发送端收到ACK信号,则该帧数据发送成功。发送端发送SYN信号,开始下一帧的握手过程。F若接收端收到SYN信号,则发送ACK信号进行确认。G若发送端接收到ACK信号,则重复AE步骤进行下一帧的传输。(3)断开连接A发送方发送ABORT控制帧,准备结束此次通信。B若接收端收到ABORT信号,则发送ACK信号,准备结束此次通信。C若发送端收到ACK信号,则发送BYE控制信号。D若接收方收到BYE信号,则拆除此次连接,同时发送ACK信号。拆除连接结束第三章系统设计与调试31VC的MICROSOFTCOMMUNICATIONSCONTROL控件MICROSOFT公司在WINDOWS中提供了一个串口通讯控件,用它,我们可以很简单的利用串口进行通讯。在使用它之前,应将控件加在应用程序的对话框上。然后再用CLASSWIZARD生成相应的对象。现在我们可以使用它了。该控件有很多自己的属性,可以通过它的属性窗口来设置,也可以用程序设置。用程序设置,更灵活。以下介绍设置中遇到的几个相关函数。SETCOMMPORT指定使用的串口。GETCOMMPORT得到当前使用的串口。SETSETTINGS指定串口的参数。一般设为默认参数“9600,N,8,1“。这样方便与其他串口进行通讯。GETSETTINGS取得串口参数。SETPORTOPEN打开或关闭串口,当一个程序打开串口时,另外的程序将无法使用该串口。GETPORTOPEN取得串口状态。GETINBUFFERCOUNT输入缓冲区中接受到的字符数。SETINPUTLEN一次读取输入缓冲区的字符数。设置为0时,程序将读取缓冲区的全部字符。GETINPUT读取输入缓冲区。GETOUTBUFFERCOUNT输出缓冲区中待发送的字符数。SETOUTPUT写入输出缓冲区。32使用MSCOMM控件编程过程321建立工程打开VC60建立基于对话框的MFC应用程序MYTEST,如下图图321图322图323图324322插入MSCOMM控件工程增加到工程COMPONENTSANDCONTROLS双击REGISTEREDACTIVEXCONTROLS选择MICROSOFTCOMMUNICATIONSCONTROL,VERSION60INSERT,按默认值添加,多了个电话图标,这是增加后串口通信控件。如图326图328图416图326图327图328323布局删除确认、取消和提示框,添加“电话”、静态文本、按钮、编辑框,拖动添加的控件,根据喜好布局。图329324初始化串口设置MSCOMM控件的属性查看建立类向导MFCCLASSWIZARDMEMBERVIARIABLE,选择CLASSNAME为CMYTESTDLG的类,CONTROLID为MSCOMM1,双击它,为它添加控制变量M_CTRLCOMM类似的,选择其它项修改,改后如图3210图3210对CMYTESTDLGONINITDIALOG函数中写入对串口的初始化语句,串口初始化语句由IDC_MSCOMM1的CMSCOMM控制变量M_CTRLCOMM来设置串口控件属性。325添加消息处理函数查看建立类向导MFCCLASSWIZARDMESSAGEMAPS,在CLASSNAME中选择类CMYTESTDLG,再在OBJECTIDS中选择IDC_MSCOMM1,然后在MESSAGE中双击消息ONCOM,在弹出的对话框中将函数名改为ONCOMM好记,单击“OK”,就加入了串口事件的消息处理函数,如图3211图3211416发送数据先为发送按添加一个单击消息,即BN_CLICKED处理函数,打开CLASSWIZARDMESSAGEMAPS,选择类CMYTESTDLG,选中IDC_BUTTON_MANUALSEND,双击BN_CLICKED添加ONBUTTONMANUALSEND()函数,如图3212图3212第四章串口通信系统调试41计算机串口设置进入WINDOWS中“我的电脑”系统属性,在“设备管理器”列表中有端口COM和LPT设备信息,选中通信端口COM1,查看其属性,在COM1端口属性的端口设置选项中,将其波特率(即每秒位数)设为9600,停止位设为1如图411412所示,并将COM1改为COM30,释放COM1已被所用。图41142虚拟串口有时,也会有这种情况,我们使用的计算机上一个串口也没有,或者串口被其他设备占用。由于串口具有独占性,如果被其他设备占用,那么就不能由我们编写的程序来控制。但这时我们身边没有或不方便使用其他计算机,那么使用第三方软件提供的虚拟串口可以很好地解决这个问题。虚拟串口本身是不存在的,而是由软件模拟出来的,不能像真实的物理串口一样实现与其他计算机或设备上的串口直接通信,如下图所示图4243设置串口大师打开“串口大师”软件,设置串口号为COM2、波特率9600、校验位NO、数据位8、停止位1等参数(注意设置的参数必须与仪器设置的一致),打开串口,如下图所示图4344用串口大师测试MSCOMMTEST程序运行MSCOMMTEST程序,在发送框内输入“你好”再点击“发送”,观察串口大师软件的接收框,发现可以准确无乱码地接收到;在串口大师输入框内输入“你好我叫张三”点击“发送”,观察到MSCOMMTEST程序接收框也可以准确地接收到信息,如下图所示图441图442图443图444总结通过系统测试,本系统成功地实现了自动发送数据、数据接收以及数据的自动清除。,但是本程序也存在一些不足,如十六进制发送时,只要其中有一个非十六进制数,则不能把数据发送出去。还有在实验过程中需要注意在添加控件的时候要及时编辑它的名称和控制变量,并在程序的调用中正确使用,由于系统受到干扰,往往传送过程中出现显示数据的延迟。心得体会本次课程设计过程中,我原来接触的语言是C和JAVA,从来没有接触过C,感觉无从下手,而且熟悉VISUALC环境也需要一段时间。万事开头难,刚刚开始的两天思路很乱。后来明白系统是用MSCOMM控件来实现的,并且通过老师的细心讲解,在VC60平台下,顺利编写了系统的运行程序、实现了系统的数据接收、自动发送以及数据的自动清理。通过调用WINDOWS的API函数,清楚地掌握串口通信的机制,相对比较自由灵活,串口通信包括同步串口通信与异步串口通信两种工作方式。通过自己掌握的控件法及上网查找资料了解了不少关于串行通信传输的知识,让我掌握了原本书本上学不到的内容同时也让我明白想真正的掌握串口通信的内容,还要不断地学习新知识,不断地实践、摸索。参考文献1(美)史蒂芬(STEVENS,A),林丽闽译标准C宝典M北京电子工业出版社,200122王莉,阳春华基于VC的串口通信设计及其应用J控制工程,2004,113王华,岳丽全,岳志高MSCOMM控件在VC60串口通信中的应用长春工程学院学报自然科学版,2009,1014龚建伟,熊光明VISUALC/TURBOC串口通信编程实践M电子工业出版社2004257268附页程序/MSCOMMDLGCPPIMPLEMENTATIONFILE/INCLUDE“STDAFXH“INCLUDE“MSCOMMH“INCLUDE“MSCOMMDLGH“IFDEF_DEBUGDEFINENEWDEBUG_NEWUNDEFTHIS_FILESTATICCHARTHIS_FILE_FILE_ENDIF/CABOUTDLGDIALOGUSEDFORAPPABOUTCLASSCABOUTDLGPUBLICCDIALOGPUBLICCABOUTDLG/DIALOGDATA/AFX_DATACABOUTDLGENUMIDDIDD_ABOUTBOX/AFX_DATA/CLASSWIZARDGENERATEDVIRTUALFUNCTIONOVERRIDES/AFX_VIRTUALCABOUTDLGPROTECTEDVIRTUALVOIDDODATAEXCHANGECDATAEXCHANGEPDX/DDX/DDVSUPPORT/AFX_VIRTUAL/IMPLEMENTATIONPROTECTED/AFX_MSGCABOUTDLG/AFX_MSGDECLARE_MESSAGE_MAPCABOUTDLGCABOUTDLGCDIALOGCABOUTDLGIDD/AFX_DATA_INITCABOUTDLG/AFX_DATA_INITVOIDCABOUTDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDX/AFX_DATA_MAPCABOUTDLG/AFX_DATA_MAPBEGIN_MESSAGE_MAPCABOUTDLG,CDIALOG/AFX_MSG_MAPCABOUTDLG/NOMESSAGEHANDLERS/AFX_MSG_MAPEND_MESSAGE_MAP/CMSCOMMDLGDIALOGCMSCOMMDLGCMSCOMMDLGCWNDPPARENT/NULL/CDIALOGCMSCOMMDLGIDD,PPARENT/AFX_DATA_INITCMSCOMMDLGM_RECV1_T“M_SEND1_T“M_RECV2_T“M_SEND2_T“/AFX_DATA_INIT/NOTETHATLOADICONDOESNOTREQUIREASUBSEQUENTDESTROYICONINWIN32M_HICONAFXGETAPPLOADICONIDR_MAINFRAMEVOIDCMSCOMMDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDX/AFX_DATA_MAPCMSCOMMDLGDDX_CONTROLPDX,IDC_MSCOMM2,M_MSCOM2DDX_CONTROLPDX,IDC_MSCOMM1,M_MSCOM1DDX_TEXTPDX,IDC_COM1_RECEIVE,M_RECV1DDX_TEXTPDX,IDC_COM1_SEND,M_SEND1DDX_TEXTPDX,IDC_COM2_RECEIVE,M_RECV2DDX_TEXTPDX,IDC_COM2_SEND,M_SEND2/AFX_DATA_MAPBEGIN_MESSAGE_MAPCMSCOMMDLG,CDIALOG/AFX_MSG_MAPCMSCOMMDLGON_WM_SYSCOMMANDON_WM_PAINTON_WM_QUERYDRAGICONON_BN_CLICKEDIDC_BTN_COM1SEND,ONBTNCOM1SENDON_BN_CLICKEDIDC_BTN_COM1DELETE,ONBTNCOM1DELETEON_BN_CLICKEDIDC_BTN_COM2DELETE,ONBTNCOM2DELETEON_BN_CLICKEDIDC_BTN_COM2SEND,ONBTNCOM2SEND/AFX_MSG_MAPEND_MESSAGE_MAP/CMSCOMMDLGMESSAGEHANDLERSBOOLCMSCOMMDLGONINITDIALOGCDIALOGONINITDIALOG/ADD“ABOUT“MENUITEMTOSYSTEMMENU/IDM_ABOUTBOXMUSTBEINTHESYSTEMCOMMANDRANGEASSERTIDM_ABOUTBOXASSERTIDM_ABOUTBOXAPPENDMENUMF_SEPARATORPSYSMENUAPPENDMENUMF_STRING,IDM_ABOUTBOX,STRABOUTMENU/SETTHEICONFORTHISDIALOGTHEFRAMEWORKDOESTHISAUTOMATICALLY/WHENTHEAPPLICATIONSMAINWINDOWISNOTADIALOGSETICONM_HICON,TRUE/SETBIGICONSETICONM_HICON,FALSE/SETSMALLICON/TODOADDEXTRAINITIALIZATIONHERE/初始化COM1M_MSCOM1SETCOMMPORT1/串口1M_MSCOM1SETINBUFFERSIZE1024/设置输入缓冲区的大小,BYTESM_MSCOM1SETOUTBUFFERSIZE512/设置输入缓冲区的大小,BYTESIFM_MSCOM1GETPORTOPEN/打开串口M_MSCOM1SETPORTOPENTRUEM_MSCOM1SETINPUTMODE1/设置输入方式为二进制方式M_MSCOM1SETSETTINGS“9600,N,8,1“/设置波特率等参数M_MSCOM1SETRTHRESHOLD1/为1表示有一个字符即引发事件M_MSCOM1SETINPUTLEN0/初始化COM2M_MSCOM2SETCOMMPORT2/串口2M_MSCOM2SETINBUFFERSIZE1024/设置输入缓冲区的大小,BYTESM_MSCOM2SETOUTBUFFERSIZE512/设置输入缓冲区的大小,BYTESIFM_MSCOM2GETPORTOPEN/打开串口M_MSCOM2SETPORTOPENTRUEM_MSCOM2SETINPUTMODE1/设置输入方式为二进制方式M_MSCOM2SETSETTINGS“9600,N,8,1“/设置波特率等参数M_MSCOM2SETRTHRESHOLD1/为1表示有一个字符即引发事件M_MSCOM2SETINPUTLEN0RETURNTRUE/RETURNTRUEUNLESSYOUSETTHEFOCUSTOACONTROLVOIDCMSCOMMDLGONSYSCOMMANDUINTNID,LPARAMLPARAMIFNIDDLGABOUTDOMODALELSECDIALOGONSYSCOMMANDNID,LPARAM/IFYOUADDAMINIMIZEBUTTONTOYOURDIALOG,YOUWILLNEEDTHECODEBELOW/TODRAWTHEICONFORMFCAPPLICATIONSUSINGTHEDOCUMENT/VIEWMODEL,/THISISAUTOMATICALLYDONEFORYOUBYTHEFRAMEWORKVOIDCMSCOMMDLGONPAINTIFISICONICCPAINTDCDCTHIS/DEVICECONTEXTFORPAINTINGSENDMESSAGEWM_ICONERASEBKGND,WPARAMDCGETSAFEHDC,0/CENTERICONINCLIENTRECTANGLEINTCXICONGETSYSTEMMETRICSSM_CXICONINTCYICONGETSYSTEMMETRICSSM_CYICONCRECTRECTGETCLIENTRECTINTXRECTWIDTHCXICON1/2INTYRECTHEIGHTCYICON1/2/DRAWTHEICONDCDRAWICONX,Y,M_HICONELSECDIALOGONPAINT/THESYSTEMCALLSTHISTOOBTAINTHECURSORTODISPLAYWHILETHEUSERDRAGS/THEMINIMIZEDWINDOWHCURSORCMSCOMMDLGONQUERYDRAGICONRETURNHCURSORM_HICONBEGIN_EVENTSINK_MAPCMSCOMMDLG,CDIALOG/AFX_EVENTSINK_MAPCMSCOMMDLGON_EVENTCMSCOMMDLG,IDC_MSCOMM1,1/ONCOMM/,ONCOMMMSCOMM1,VTS_NONEON_EVENTCMSCOMMDLG,IDC_MSCOMM2,1/ONCOMM/,ONCOMMMSCOMM2,VTS_NONE/AFX_EVENTSINK_MAPEND_EVENTSINK_MAP/MSCOMM1控件发出ONCOMM事件的响应函数,在该函数中读取串口字符串VOIDCMSCOMMDLGONCOMMMSCOMM1/TODOADDYOURCONTROLNOTIFICATIONHANDLERCODEHEREUPDATEDATATRUE/定义一些临时变量VARIANTVARIANT_INPCOLESAFEARRAYSAFEARRAY_INPLONGI0INTLENBYTERXDATA1000SWITCHM_MSCOM1GETCOMMEVENTCASE2/表示接收缓冲区内有字符/读取缓冲区数据VARIANT_INPM_MSCOM1GETINPUT/将VARIANT型变量值赋给COLESAFEARRAY类型变量SAFEARRAY_INPVARIANT_INP/获得数据长度LENSAFEARRAY_INPGETONEDIMSIZE/将数据保存到字符数组中FORI0I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业办公信息安全的实践与挑战
- 主题乐园项目执行团队构成与职责划分
- 2025年天然气水合物(可燃冰)开采技术智能化发展与应用预研报告
- 2025年电商绿色物流信息化建设与物流效率提升研究报告
- 城市新区规划调整2025年经济风险与社会稳定分析报告
- 医疗数字化转型背景下的大数据应用
- 2025年社区团购市场用户留存策略与用户需求洞察报告
- 医学领域数字视觉传达的新方向
- 企业内部培训的数字化转型与领导策略
- 新建光伏发电项目资金来源与融资方案
- 可行性研究报告编制服务投标方案
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 专业文献阅读技巧
- 控制吸烟的政策与法规案例分析
- 国企经理成员岗位聘任协议-(参考模版)
- 中国公民普通护照申请表(正面)
- 人工智能与房地产营销
- 23J916-1:住宅排气道(一)
- 北京市初中学业水平考试体育与健康知识
- VDA6.3-2016过程审核对应的资料
- 驻足思考瞬间整理思路并有力表达完整版
评论
0/150
提交评论