发送到串口的数据,串口接收是相反的?

7年 2012-12-03 10:30:15
发送到串口的数据是
handshake.messageHead := $AA2F;
handshake.messageLen := $00000009;
handshake.messageType := $00;
handshake.messageAcc := $00E2;

接收到的却是 2F AA 09 00 00 00 00 E2 00

这是为啥?

串口状态如下:
cc.dcb.BaudRate:=115200; //波特率
cc.dcb.ByteSize:=8; //数据位
cc.dcb.Parity := NOPARITY; //校验位
cc.dcb.StopBits := ONESTOPBIT; //停止位
...全文
1244 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
勉励前行 2012-12-04
  • 打赏
  • 举报
回复
先將记录串行化,然后再发。这样就与字节高低就没关系了。
看那山瞧那水 2012-12-04
  • 打赏
  • 举报
回复
这和串口没什么关系,串口只是把字节流按顺序发出而已,看你是怎么组织这个要发的数据(可以理解为字节数组),看你的情况,是"字节在前,高字节在后"的发顺序,你也可以"高字节在前,低字节在后"发。
7年 2012-12-03
  • 打赏
  • 举报
回复
嗯,问题找到了。除了将发送的反着写或者一个字节一个字节写以外,还有别的方法吗?
Oraclers 2012-12-03
  • 打赏
  • 举报
回复
在内存中的存放是按字节“低位在前,高位在后”的顺序存放的。
7年 2012-12-03
  • 打赏
  • 举报
回复
我发送的就是个记录啊?没明白什么意思,详细说说呗,谢谢啦
Oraclers 2012-12-03
  • 打赏
  • 举报
回复
引用 2 楼 zzflover 的回复:
嗯,问题找到了。除了将发送的反着写或者一个字节一个字节写以外,还有别的方法吗?
可以定义一个记录,然后读到记录中,对应的字节会转为相应记录中定义的类型。
单片机控制GSM模块实现短信收发的软件设计 摘要:借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。 详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短 信进行探讨,也对程序设计的主体思想作了较为细致的分析。 关键词:单片机 短信收发 软件设计 GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通信体制中,比较成熟完善,且应 用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移 动通信网的主要方式。基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无 线应用,是一种信息在移动网络上存储和转寄的过程。由于公众GSM网络在全球范围内实 现了联网和漫游,建议上述系统不需再组建专用通信网络,所以具有实时传输数据功能 的短信应用将得到迅速普及。笔者开发设计的基于GSM网络的温度数据采集与无线传输系 统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。系统模型图如图1所 示。 本系统由数据采集部分、数据接收和发送部分、终端处理部分三个模块组成。数据采 集模块将采集到的温度数据存入存储器中。数据收发模块采用双单片机共用E2RPOM的方 式,单片机2控制数据从存储器转存入E2PROM中;单片机1负责将数据从E2PROM中读出, 并经GSM模块2借助GSM网络将数据发送出去。单片机1不仅控制数据发送,也控制数据 的接收。在这里,E2PROM是温度数据临时存储和上传的中转站。终端处理模块负责将接 收到的数据交给计算机处理,并将处理后的结果存放到数据库中,以供查询。当终端处 理模块需要向GSM模块2发送控制命令时,GSM模块2接收过程正好与上述过程相反,从而 实现数据的自动双向传递。 系统中,三个模块相互独立,彼此又相互依赖,共同完成数据的传输。数据收发模块在 系统中起着承上启下的作用,是系统的核心模块。该模块以双单片机为核心,以RS232通 信接口,在物理层上实现与GSM模块的连接。由于篇幅的限制,本文主要介绍单片机控制 这一模块工作的软件实现过程,旨在对怎样用单片机控制GSM模块收发短信息进行探讨。 1 GSM模块MZ28 MZ28是中兴通讯推出的GSM无线双频调制解调器,主要为语音传输、短信发送数据 业务提供无线接口。MZ28集成了完整的射频电路和GSM的基带处理器,特别适合于迅速开 发基于GSM无线网络的无线应用产品。带有人机接口(MMI)界面的应用产品内部与MZ28 的通信可通过标准的串行接口(RS232)进行。MZ28使用简单的20-PIN ZIP插座与用户自己的应用系统相连,此ZIP连接方式提供开发所需的数据通信、音频和 电源等接口信号。MZ28可以作为无线引擎,嵌入到用户自己的产品当中,用户可以用单 片机或其它CPU的UART口,使用相应的AT命令,对模块进行控制,达到使其产品可以轻松 进入GSM网络的目的。 2 串口控制SMS的工作原理 单片机与GSM模块一般采用串行异步通信接口,通信速度可设定,通常为19200bps。 采用这种RSM232电缆方式进行连接时,数据传输的可靠性较好。RS232接口方式连接,通 过串行接口集成电路和电平转换电路与GSM模块连接,电路比较简单,所涉及的芯片包括 单片机89C52和电平转换芯片MAX232,是非常常见的接口电路。需要说明的是,该接口通 过I2C总线扩展了一个E2PROM存储器芯片AT24C64,它的主要作用是存储数据,而且断电 信息也不会丢失,这些特性正是存储数据所必须的。 GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特有的。它不用拨号建立 连接,把要发的信息加上目的数据发送到短信息服务中心,经短信服务中心完成存储后 再发送给最终的信宿。所以当目的GSM终端没开机时信息不会丢失。每个短信的信息量限 制为160字节。 现在市场上大多数手机均支持GSM07.05规定的AT指令集。该指令集是ETSI(欧洲通信 技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手 机收发一系列的AT命令,就能达到控制GSM模块收发SMS的目的。必须注意的是,用单片 机实现时,编程必须注意它发送指令与接收到的响应都是字符的ASCII码。用单片机控制 GSM模块收发短信息所涉及以的AT指令如表1所列。 表1 AT指令 AT指令 功 能 描 述 AT+OFF 关机并重新启动 AT+CSDH=0 在TEXT模式下在返回值中不显示详细的头信息 ATE0 关闭回显 AT+CMGF=1 选择短信格式为TEXT模式 AT+CMGS 发送短信息 AT+CMGR 读取短信息 AT+CMGD=0 删除全部短信息 3
基于云台的单片机控制系统设计 Zdh 1911 摘要: 本文提出了用一主单片机 AT89C52 通过 C 语言编程实现 PC 机与多个从单片机的串口通 信,控制多台步进电机的一种方法。主单片机通过 GM 8125 实现在单通道模式下的串口通信 端口扩展。 PC 机采用 MAX 1487 芯片实现 RS-485 通信标准下的电平转换。 此法适用于 Windows 平台,并具有很好的实时性,能够实现对云台的快速实时控制。 关键词:串口通信 MAX1487 GM8125 AT89C52 步进电机 引言: 在基于图像的自动跟踪系统中, 首先云台控制子系统根据图像识别处理子系统得到的目 标图像与监视器中心位置的误差,控制云台运动方向,实现对运动目标的实时跟踪。从实际 应用情况可以知道, 目标图像在监视器显示平面中作二维运动, 因此要求云台能在水平和俯 仰两个向做独立运动, 这就要求云台的引用两台相互独立的控制运动控制系统。 如图 1 所示 摄像头 步进电机1 步进电机2 单片机控制系统 PC机 仰俯运动 位置数据采集 位置信息 水平控制信息 仰俯控制信息 水平运动 图 1 云台系统 1 云台控制系统的硬件设计 本文通过主单片机做数据中转实现 PC 机与从单片机之间的通信,PC 机采用 ADAM-4520、 MAX1487 实现 PC 机与单片机在 RS-485 通信协议下电平的转换。主单片机通过 GM8125 实现 PC 机、从单片机片的通信端口地址扩展。如图 2 1.1 PC 机的 RS-485 串行接口 RS-485采用平衡发送、差分接收数据,是一种抗干扰能力强、能够有效延伸数据传输距 离、便于实现多机通信的半双工串行通信方式,其接口标准是一种多发送器的,它扩展了 RS422A的性能,允许双导线上一个发送器驱动32个负载设备,通讯距离可答1200米。 采用RS-485串行通信时,在PC机与单片机之间必须有相同的通信协议,由于AT89C52单 片机采用TTL逻辑电平,在PC机侧的RS-485串行口采用+12V和-12V,为使两者相连接,在与 PC机相联接的ADAM-4520侧用MAX1487进行电平转换。 如图 2中电平转换部分。 其中ADAM-4520 用于RS-232到RS-485之间的转换;MAX1487 用于RS-485到TTL电平的转换。 从3#片端口扩展 PC机 ADAM-4520 MAX 1487 GM 8125 主单片机 2#从单片机 1#从单片机 3#从单片机 母口 PC机端口扩展 从2#片端口扩展 从1#片端口扩展 RS-232 TO RS-485 RS-485 TO TTL 端口扩展 图 2 电平转换与端口扩展 1.2 MAX1487 MAX 1487用于电平转换,采用+5V电源供电,当供电电流约为500μA时,传输速率达到 2.5MB/S。它适用于半双工通信,通信传输线上最多可挂128个收发器,其输入输出的差动电 压符合RS-485标准, 为±2V-±6V。 MAX 1487的输入脚DI可以直接与单片机CPU的TXD脚相连, 输出脚RO与单片机CPU的RXD脚相连。MAX 1487内部的驱动器与接收器是三态的,通过DE和RE 进行发送和接收,发送和接收的两种控制信号是相反的,避免发送和接收的冲突。引脚A、B 实现多机通信。引脚DE=1,RE=0只允许PC机接收数据;DE=0,RE=1只允许PC机发送数据。 1.3 GM 8125多串口扩展 GM8125可以将一个全双工的标准串口扩展成5个标准串口,并能通过外部引脚控制串口 扩展模式:单通道工作模式和多通道工作模式。芯片的外部控制少,应用灵活,编程使用简 单,适用于大多数有串口扩展需求的系统。 本文中采用单通道工作模式, 模式控制引脚MS=1, 单通道模式在一个时刻只允许一组RXD 和TXD与母串口进行通讯。芯片的地址线用于选择希望和母串口相连接的子串口,外部MCU 通过三根输入地址线和三根输出地址线选择指定和母串口连接的子串口。输入/输出地址线 可以不相同, 则连接到母串口上的RXD和TXD可以属于不同的子串口。 STADD0~STADD2为发送 子通道地址;SRADD0~SRADD2接收子通道地址;用于通信端口选择。多串口扩展如图 3 P3.7 P3.6 P12 P13 P14 P15 P16 P17 TXD RXD AT89C52 主 单 片 机 MS RST SRADD0 SRADD1 SRADD2 STADD0 STADD1 STADD2 TXD0 RXD0 GM 8125 TXD1 RXD1 TXD2 RXD2 TXD3 RXD3 RXD4 TXD4 TXD5 RXD5 从1#片端口扩展 从2#片端口扩展 PC机端口扩展 从3# 片端口扩展 …… 母口

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧