队列方法接收串口的数据
来源:互联网 发布:在线视频艾瑞数据排名 编辑:程序博客网 时间:2024/06/04 01:09
通常在接收串口数据时,往往由于发送端发送数据量太快导致接收端无法完全接收发送过来的数据。原因是还没有来得
急处理数据,后面的数据已将前面数据覆盖。所以在处理此问题时,必须用队列的方式处理串口的数据。。即把接收数
据和处理数据分开处理。用缓冲的方法,如下。。
typedef struct
{
unsigned int UsartRxbuf[1000]; //接收串口buf
unsigned int *Usart_IN; //接收串口数据存入的地址
unsigned int *Usart_OUT; //访问接收的串口数据时,访问此地址
unsigned int *Usart_start; //接收串口buf的起始指针
unsigned int *Usart_end; //接收串口buf的结束指针
unsigned int usart_RX_cout; //接收计数器
unsigned int usart_TX_cout; //处理计数器
}Usart_struct;
Usart_struct usartstruct;
void usart_start(Usart_struct *pd)
{
pd->Usart_start = &(pd->UsartRxbuf[0]);
pd->Usart_end = &(pd->UsartRxbuf[1000-1]);
pd->Usart_IN = &(pd->UsartRxbuf[0]);
pd->Usart_OUT = &(pd->UsartRxbuf[0]);
pd->usart_RX_cout = 0;
pd->usart_TX_cout = 0;
}
void usart_Rx(Usart_struct *pd, unsigned int dat) //接收中断调用,dat为接收到的数据
{
*pd->Usart_IN = dat;
pd->Usart_IN++;
pd->usart_RX_cout++;
if(pd->Usart_IN == pd->Usart_end) //当接收串口数据存入的地址为结束指针时返回起始地址
{
pd->Usart_IN = pd->Usart_start;
}
if(pd->usart_RX_cout==1000)
{
pd->usart_RX_cout = 0;
}
}
unsigned int usart_confign(Usart_struct *pd)
{
unsigned int msg;
msg = *pd->Usart_OUT;//读出数据
pd->Usart_OUT++ ;
if(pd->Usart_OUT== pd->Usart_end)
{
pd->Usart_OUT = pd->Usart_start;
}
return msg;
}
void send_RX_TX(Usart_struct *pd )
{
unsigned int msg;
if(pd->usart_RX_cout != pd->usart_TX_cout)
{
pd->usart_TX_cout++;
if(pd->usart_TX_cout == 1000) pd->usart_TX_cout = 0;
msg = usart_confign(pd);
dowith(msg); //访问串口过来的数据
}
}
- 队列方法接收串口的数据
- 串口数据的接收
- 环形队列串口发送接收数据
- 一个串口接收数据的代码
- 改进利用串口的FIFO接收数据
- 一个串口接收数据的状态机
- stm32的串口空闲中断接收数据
- stm32的串口空闲中断接收数据
- 一个简单的串口接收数据程序
- C#对串口数据接收的处理
- 基于C# Winform的串口数据接收
- 多线程串口接收数据 | 全局变量的使用
- 基于C# Winform的串口数据接收
- 串口设备数据的接收和处理
- 比较经典的中断串口接收方法
- 串口中断接收的常见处理方法
- S 串口编程 详解5 串口数据的接收
- S 串口编程 详解5 串口数据的接收
- Linux c 中alarm,signal,pause的使用说明
- 1.python中的列表及其操作
- Random Fern
- Caringorm 框架流程
- textarea是可以设置字体颜色的
- 队列方法接收串口的数据
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- 同义词【含DB_LINK】
- c++虚函数
- C++中Static作用和使用方法
- windows 7下用怎么用EasyBCD 2.0创建ubuntu11.10的启动项
- Ogre 线框模型
- 科学健脑,让IQ更上一层楼
- HDOJ-2243 AC自动机.等比矩阵求和