网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用VC++6.0实现PC机与单片机之间串行通信的方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
字节有效位数,S停止位。

PortOpen:设置或返回串口状态,类型 BOOL:TURE打开,FALSE关闭。

InputMode:设置从接收缓冲区读取数据的格式,类型 long: 0-Text 1-Bin。

Input:从接收缓冲区读取数据,类型 VARIANT。

InBufferCount:接收缓冲区中的字节数,类型:short。

InBufferSize:接收缓冲区的大小,类型:short。

Output:向发送缓冲区写入数据,类型:VARIANT。

OutBufferCount:发送缓冲区中的字节数,类型:short。

OutBufferSize:发送缓冲区的大小,类型:short。

InputLen:设置或返回Input读出的字节数,类型:short。

CommEvent:串口事件,类型:short。

 

3.2 程序示例

串口初始化

if (!m_comm.GetPortOpen())

m_comm.SetPortOpen(TURE); /*打开串口*/

m_comm.SetSettings("4800,n,8,1"); /*串口参数设置*/

m_comm.SetInputMode(0); /*设置TEXT缓冲区输入方式*/

m_comm.SetRthresHold(1); /*每接收一个字符则激发OnComm()事件*/

接收数据

m_comm.SetInputLen(1); /*每次读取一个字符

VARINAT V1=m_comm.GetInput();

/*读入字符*/

m_V1=V1.bstrval;

发送字符 m_comm.SetOutput(Colevariant ("Hello"); /*发送 “Hello” */

3.3 注意

SetOutput方法可以传输文本数据或二进制数据。用SetOutput方法传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的Variant 到 Output 属性。正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null 字符等的数据,要以二进制形式发送。此处望引起读者注意,笔者曾经在此犯错。

 

4 VC++类CSerial

4.1 串行通信类CSerial简介

Cserial 是由MuMega Technologies公司提供的一个免费的VC++类,可方便地实现串行通信。以下为该类定义的说明部分。

class CSerial

{

public:

CSerial();

~CSerial();

BOOL Open( int nPort = 2, int nBaud = 9600 );

BOOL Close( void );

int ReadData( void *, int );

int SendData( const char *, int );

int ReadDataWaiting( void );

BOOL IsOpened( void ){ return( m_bOpened ); }

protected:

BOOL WriteCommByte( unsigned char );

HANDLE m_hIDComDev;

OVERLAPPED m_OverlappedRead, m_OverlappedWrite;

BOOL m_bOpened;

}

 

4.2 串行通信类Cserial 成员函数简介

1. CSerial::Cserial是类构造函数,不带参数,负责初始化所有类成员变量。

2. CSerial:: Open这个成员函数打开通信端口。带两个参数,第一个是埠号,有效值是1到4,第二个参数是波特率,返回一个布尔量。

3. CSerial:: Close函数关闭通信端口。类析构函数调用这个函数,所以可不用显式调用这个函数。

4. CSerial:: SendData函数把数据从一个缓冲区写到串行端口。它所带的第一个参数是缓冲区指针,其中包含要被发送的资料;这个函数返回已写到端口的实际字节数。

5. CSerial:: ReadDataWaiting函数返回等待在通信端口缓冲区中的数据,不带参数。

6. CSerial:: ReadData函数从端口接收缓冲区读入数据。第一个参数是void*缓冲区指针,资料将被放入该缓冲区;第二个参数是个整数值,给出缓冲区的大小。

  

4.3 应用VC类的一个实例

1. 固定式EBM气溶胶灭火系统简介

固定式EBM气溶胶灭火装置分区启动器是专为EBM灭火装置设计的自动控制设备。可与两线制感温、感烟探测器配套使用,当监测部位发生火情时,探测器发出电信号给分区启动器,经逻辑判断后发出声、光报警,延时后自动启动EBM灭火装置。为了便于火灾事故的事后分析,需对重要的火警事件和关键性操作进行记录,记录应能从PC机读出来;PC机能控制、协调整个系统的工作,这些都涉及通信。本例中启动器采用RS-485通信接口,系统为主从式网络,PC机为上位机。具体的通信协议
  • 下一篇资讯: 读取网卡的MAC地址
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号