c#RTSCTS协议的串口程序怎么写

c#RTSCTS协议的串口程序怎么写,第1张

通信协议中的RTS/CTS协议:即请求发送/允许发送协议,相当于一种握手协议,主要用来解决隐藏终端问题。隐藏终端(Hidden

Stations)是指,基站A向基站B发送信息,基站C未侦测到A也向B发送,故A和C同时将信号发送至B,引起信号冲突,最终导致发送至B的信号都丢失了。隐藏终端多发生在大型单元中(一般在室外环境)岁孙烂,这将带来效率损失,并且需要错误恢复机制。当需要传送大容量文件时,尤其需要杜绝隐藏终端现象的发生。IEEE802.11提凯轿供了如下解决方案。在参数配置中,若使用RTS/CTS协议,同时设置传送上限字节数----一旦待传送的数据大于此上限值时,即启动RTS/CTS握手协议:首先,A向B发送RTS信号,表明A要向B发送若干数据,B收到RTS后,向所有基站发出CTS信号,表明已准备就绪,A可以发送,而其余欲向B发送数据的基站则暂停发送;双方在成功交换RTS/CTS信号(即完成握手)后才开始真正的数据传递,保证了多个互不可见的发送站点同时向同一接收站点发送信号时,实际只能是收到接收站点回应CTS的那个站点能够进行发送,避免了冲突发生。即使有冲突发生,也只是在发送RTS时,这种情况下,由于收不到接收站点的CTS消息,大家再乎漏回头用DCF协议提供的竞争机制,分配一个随机退守定时值,等待下一次介质空闲DIFS(Distributed

Inter-Frame

Space)后竞争发送RTS,直到成功为止。

所谓的串口通信协议,其实,就是串口通信时,相互宴哗悄的一种联系方式。

至于内容完全可以根据自己的需要来制定。

包括:首先确定波特率,是否有奇偶校验,一般都不用,比较麻烦,但可以加一个芦兆字节的校验和或校验字。

其次,多机通信时,要确定每个机器的地址,双机通信就不用了。

然后是联系方式,即通信时,是否用握手信息,互相交换联系信号,为了加密,还可以交换密码。

最简单的就是:发一帧数据时用几个字节,带不带校验和,起始字节是什么,结束字节是什么,关键的命令字是什么,数据字节是什么。命令字表示什么晌渣动作,数据表示状态。反正都是自己确定的,怎么编写协议都 行的。

串口裂滑收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。

一般来说,过程如下:

1,配置串口参数、波特率等,开启串口中断;

void Init_UART()

{

}

2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;

程序一般为:

void UART_ISR() interrupt x using y

{

串口中断搏弯处理函数

}

x - 单片机的C51中断号

y - 指定使用的当前工作寄肆银腊存器组号(0-3 PSW中的RS0,RS1组合)

3,主程序

int main(void)

{

Init_UART()

while(1)

{

//数据发送函数

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12308046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存