下载此文档

vc++的串口通信简介.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
vc++实现PC与单片机的串口通讯(修正版)
2009-05-31 17:56
实验实现的功能主要是:用PC上的一个软件通过串口通讯控制单片机I/O口的输出。本次实验主要涉及PC端上位机的程序编写(用VC)与单片机程序的编写(用Keil)。为了简化实验,PC端软件设计成具有8个按钮的对话框,每个按钮分别控制单片机P2口的一个引脚的高低电平。为了体现直观的结果,P2口上接上8个发光二极管。
PC与单片机的通讯协议如下:采用4800波特率,无校验位,8个数据位,1个停止位,一次传输一个控制字节。
一、上位机软件的编写
本来控制单片机只需单向传输数据即可,为了熟悉PC端接受数据的功能,在应用软件将控制数据传输到单片机端后,单片机端回传数据给应用软件,并用16进制格式显示在编辑控件中。
VC实现对串口的控制主要有两种方式:m控件与api函数。m控件实现简单,本实验采用该方式。
1.       在VC中创建一个基于对话框的应用程序,m控件。修改对话框资源,m及8个按钮控件与一个编辑框。。
2.       在对话框的OnInitDialog()函数中初始化串口,代码如下:
if(.GetPortOpen())
.SetPortOpen(FALSE);
.mPort(1);//1
if(!.GetPortOpen())
.SetPortOpen(TRUE);//打开串口
else
MessageBox("无法打开串口!");
.SetInBufferSize(1024); //接收缓冲区长度
.SetOutBufferSize(1024);//发送缓冲区长度
.SetOutBufferCount(0);//清空输出缓冲区
.SetSettings("4800,n,8,1");//波特率4800,无校验,8个数据位,1个停止位
.SetInputMode(1); //1:表示以二进制方式检取数据
.SetRThreshold(1);//参数1表示每当串口接收缓冲区中有多于
//m事件
.SetInputLen(0); //参数为0表示事件触发时读取接收缓冲区中全部内容,
                                //参数为1表示事件触发时读取接收缓冲区中一个字符.
.GetInput();//先预读缓冲区以清除残留数据
。下面为其中一个函数的代码,其他与此类似。
omDlg::OnP20()
{
// TODO: Add your control notification handler code here
byte bytSend[1];// byte==unsinged char ,COledVariant类不能构造unsinged char的对象.
CByteArray   arraySend; //构造一个空的字节数组
bytSend[0]=0x86;
();   // 删除数组中所有的元素
(1);    //设置数组元素的个数
(0,bytSend[0]);    // 给数组中指定下标的元素赋值,但不能动态增长数组(指

vc++的串口通信简介 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人bjy0415
  • 文件大小0 KB
  • 时间2015-09-03