没有合适的资源?快使用搜索试试~ 我知道了~
首页Flash动画与单片机开发实战指南:跨平台应用与实例教程
Flash动画与单片机开发实战指南:跨平台应用与实例教程
0 下载量 69 浏览量
更新于2024-06-27
收藏 5.02MB PDF 举报
"《Flash动画+单片机开发教程》是一本将Adobe Flash动画技术和单片机微控系统网络跨平台应用相结合的教程。它以Flash-NetTCP/IP网络单片机模块为核心,涵盖了丰富的开发内容,如Flash与单片机之间的通讯原理、硬件结构、通信协议以及控制指令。书中不仅涉及ActionScript 3.0编程、C51和AVR八位单片机编程,还涵盖了PLC编程,使得应用范围广泛,包括工业人机界面、工业组态、PLC模拟仿真、智能家居网络控制、舞台灯光网络控制、电子沙盘设计、动漫设计、智能玩具网络控制和物联网等。 这本书的特点在于其实战性和实用性,所有示例都经过精心设计并提供详细的电路原理图、源代码,确保开发者能够快速上手并进行实际项目的开发。虽然它着重于实际应用开发,但考虑到篇幅限制,对于基础的Flash、ActionScript 3.0、C51和AVR编程知识并未深入讲解,读者需具备一定的基础知识,可以参考入门教材来补充。 本书适用于计算机科学与技术、计算机自动化、嵌入式技术、物联网等专业的大学生、研究生,以及计算机软硬件研发人员作为学习和实践教材。通过阅读,读者能将理论知识转化为实际操作能力,实现学以致用。作者凭借丰富的跨行业经验,从传统的80年代Basic计算机到现代的移动设备,展示了技术的飞速发展和个人对技术的热情,使本书更具启发性和深度。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/87321558/bg10.jpg)
第【 】页
16
四、Flash-Net 内部指令和通讯协议
Flash-Net 是一个完整的软硬件系统,内部包含四个软件服务器和 1 个 74HC165/74HC595 驱动,所有的
功能必须依靠这些服务器来完成,一方面 Flash-Net 通过 TCP/IP 网络,接收来自客户端的通讯指令,然后
根据指令要求执行对外围接口电路的控制。
Flash-Net 统一采用 16 位地址,可访问(0x0000-0xFFFF)64K,外部任何一个输入输出端口都映射到内
部一个固定地址,对该地址的读写实际上就是对端口操作。Flash-Net 包含:内部地址 和端口地址,内部
地址保存了 Flash-Net 内部的现场数据,外部地址主要是保存外部端口的状态。所有这些地址通过通讯指
令都是可读写的。
4.1.内部地址定义(如图 1-4-1):
(图 1-7 内部地址定义图)
![](https://csdnimg.cn/release/download_crawler_static/87321558/bg11.jpg)
第【 】页
17
表 1-4-1:内部地址映射表
序号 内部地址范围 对应端口 说明
1 0x0000-0x03FF PLC S0-S1023 1024 个状态继电器
2 0x0400-0x04FF 32 个 74HC165
256 个输入端口
(X000-X007)
(X010-X017)
……
(X310-X317)
3 0x0500-0x05FF 32 个 74HC595
256 个输出端口
(Y000-Y007)
(Y010-Y017)
……
(Y310-Y317)
4 0x0600-0x07FF PLC T0-T255 256 个时间继电器
5 0x0800-0x0DFF PLC M0-M1535 1536 个内部继电器
6 0x0E00-0x0EFF PLC C0-C255 256 个计数器继电器
7 0x0F00-0x0FFF PLC M8000-M80FF 256 个特殊功能继电器
8 0x1000-0x13FF PLC D0-D199 D200-D1023
16 位数据寄存器
9 0x1400-0x1FFF 保留
10 0x2000-0x3000 4K FRAM0-FRAM4095 16 位掉电保持存储器
11 0x3001-0xFFFF 保留
4.2、Flash-Net Modbus 通讯协议
Flash-Net 是基于 TCP/IP 的微内核服务器,客户端(PC、Android、iPhone 平板手机)通过 TCP/IP 方
式对 Flash-Net 进行访问,访问的通讯协议采用国际标准的 Modbus 协议,Modbus 协议包括 ASCII 和 RTU
两种通讯模式,下面对两种通讯模式进行介绍。
RTU 通讯指令帧格式:
地址 功能代码
数据数量 数据 1 …… 数据 n CRC 高 CRC 低
RTU 是远程终端单元通讯方式的简称,RTU 方式以 16 进制字节数据组成帧,数据校验采用 CRC-16 检验,
没有帧开始和帧结束标志,Flash-Net 作为服务器,随时等待客户端发送 RTU 数据帧,当接收到第 1 个字节
开始计时,不断的侦测数据帧数据,如果连续 3-5 个字节时间段没有接收到数据,接收端认为数据帧结束,
开始对接收帧数据进行分析并执行相应的指令,如果错误则给客户端返回错误信息。采用 RTU 方式通讯必
须注意发送数据帧的时间间隔,如果 2 个数据帧之间的间隔太小(一般 3-5 个字节时间),服务器会认为是
1 个数据帧内容而导致错误,因此客户端发送数据时,2 个数据帧之间的间隔必须大于 5 个字节时间。
![](https://csdnimg.cn/release/download_crawler_static/87321558/bg12.jpg)
第【 】页
18
ASCII 通讯指令帧格式:
:
地址
功能代码
数据数量
数据 1
……
数据 n
LRC 回车符
换行符
ASCII 通讯方式是将 16 进制数据中每 4 位都换成 1 个 ASCII 码,即 1 个字节换成 2 个 ASCII 数据。如:
16 进制的数据 0x12 转换为 1(0x31)2(0x32)。数据帧组成由“:”开始,加上 ASCII 数据内容,LRC 校
验,以“回车换行”结束。这种通讯方式对帧之间的时间间隔没有严格的要求,再者,除了回车换行符外,
其它数据均为可见字符,简单方便。
表 1-4-2:通讯参数表
参数项 ASCII 模式 RTU 模式
信息模式
ASCII(美国标准信息交换代码)模式,
在信息中每位字节以 2 个 ASCII 字符表示
RTU(远程终端单元)模式
在信息帧中直接以字节内容表示,在同
样传输速率下,传输速度比 ASCII 快
代码系统
u 16 进制,ASCII 字符:0-9,A-F;
u 消息中每个 ASCII 字符都是 16 进制
字符组成每个字节位;
u 字符“:”为帧起始标志;
u 回车换行为帧结束结束;
u 8 位二进制传输;
u 消息中每个 8 位由两个 16 进制字符
组成
u 无起始标志和结束标志
校验方式 LRC(纵向检测)校验 CRC-16(循环长检测)位校验
通过以上对比分析可以发现:ASCII 模式有帧起始标志和结束标志,这样在程序处理中比较方便,所
传输的数据帧除了“回车换行符”外都是可见的 ASCII 形式,程序调试非常方便,而且 LRC 校验简单容易。
尽管传输效率不如 RTU 模式,这种传输效率在 RS232 低速率通讯方式下较明显。但由于 Flash-Net 是基于
TCP/IP 通讯方式传输指令数据帧,通讯速率非常高,弥补了 ASCII 通讯效率问题,加上数据帧很小,感觉
不到效率的差别。为了使用简单,更便于 Adobe Flash 开发应用,采用 ASCII 模式。对 Flash-Net 操作总
共 8 条指令。包括:读取多个继电器、读取多个输入端口、读取多个寄存器、写单个继电器、写单个寄存
器、写多个继电器、写多个寄存器、读取 Flash-Net 状态。
LRC(纵向检测)校验计算方法:
在客户端开发过程中,任何数据帧的发送和接收都包含了 LRC 校验值,因此了解 LRC 校验计算方法是
非常重要的环节。LRC 校验很简单,由设备地址开始,将数据帧中数据的 16 进制累加,累加值取反加 1,
即得 LRC 校验值。注意:发 送 时 除 了“ :”外 ,要 将 16 进制全部转换成 ASCII,加上“回车换行(0x0D 0x0A)”
结束标志再发送。
例如:数据: 01 01 05 00 00 08
累加值:0x01 + 0x01 + 0x05 + 0x00 + 0x00 + 0x08 = 0x0F
LRC 值:0x0F 取 2 的补码为:0xF1
完整数据帧: :01 01 05 00 00 08 F1 回车换行
Flash Actioncript3.0 代码程序:--------------------------------------------------------
public function GetLRC(tempstr:String):String //计算字符串 tempstr LRC 校验值
![](https://csdnimg.cn/release/download_crawler_static/87321558/bg13.jpg)
第【 】页
19
{
var len:uint;
var i:uint;
var total:uint;
var startpos:uint;
var byte:ByteArray=new ByteArray();
len=(tempstr.length-1)/2;
startpos=tempstr.indexOf(":");
if(startpos==-1)
{
return "Error";
}
total=0;
for(i=0;i<len;i++)
{
byte[i]=uint("0x"+tempstr.substr((startpos+2*i+1),2));
total=total+byte[i];
}
byte[0]=~total+1;
return byte[0].toString(16);
}
注意:为了数据帧表示清楚,每个数据间加入了空格,实际应用中请不要加空格,以下
操作实例同样,不再说明。由于采用 TCP/IP 通讯,有固定的 IP 地址,因此起始位后跟的设
备地址 ID 全部固定为 01。
【1】 读取多个继电器线圈状态指令 01
指令格式(发送):
起
始
符
地址 功能码
起始地址
(高位)
起始地址
(低位)
读取个数
(高)
读取个数
(低)
LRC 校验
值
结束符
:
ID
01
FUNC
01
AddrH AddrL NumH NumL LRC 0D 0A
1 字
节
2 字节
2 字节
2 字节 2 字节 2 字节 2 字节 2 字节 2 字节
指令格式(返回):
起
始
符
地址 功能码
返回字节
个数
数据 1 …… 数据 n
LRC 校验
值
结束符
![](https://csdnimg.cn/release/download_crawler_static/87321558/bg14.jpg)
第【 】页
20
:
ID
01
FUNC
01
Numb Data1 …… Datan LRC 0D 0A
1 字
节
2 字节
2 字节
2 字节 2 字节 2 字节 2 字节 2 字节 2 字节
操作目标(BIT)包括:
l 读取 74HC595 输出状态(地址:0x0500-0x05FF);
l 读取 S0-S1023 状态继电器(地址:0x0000-0x03FF);
l 读取 M0-M1535 内部继电器(地址:0x0800-0x0DFF);
l 读取 M8000-M8255 特殊功能继电器(地址:0x0F00-0x0FFF);
FUNC 01 主要按位 BIT 形式获取输出端口和继电器的状态数据,0-表示断开,1-表示吸合。
操作实例:------------------------------------------------------------
【目标】 读取第 1 个 74HC595 8 个端口(Y000-Y007)的状态,Y0 吸合。
【发送】 :01 01 05 00 00 08 F1 回车换行
【返回】 :01 01 01 01 FC 回车换行
【目标】 读取第 1 个 74HC595 16 个端口(Y000-Y017)的状态,Y0 吸合。
【发送】 :01 01 05 00 00 10 E9 回车换行
【返回】 :01 01 02 01 00 FB 回车换行
【2】 读取多个输入端口指令 02
指令格式(发送):
起
始
符
地址 功能码
起始地址
(高位)
起始地址
(低位)
读取个数
(高)
读取个数
(低)
LRC 校验
值
结束符
:
ID
01
FUNC
02
AddrH AddrL NumH NumL LRC 0D 0A
1 字
节
2 字节
2 字节
2 字节 2 字节 2 字节 2 字节 2 字节 2 字节
指令格式(返回):
起
始
符
地址 功能码
返回字节
个数
数据 1 …… 数据 n
LRC 校验
值
结束符
:
ID
01
FUNC
02
Numb Data1 …… Datan LRC 0D 0A
1
字
节
2 字节
2 字节
2 字节 2 字节 2 字节 2 字节 2 字节 2 字节
操作目标(BIT)包括:
l 读取 74HC165 输出状态(地址:0x0400-0x04FF);
剩余245页未读,继续阅读
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
omyligaga
- 粉丝: 61
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)