5446|5

58

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口通信问题! [复制链接]

请问我如果不在中断中处理串口接收和发送,而在主程序中做.我知道如果判断串口是否收到单个字节如0x55可以用如下语句:

if(URCTL0 & RXWAKE)
{
if(RXBUF0==0x55)
............................
现在如果我想判断串口是否连续收到四个字节,如,0xFE 0xFF,0x55,0x00,该如何写程序,万分感谢!

最新回复

引用: 请问我如果不在中断中处理串口接收和发送,而在主程序中做.我知道如果判断串口是否收到单个字节如0x55可以用如下语句: if(URCTL0 & RXWAKE) { if(RXBUF0==0x55) ............................ 现在如果我想判断串口是否连续收到四个字节,如,0xFE 0xFF,0x55,0x00,该如何写程序,万分感谢! 对于一个完整的通讯帧协议来说,必然有一个用于固定识别的帧头特征字符串,正如你所说的“0xFE、0xFF、0x55、0x00”。接收这类通通讯帧,通常采用的办法为: 由于430通讯中断是逐个字符中断接收的,为了识别这个“帧头特征字符串”,就是在接收到每一个字符时逐一判断是否就是帧头特征字符串的第一个字符,如果是的话则保留在一个数组变量中,否则放弃。然后接收紧接下来的第二个字符是否符合规定,如果是的话则继续保留,否则放弃并清除前面接收的内容,重新开始。如此继续进行,直到全部“帧头特征字符串”连续接收到时设置数据通讯帧接收开始标志,进行无判别的后续接收。 如果通讯帧是固定长度的,则按照事先约定的长度进行接收,完成全部内容的接收。 若通讯帧是变动长度的,在通讯协议中某一个固定位置一定包括了本数据帧的长度信息。在收到该长度信息后,则计算出后续数据的长度。从而完成整个数据帧的接收工作。  详情 回复 发表于 2006-3-6 12:25
 
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
串口接收通常选择中断方式,因为接受是被动的。
判断是否连续接收4个字节,就需要四次中断读取接收数据即可
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
但如何来判断是连续接收到的呢?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
接收用中断处理
至于是不是连续的,就看你的协议了,通讯嘛,总该有个规约的。
先有协议,再有程序。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

5
 
是不是先通过中断方式将RXBUF中数据逐个保存到RAM中,然后每次去判断RAM中接收的串是否为协议?
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用:

请问我如果不在中断中处理串口接收和发送,而在主程序中做.我知道如果判断串口是否收到单个字节如0x55可以用如下语句:

if(URCTL0 & RXWAKE)
{
if(RXBUF0==0x55)
............................
现在如果我想判断串口是否连续收到四个字节,如,0xFE 0xFF,0x55,0x00,该如何写程序,万分感谢!
对于一个完整的通讯帧协议来说,必然有一个用于固定识别的帧头特征字符串,正如你所说的“0xFE、0xFF、0x55、0x00”。接收这类通通讯帧,通常采用的办法为:
由于430通讯中断是逐个字符中断接收的,为了识别这个“帧头特征字符串”,就是在接收到每一个字符时逐一判断是否就是帧头特征字符串的第一个字符,如果是的话则保留在一个数组变量中,否则放弃。然后接收紧接下来的第二个字符是否符合规定,如果是的话则继续保留,否则放弃并清除前面接收的内容,重新开始。如此继续进行,直到全部“帧头特征字符串”连续接收到时设置数据通讯帧接收开始标志,进行无判别的后续接收。

如果通讯帧是固定长度的,则按照事先约定的长度进行接收,完成全部内容的接收。

若通讯帧是变动长度的,在通讯协议中某一个固定位置一定包括了本数据帧的长度信息。在收到该长度信息后,则计算出后续数据的长度。从而完成整个数据帧的接收工作。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表