打印

给大家介绍一种有效的异步串口通讯

[复制链接]
1561|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
假程序匠人|  楼主 | 2010-4-2 00:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发送就没什么好说了,主要在于接收
采用字节间隔超时来判断协议帧的接收结束
为了保险,超时时间一般设定为10倍以上,如19200波特率时,字节间隔为0.5ms左右,因此我们超时就设定5ms
struct tagUART
{
    u8 RecvBuf[BUFSIZE];
    u8 SendBuf[BUFSIZE];
    u8 pBuf;
    U8 TimeOut;
    u8 IsRecvEnd;
    //OSEVENT *pEvent;
}UART;
void UARTInterrupt(void)
{
     UART.RecvBuf[UART.pBuf++] = SBUF;
     UART.TimeOut = 5;
}
void 1msTimerInterrupt(void)
{
    if(UART.TimeOut>0)
    {
        UART.TimeOut--;
        if(UART.TimeOut==0)
        {
             UART.IsRecvEnd = 1;
            //OSSemPost(UART.pEvent);
        }
    }
}

相关帖子

沙发
ejack| | 2010-4-2 08:00 | 只看该作者
我是被LZ的ID吸引进来的……

使用特权

评论回复
板凳
mohanwei| | 2010-4-2 08:34 | 只看该作者
参考一下modbus……

使用特权

评论回复
地板
zhiyonghe| | 2010-4-2 12:40 | 只看该作者
这ID够噱头!;P

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

80

帖子

0

粉丝