RS232串口通信实验报告
RS232串口通讯

实验九 RS232串口通讯应用一、实验目的串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如可以很直观地把红外遥控器键值的数据码显示在电脑上等。
本次实验目的:1、通过实际硬件连接及软件编程完成 51单片机和PC机之间的串口通讯,从而加深对异步串行通信接口的基本结构、工作原理等串行通信基本概念的理解;2、了解RS-232C电平规定与TTL电平规定的不同,及采用专用芯片MAX232实现两者之间电平转换的连接电路。
二、实验设备51单片机实验板、PC机、串口连接线、串口调试软件、Keil软件、连接导线等。
三、实验原理及内容51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,在此采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
采用三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
图1 串口通讯的硬件电路连接为了能够在电脑端看到单片机发出的数据,必须借助一个WINDOWS软件进行观察,这里利用一个免费的电脑串口调试软件(这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件)。
软件界面如下图,1先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。
串口选择为COM1,当然51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。
RS232串口通信实验

RS232串口通信实验一、认识RS232单片机的串行口是非常有用的,通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作,在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。
RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口. 它是在1970年由美国电子工业协会(EIA)联合贝尔系统,调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定.后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准.而工业控制的RS-232口一般只使用RXD,TXD,GND三条线.在讨论RS-232C接口标准的内容之前,先说明两点:首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。
因此这个标准的制定,并未考虑计算机系统的应用要求。
但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。
显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。
有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。
其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。
由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
(1)RS232(DB9)的接口说明1 DCD 载波检测2 RXD 接收数据3 TXD 发送数据4 DTR 数据终端准备好5 SG 信号地6 DSR 数据准备好7 RTS 请求发送8 CTS 允许发送9 RI 振铃提示(2)接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。
RS232接口实验

RS232接口实验一、实验原理和电路说明数据通信设备与外部进行信息交换时,一般是通过数据接口进行。
在数据接口中主要是传输两类信息:(1)数据;(2)时钟。
有时也只有数据信息而没有时钟信息,这时时钟信息将由接收端从接收数据流中提取出来。
数据接口的设计取决于应用场合。
复杂的接口包括物理层、链路层等,简单的只包括物理层:即物理结构与信号方式的定义(信号的传输方式)。
在信号传输方式方面,目前可选的种类很多:TTL、RS232、RS422、V35、ECL等。
信号传输方式的选择与信号的速率、传输距离、抗干扰性能等有关。
对于低速、近距离信号的传输采用TTL方式,对于一般较高速率、距离较近时可选用RS232方式。
随着距离的增加、信号速率的提高可采用RS422、V35等信号方式,对于很高的信号速率通常采用ECL信号接口方式。
RS232是电气设备之间常用的串行数据接口标准之一。
RS232电气接口具有以下特点:RS232是一种不平衡接口,信号源开路电压小于25V,负载阻抗3000到700 0Ω,负载电容小于2500pF。
在接口端电压低于–3V时确定为1,接口电压高于3V时确定为数据0。
RS232电路采用接口专用集成芯片MAX232,其内部含两个独立的收发通道。
终端A模块的功能电原理框图如图8.2.1所示。
在该模块中,测试点的安排如下:1、TPF01(TPG01):RS232接收数据(RS232→—TTL)2、TPF02(TPG02):TTL接收数据(RS232→—TTL)3、TPF03(TPG03):TTL发送数据(TTL→—RS232)4、TPF04(TPG04):RS232发送数据(TTL→—RS232)注:括弧内为终端B模块内测试点。
其余测试点安排在JH02连接头的外部自环接头上。
自环连接头的制作见图8.2.2。
TPF02TPF03TPF01TPF04① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨⑩JF01 UF01发送数据接收数据图8.2.1 同步接口模块电原理框图RS232TTL1 3 5 7 92 4 6 8 10图8.2.2 RS232接口自环连接测二、实验仪器1、 Z H5001通信原理综合实验系统 一台2、 20MHz 双踪示波器一台三、实验目的1、 熟悉RS232接口的基本特性和应用;四、实验内容异步数据接口B调制器解调器信道TPG03收数据自环m 序列输入图8.2.3 终端接口测试系统连接示意图TTL RS232异步数据接口ATPG02发数据TPF03收数据准备工作:为便于引入观测信号,将来自解调器的数据送往RS232端口进行测试,测试系统连接参见图8.2.3所示。
计算机网络实验RS232串口通信程序的编写

计算机网络实验RS232串口通信程序的编写RS232是一种常见的串行通信接口,用于在计算机和其他外部设备之间传输数据。
它广泛应用于各种设备和应用程序,如串口调试工具、点阵打印机等。
本文将介绍如何编写一个基本的RS232串口通信程序。
我们将使用C 语言和Linux操作系统来演示。
在开始编写程序之前,我们需要了解一些RS232串口的基本概念和通信协议。
RS232串口由发送线(TX)、接收线(RX)、控制线(如RTS、CTS、DTR和DSR)等组成。
通信时,发送方将数据从TX线发送到接收方的RX线,然后接收方通过RX线接收数据。
以下是一个简单的RS232串口通信程序示例:```c#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <termios.h>#include <unistd.h>int maiint fd = open("/dev/ttyS0", O_RDWR , O_NOCTTY); // 打开串口设备if (fd == -1)perror("打开串口失败");exit(1);}struct termios options;tcgetattr(fd, &options); // 获取当前串口设置//设置波特率为9600cfsetispeed(&options, B9600);cfsetospeed(&options, B9600);//设置数据位为8位,无奇偶校验,停止位为1位options.c_cflag &= ~PARENB;options.c_cflag &= ~CSTOPB;options.c_cflag &= ~CSIZE;options.c_cflag ,= CS8;//更新串口设置tcsetattr(fd, TCSANOW, &options);char buffer[255];while (1)ssize_t len = read(fd, buffer, sizeof(buffer)); // 从串口读取数据if (len == -1)perror("读取串口失败");exit(1);}printf("接收到数据:%.*s\n", len, buffer);ssize_t nwrite = write(fd, buffer, len); // 向串口写入数据if (nwrite == -1)perror("写入串口失败");exit(1);}}close(fd);return 0;```该程序首先打开串口设备`/dev/ttyS0`,如果打开失败则会输出错误信息并退出。
RS232串口通信实验

RS232串口通信实验一.实验目的利用单片机的TXD、RXD 口,使用户学会单片机串行口的使用。
二.实验设备及器件IBM PC 机一台DP-51PROC 单片机综合仿真实验仪一台(本实验不需要导线)三.实验内容1.编写一段程序,利用单片机的串行口向PC 机发送0X55。
2.编写一段程序,接收PC 机串行口发送的0X55(ASCII 码为字母U),在单片机接收到0X55 的时候返回一个0X41(ASCII 码为字母A)。
在PC 机一端,以接收到0X41(ASCII 码为字母A)为完成。
四.实验要求深刻理解MAX232芯片的作用,学会使用单片机的的串行口,如果有时间用户可以做一下单片机之间的串行通讯。
五.实验步骤1.用串口线连接PC 机和DP-51PROC 单片机综合仿真实验仪。
图3.18RS232 串行口电路图2.编写一段程序,利用单片机的串行口发送0X55,波特率为9600 Bps。
(该程序不能在DP-51PROC 上进行仿真,所以只能下载,下载的操作可以参考本书的2.6 节)3.程序下载运行后可以在PC 的接收软件上看见接收到“UUUUUUU…”。
4.编写一段程序,在单片机接收到0X55(…U‟)的时候返回一个0X41(…A‟)。
在PC 机一端,以接收到0X41(…A‟)为完成,波特率为9600 Bps。
(该程序不能在DP-51PROC 上进行仿真,所以只能下载,下载的操作可以参考本书的2.6 节)。
5.下载程序运行后,先从PC 机发送一个0X55(…A‟),这时可以在PC 的接收软件看见接收到“A”。
六.实验预习要求阅读本书的2.6 节内容,理解硬件结构,还可以先把程序编好,然后在Keil C51环境下进行软件仿真。
还要学会PC 机上的的串口调试软件的使用(DPFLASH 也内嵌七.实验参考程序程序1:ORG 0000HLJMP MainORG 00F0HMain:MOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2 MOV TH1,#0FDH ;设置波特率为9600 MOV TL1,#0FDHMOV SCON,#50H ;设置串口位方式1 MOV PCON,#00HSETB TR1 ;定时器1 开始计数Mainloop:MOV SBUF,#55H ;开始发送SENDWT:JBC TI,MainloopAJMP SENDWT;End程序2:ORG 0000HLJMP MainORG 00F0HMain:MOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2 MOV TH1,#0FDH ;设置波特率为9600 MOV TL1,#0FDHMOV SCON,#50H ;设置串口位方式1 MOV PCON,#00HSETB TR1 ;定时器1 开始计数REC:JBC RI,SENDWTAJMP RECSENDWT:MOV A,SBUFCLR RICJNE A,#55H,RECMOV SBUF,#41H ;开始发送AJMP $;End(1)请用户思考一下,如果是单片机与单片机之间进行串行口通讯应如何进行。
关于串口的实验报告

关于串口的实验报告1. 实验目的本实验的目的是通过学习并实践串口通信的基本原理和方法,加深对串口通信的理解,掌握串口通信的使用技巧和开发工具。
同时,了解串口通信在实际应用中的重要性和应用场景。
2. 实验原理串口是一种用于计算机与外部设备之间进行数据通信的接口标准。
在计算机中,串口通常通过RS-232或RS-485等标准来实现。
串口通信采用的是异步通信方式,即接收方和发送方的时钟不同步,通过发送和接收的数据包中的控制信息来实现数据的传输。
串口通信的基本原理如下:- 串口通信通过一个物理接口连接计算机和外部设备。
- 通信数据被分为一个个字节进行传输,每个字节由一定的控制信息和实际数据组成。
- 发送方通过发送字节的方式将数据发送给接收方。
- 接收方通过接收字节的方式将数据接收并进行处理。
3. 实验步骤步骤一:准备实验环境为了进行串口通信的实验,我们需要准备以下工具和设备:- 一台计算机- 一个串口转USB转换器- 一个外部设备(如Arduino、传感器等)步骤二:安装串口驱动程序在开始实验之前,我们需要安装串口转USB转换器所需的驱动程序。
驱动程序的安装方式因不同的设备而有所差异,一般可以通过官方网站下载并按照说明进行安装。
步骤三:编写串口通信程序根据所使用的编程语言和开发工具,编写一个简单的串口通信程序。
该程序应包括以下功能:- 打开指定的串口端口- 配置串口的波特率、数据位、停止位等参数- 循环读取串口接收缓冲区中的数据,并进行处理- 将需要发送的数据写入串口发送缓冲区步骤四:测试串口通信将串口转USB转换器插入计算机,并将外部设备连接至串口转USB转换器。
运行编写好的串口通信程序,并观察实验结果。
测试串口通信的方法可以有很多,可以通过发送和接收数据包来验证通信是否正常。
步骤五:总结与分析根据实验结果,总结并分析串口通信的性能和应用场景。
可以考虑以下问题:- 串口通信在哪些领域得到了广泛应用?- 串口通信有哪些特点和优势?- 在实际应用中,串口通信可能遇到哪些常见问题,如何解决?4. 实验结论通过本实验,我们了解了串口通信的基本原理和实际应用方法。
【VIP专享】RS232串口通信实验报告

6.培养学生观察、思考、对比及分析综合的能力。过程与方法1.通过观察蚯蚓教的学实难验点,线培形养动观物察和能环力节和动实物验的能主力要;特2征.通。过教对学观方察法到与的教现学象手分段析观与察讨法论、,实对验线法形、动分物组和讨环论节法动教特学征准的备概多括媒,体继课续件培、养活分蚯析蚓、、归硬纳纸、板综、合平的面思玻维璃能、力镊。子情、感烧态杯度、价水值教观1和.通过学理解的蛔1虫.过观适1、察于程3观阅 六蛔寄.内列察读 、虫生出蚯材 让标容生3根常蚓料 学本教活.了 据见身: 生,师的2、解 问的体巩鸟 总看活形作 用蛔 题线的固类 结雌动态业 手虫 自形练与 本雄学、三: 摸对 学动状习人 节蛔生结4、、收 一人 后物和同类 课虫活构请一蚯集 摸体 回并颜步关 重的动、学、蚓鸟 蚯的 答归色学系 点形教生生让在类 蚓危 问纳。习从 并状学理列学平的害 题线蚯四线人 归、意特出四生面体以形蚓、形类 纳大图点常、五观玻存 表及动的鸟请动文 本小引以见引、察璃现 ,预物身类 3学物明 节有言及的、导巩蚯上状 是防的体之生和历 课什根蚯环怎学固蚓和, 干感主是所列环史 学么据蚓节二样生练引牛鸟 燥染要否以举节揭 到不上适动、区回习导皮类 还的特分分蚯动晓 的同节于物让分答。学纸减 是方征节布蚓物起 一,课穴并学蚯课生上少 湿法。?广的教, 些体所居归在生蚓前回运的 润;4泛益学鸟色生纳.靠物完的问答动原 的4蛔,处目类 习和活环.近在成前题蚯的因 ?了虫以。标就 生体的节身其实端并蚓快及 触解寄上知同 物表内特动体结验和总利的慢我 摸蚯生适识人 学有容点物前构并后结用生一国 蚯蚓在于与类 的什,的端中思端线问活样的 蚓人飞技有 基么引进主的的考?形题环吗十 体生行能着 本特出要几变以动,境?大 节活的1密 方征本“特节化下物.让并为珍 近习会形理切 法。课生征有以问的小学引什稀 腹性态解的 。2课物。什游题主.结生出么鸟 面和起结蛔关观题体么戏:要利明蚯?类 处适哪构虫系察:的特的特用确蚓等 ,于些特适。蛔章形殊形征板,这资 是穴疾点于可虫我态结式。书生种料 光居病是寄的们结构,五小物典, 滑生?重生鸟内学构,学、结的型以 还活5要生类部习与.其习巩鸟结的爱 是如原活生结了功颜消固类构线鸟 粗形何因的存构腔能色化练适特形护 糙态预之结的,肠相是系习于点动鸟 ?、防一构现你动适否统。飞都物为结蛔。和状认物应与的行是。主构虫课生却为和”其结的与题、病本理不蛔扁的他构特环以生?8特乐虫形观部特8征境小理三页点观的动位点梳相组等、这;,哪物教相,理适为方引些2鸟,育同师.知应单面导鸟掌类结了;?生识的位学你握日构解2互.。办特生认线益特了通动手征观识形减点它过,抄;察吗动少是们理生报5蛔?物,与的解.参一了虫它和有寄主蛔与份解结们环些生要虫其。蚯构都节已生特对中爱蚓。会动经活征人培鸟与飞物灭相。类养护人吗的绝适这造兴鸟类?主或应节成趣的为要濒的课情关什特临?就危感系么征灭来害教;?;绝学,育,习使。我比学们它生可们理以更解做高养些等成什的良么两好。类卫动生物习。惯根的据重学要生意回义答;的3.情通况过,了给解出蚯课蚓课与题人。类回的答关:系线,形进动行物生和命环科节学动价环值节观动的物教一育、。根教据学蛔重虫点病1.引蛔出虫蛔适虫于这寄种生典生型活的线结形构动和物生。理二特、点设;置2.问蚯题蚓让的学生生活思习考性预和习适。于穴居生活的形态、结构、生理等方面的特征;3.线形动物和环节动物的主要特征。
RS232串口通信实验

R S232串口通信实验(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验名称:RS-232串口通信实验实验目的:利用单片机的TXD、RXD口,学会单片机串行口的使用。
实验原理:1、51单片机内置全双工异步串行口,共有4种工作方式,电原理图如下:2、串行通信的编程:(1)串行口控制寄存器SCON(2)SM0、SM1—串行口工作方式选择位SM0 SM1 方式功能说明0 0 0 同步移位寄存器方式(用于扩展I/O口)0 1 1 8位异步收发,波特率可变(由定时器控制)1 02 9位异步收发,波特率为fosc/64或fosc/321 1 3 9位异步收发,波特率可变(由定时器控制)(3)REN—允许串行接收位该控制为由软件置“1”或清“0”。
REN=1 允许串行口接收数据。
REN=0 禁止串行口接收数据。
(4)TB8—发送的第9位数据方式2和3时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为其他标志。
(例:在多机通讯中,可以标注传输内容为地址或数据) RB8—接收到的第9位数据方式2和3时,RB8存放接收到的第9位数据。
在方式1,如果SM2=0,RB8是接收到的停止位。
在方式0,不使用RB8。
(5)TI——发送中断标志位方式0时,串行发送第8位数据结束时由硬件置“1”,其它工作方式,串行口发送停止位的开始时置“1”。
TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。
CPU响应中断后, 向SBUF写入要发送的下一帧数据。
TI必须由软件清0。
RI——接收中断标志位方式0时,接收完第8位数据时,RI由硬件置1。
其它工作方式,串行接收到停止位时,该位置“1”。
RI=1,表示一帧数据接收完毕,并申请中断, CPU从接收SBUF取走数据。
该位状态也可软件查询。
RI必须由软件清“0”。
(6)特殊功能寄存器PCONSMOD:波特率倍增位方式0,波特率=fosc/12方式2,波特率= fosc*2SMOD/64方式1、3,波特率=定时器T1的溢出频率*2SMOD/643、多机通讯:主机传输的信息包括地址+数据,每个从机根据自己的地址来判断是否参与通讯SM2 —多机通信控制位用于方式2或方式3中的多机通信控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RS232串口通信实验报告学院:电子信息学院班级:08031102姓名:张泽宇康启萌余建军学号:2011301966 2011301950 2011301961时间:2014年11月13日学校:西北工业大学一.实验题目:设计一个简单的基于串口通信的信息发送和接受界面二.实验目的:1.熟悉并掌握RS232串口标准及原理。
2.实现PC机通过RS232串口进行数据的收发。
3.熟悉VC语言编写程序的环境,掌握基本的VC语言编程技巧。
三.实验内容程序代码:P// PC1PC2Dlg.cpp : implementation file//#include "stdafx.h"#include "PC1PC2.h"#include "PC1PC2Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPC1PC2Dlg dialogCPC1PC2Dlg::CPC1PC2Dlg(CWnd* pParent /*=NULL*/): CDialog(CPC1PC2Dlg::IDD, pParent){//{{AFX_DATA_INIT(CPC1PC2Dlg)m_send = _T("");m_receive = _T("");m_bt = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CPC1PC2Dlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CPC1PC2Dlg)DDX_Control(pDX, IDC_MSCOMM1, m_Comm);DDX_Text(pDX, IDC_EDIT1, m_send);DDX_Text(pDX, IDC_EDIT2, m_receive);DDX_CBString(pDX, IDC_COMBO1, m_bt);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CPC1PC2Dlg, CDialog)//{{AFX_MSG_MAP(CPC1PC2Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPC1PC2Dlg message handlersBOOL CPC1PC2Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_Comm.SetCommPort(1); //选择COM1m_Comm.SetInputMode(1); //输入方式为二进制方式m_Comm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件// CString str;// str="9600,n,8,1";// m_Comm.SetSettings(str);m_Comm.SetPortOpen(TRUE);//打开串口return TRUE; // return TRUE unless you set the focus to a control}void CPC1PC2Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CPC1PC2Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CPC1PC2Dlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}//把字符通过串口发送出去void CPC1PC2Dlg::OnButton1(){// TODO: Add your control notification handler code hereUpdateData(TRUE); //读编辑框内容if(strlen(m_send)==0)MessageBox("发送的数据不能为空!","提示",MB_OK);else{m_Comm.SetOutput(COleV ariant(m_send));Sleep(100);}}BEGIN_EVENTSINK_MAP(CPC1PC2Dlg, CDialog)//{{AFX_EVENTSINK_MAP(CPC1PC2Dlg)ON_EVENT(CPC1PC2Dlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)//}}AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()void CPC1PC2Dlg::OnOnCommMscomm1(){// TODO: Add your control notification handler code hereV ARIANT data;COleSafeArray data2;CByteArray datatemp;CString strtemp,buffer;LONG len,i;BYTE Inbyte[2048],temp;UpdateData(TRUE); //读编辑框内容if(m_Comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符{data=m_Comm.GetInput(); //读缓冲区data2=data; //V ARIANT型变量转换为ColeSafeArray型变量len=data2.GetOneDimSize(); ////得到有效数据长度if(len>0){for(i=0;i<len;i++)data2.GetElement(&i,Inbyte+i);//转换为BYTE型数组for(i=0;i<len;i++) //将数组转换为Cstring型变量{temp=*(char*)(Inbyte+i); //字符型strtemp.Format("%c",temp); //将字符送入临时变量strtemp存放buffer+=strtemp; //将字符串送入临时变量buffer中存放}}m_receive=m_receive+buffer+" ";}UpdateData(FALSE); //更新编辑框内容// MessageBox("gegnxin","提示",MB_OK);}void CPC1PC2Dlg::OnButtonSet(){// TODO: Add your control notification handler code hereUpdateData(TRUE);CString str;str.Format("%s,n,8,1",m_bt);m_Comm.SetSettings(str);}void CPC1PC2Dlg::OnButton2(){// TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT2)->SetWindowText(_T(""));}四.实验过程:(1)将9针RS232串口通信线与PC机串口连接,并用跳线将RS232串口通信线另一端2(RXD)和3(TXD)短接。