/* 接收数据回调函数 */
static rt_err_t NetDev_input(rt_device_t dev, rt_size_t size)
{
/* 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 */
rt_sem_release(&NetDev_COM_rx_sem);
return RT_EOK;
}
//NetDev字节读取
static void NetDev_ReadBytes_thread_entry(void *parameter)
{
char ch;
static rt_size_t len;
struct net_msg temp;
int result;
while (1)
{
while (rt_device_read(NetDev, -1, &ch, 1) != 1)
{
if(rt_sem_take(&NetDev_COM_rx_sem, 5) == -RT_ETIMEOUT)
{
len=rt_ringbuffer_data_len(&NetDev_Rx_rb);
if(len>0)
{
//50ms超时收完一帧数据
temp.data_ptr =NetDev_Rx_working_buffer;
temp.data_size=len;
//...
}
rt_ringbuffer_reset(&NetDev_Rx_rb);
rt_sem_take(&NetDev_COM_rx_sem, RT_WAITING_FOREVER);
}
}
rt_ringbuffer_putchar(&NetDev_Rx_rb,ch);
}
}