基于MFC的Flash和单片机的通讯Word文档下载推荐.docx

上传人:b****3 文档编号:15065954 上传时间:2022-10-27 格式:DOCX 页数:25 大小:1.02MB
下载 相关 举报
基于MFC的Flash和单片机的通讯Word文档下载推荐.docx_第1页
第1页 / 共25页
基于MFC的Flash和单片机的通讯Word文档下载推荐.docx_第2页
第2页 / 共25页
基于MFC的Flash和单片机的通讯Word文档下载推荐.docx_第3页
第3页 / 共25页
基于MFC的Flash和单片机的通讯Word文档下载推荐.docx_第4页
第4页 / 共25页
基于MFC的Flash和单片机的通讯Word文档下载推荐.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于MFC的Flash和单片机的通讯Word文档下载推荐.docx

《基于MFC的Flash和单片机的通讯Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于MFC的Flash和单片机的通讯Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。

基于MFC的Flash和单片机的通讯Word文档下载推荐.docx

m_FlashPlayer。

可再次在Flash控件上点右键,然后选择“属性”,将其ID改为IDC_SHOCKWAVEFLASH。

第四步:

使用成员函数LoadMovie和Play来导入并播放动画。

在MFCFlashDlg.cpp文件中,找到CMFCFlashDlg:

:

OnInitDialog()函数,在“returnTRUE”之前添加代码:

CStringstr=_T("

E:

\\VS\\Flash\\media\\test.swf"

);

m_FlashPlayer.LoadMovie(0,str);

m_FlashPlayer.Play();

其中m_FlashPlayer.LoadMovie(0,str)用来将动画导入程序中,str为要播放的flash路径,要用绝对路径(注意路径用双斜杠“\\”隔开);

m_FlashPlayer.Play()开始播放动画。

三、实现MFC与Flash的通信

1、Flash通过FSCommand消息调用MFC

添加消息处理函数。

在Flash控件上点右键,然后选择“添加事件处理程序”,在类列表选择“CMFCFlashDlg”,消息类型选择“FSCommand”,则函数处理程序名称自动为“FSCommandShockwaveflash”。

它的形式大概是这样子的:

  voidCMFCFlashDlg:

OnFSCommandShockwaveflash(LPCTSTRcommand,LPCTSTRargs);

函数有两个参数,就是flash的ActionScript中FSCommand语句中的两个参数。

其实并不一定两个参数都用到,flash脚本中可以就使用一个参数,这样这边的函数就只要对第一个参数进行处理就行了。

编写消息处理代码。

在刚添加的FSCommand消息处理函数中,对两个参数进行处理。

其实就是做字符串比较的操作,根据是什么字符串来判断用户进行了什么操作。

大概就是这样子的:

  voidCPlayFlashDlg:

OnFSCommandShockwaveflash1(LPCTSTRcommand,LPCTSTRargs)

{

  //TODO:

Addyourcontrolnotificationhandlercodehere

  if(0==strcmp(command,”bt”))

  {

    if(0==strcmp(args,”enter”))

    {

      MessageBox(“欢迎进入系统!

”);

    }

  }

  elseif(0==strcmp(command,”quit”))

    MessageBox(“您选择了退出!

    CDialog:

OnCancel();

}    

这只是最简单的处理形式,当然你可以在flash中发送复杂的字符串,在这边就要进行更多的处理了。

2、MFC通过CallFunction函数调用Flash

Flash中ExternalInterface.addCallback用处理。

在FLASH中,要用ExternalInterface.addCallback把能被外部调用的函数注册一下,例如:

ExternalInterface.addCallback("

setAlt"

setAlt);

functionsetAlt(para:

String="

3150"

{

alt.text=para;

//alt为swf文件中的一个动态文本

}

MFC中使用CallFunction函数传入参数。

想让MFC主动往flash传内容并且让flash响应,用控件的CallFunction方法。

在MFC中,调用CallFunction方法,传入一个比较复杂的字符串,描述了要调用的函数的名称、参数等等,以XML的形式呈现。

详情参考FLASH帮助的“外部API的XML格式”一文。

此处CallFunction传递的参数为XML格式,如下:

CStringtemp=_T("

<

invokename=\"

setAlt\"

returntype=\"

xml\"

>

\

<

arguments>

string>

3500FT<

/string>

/arguments>

/invoke>

"

m_FlashPlayer.CallFunction(temp);

第二部分单片机与MFC的通讯

1.安装好VS2010,网上很多人说使用VC6.0的mscomm32.ocx控件,下载并注册,注册过

程看上去还很复杂。

我是使用VS2010自带的控件,因此没有这些过程,只需要安装好

VS2010就行了。

在Flash控件上继续添加如下对话框控件:

①“打开串口”按钮,添加方法为从右侧“工具箱”拖放一个“Button”到对话框,

并在右侧“属性”卡中修改“Caption”为“打开串口”,修改“ID”为“IDC_BUTTON_OPEN”。

②“关闭串口”按钮,添加方法为从右侧“工具箱”拖放一个“Button”到对话框,

并在右侧“属性”卡中修改“Caption”为“关闭串口”,修改“ID”为“IDC_BUTTON_CLOSE”。

③“发送”按钮,添加方法为从右侧“工具箱”拖放一个“Button”到对话框,并在

右侧“属性”卡中修改“Caption”为“发送”,修改“ID”为“IDC_BUTTON_SEND”。

④“发送编辑框”。

⑤“接受编辑框”

2.添加串口通信控件。

在对话框上“右键”

对话框右下角(默认在左上角)的电话图标就是串口控件。

3.给控件添加变量

在控件(电话图标)上“右键”

命名为m_mscomm,点击完成,工程中会自动添加“mscomm.h”和“mscomm.cpp”两

个文件。

4.给两个编辑框添加成员变量

5.添加三个按钮的事件

直接“双击”三个按钮,在CommTestDlg.cpp文件中会增加如下几个函数:

voidCCommTestDlg:

OnBnClickedButtonSend()

//TODO:

在此添加控件通知处理程序代码

}

OnBnClickedButtonOpen()

OnBnClickedButtonClose()

消息映射已经自动关联。

6.添加串口控件的事件处理程序

点击“添加编辑”即可,在CommTestDlg.cpp文件中会增加函数:

OnCommMscomm1()

数据接收将在此函数中进行。

7.打开串口及串口设置。

voidCCommTestDlg:

if(m_mscomm.get_PortOpen())//如果串口是打开的,则行关闭串口

m_mscomm.put_PortOpen(FALSE);

m_mscomm.put_CommPort

(1);

//选择COM1

m_mscomm.put_InBufferSize(1024);

//接收缓冲区

m_mscomm.put_OutBufferSize(1024);

//发送缓冲区

m_mscomm.put_InputLen(0);

//设置当前接收区数据长度为0,表示全部读取

m_mscomm.put_InputMode

(1);

//以二进制方式读写数据

m_mscomm.put_RThreshold

(1);

//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm

事件

m_mscomm.put_Settings(_T("

9600,n,8,1"

));

//波特率9600无检验位,8个数据位,1个停止位

if(!

m_mscomm.get_PortOpen())//如果串口没有打开则打开

m_mscomm.put_PortOpen(TRUE);

//打开串口

AfxMessageBox(_T("

串口1打开成功"

else

m_mscomm.put_OutBufferCount(0);

串口1打开失败"

8.添加关闭串口按钮的消息响应函数

m_mscomm.put_PortOpen(FALSE);

//关闭串口

AfxMessageBox(_T("

串口1已关闭"

9.添加发送按钮消息响应函数

UpdateData(true);

//读取编辑框内容

m_mscomm.put_Output(COleVariant(m_EditSend));

//发送数据

m_EditSend.Empty();

//发送后清空输入框

UpdateData(false);

//更新编辑框内容

10.接收数据

在此处添加消息处理程序代码

staticunsig

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1