本文整理汇总了C++中USART::ClearReceiveBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ USART::ClearReceiveBuffer方法的具体用法?C++ USART::ClearReceiveBuffer怎么用?C++ USART::ClearReceiveBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类USART
的用法示例。
在下文中一共展示了USART::ClearReceiveBuffer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
bool MHZ14::Updata()
{
//向模块发送获取数据
CO2.SendData(Command_getvalue,9);
//判断是否有数据返回
if(CO2.ReceiveBufferSize()<9)
{
CO2.ClearReceiveBuffer(); //清空接收缓存
return false;
}
else
{
CO2.GetReceivedData(rev_buffer,9); //取出一帧数据
CO2.ClearReceiveBuffer(); //清空接收缓存
if(SumCheck(rev_buffer)==false) //校验和
return false;
else
{
DATA_H=rev_buffer[2];
DATA_L=rev_buffer[3];
CO2_Concentration=rev_buffer[2]*256+rev_buffer[3]; //计算浓度
return true;
}
}
}
示例2: GetStateOrder
//监听一个端口,返回一个命令
u8 Transmission::GetStateOrder(USART &ListeningCOM)
{
u8 comand[8]={0};
u8 ch=0;
u8 num = ListeningCOM.ReceiveBufferSize();
if(num>7) //一帧命令包含8个字节
{
ListeningCOM.GetReceivedData(&ch,1);
if(ch == 0xFF)
{
ListeningCOM.GetReceivedData(&ch,1);
if(ch == 0xDD)
{
while(ListeningCOM.ReceiveBufferSize()<6);//等待数据
comand[0]=0xff;
comand[1]=0xDD;
ListeningCOM.GetReceivedData(comand+2,6);
ListeningCOM.ClearReceiveBuffer();
return CommandParsing(comand); //解包
}
else return 0;
}
else
return 0;
}
else
return 0;
}
示例3: main
int main()
{
u8 command[6];
u8 datatemp[18];//数据暂存
u8 tagInfo[18];
u8 sensor[16];//保存传感器型号
u8 basic_information[6];//基础信息
u8 version[16];//版本
tskmgr.DelayMs(1000);
tskmgr.DelayMs(1000);
//设置模式
//设置名字密码
//设置IP地址
//复位
WIFI.SendData(CLOSS,6); //关闭回显
tskmgr.DelayMs(1000);
WIFI.SendData(Command1,13); //开启多路连接
tskmgr.DelayMs(1000);
WIFI.SendData(Command2,21); //开启服务器模式
tskmgr.DelayMs(1000);
equipment[0]=2;//测试用 将设备二加入
// DATA_COM.SendData(c,8); //连续发送命令
while(1)
{
//接收从模块数据
if(DATA_COM.ReceiveBufferSize()>=40) //如果接收到了一帧数据
{
u32 check=10,moduleNo;
u8 sum=0;
u8 FFAA=0;
DATA_COM.GetReceivedData(&FFAA,1); //找包头
if(FFAA==0xff)
{
DATA_COM.GetReceivedData(&FFAA,1); //找包头
if(FFAA==0xcc)
{
DATA_COM.GetReceivedData(datatemp,18);
moduleNo=datatemp[0]+datatemp[1]+datatemp[2]+datatemp[3];
for(u8 i=0;i<10;i++) //查询是否有这个设备
{
if(moduleNo==equipment[i])
check=0;//有这个设备
}
for(u8 i=0;i<16;i++)
{
sum+=datatemp[i]; //j校验和
}
sum=sum+0XCB; //加上包头
if(sum==datatemp[17])
check=check+1;
//使用WIFI发送数据给上位机
if(check==1)
{
WIFI.SendData(Command3,17);
tskmgr.DelayMs(100);
WIFI.ClearSendBuffer();
WIFI.SendData(packgroup.MAINToUser(datatemp[5],datatemp[6],datatemp[7],moduleNo,datatemp[4]),20);
tskmgr.DelayMs(100);
WIFI.ClearReceiveBuffer();//清除接收缓存
WIFI.ClearSendBuffer(); //清除发送缓存
}
}
}
}
//从上位机得到命令()
if(WIFI.ReceiveBufferSize()>40)
{
u8 ch=0;
u8 temp_cmd;
u32 temp;
//test
while(WIFI.ReceiveBufferSize()>8)
{
WIFI.GetReceivedData(&ch,1);
if(ch==0xff)//判断包头
{
WIFI.GetReceivedData(&ch,1);
if(ch==0xdd)//判断包头
{
//得到指令
WIFI.GetReceivedData(command,6);
WIFI.ClearReceiveBuffer();
temp_cmd=command[4]; //得到命令位
temp=command[0]+command[1]+command[2]+command[3];//得到设备号
//命令处理
if(temp_cmd==0XAA)//如果命令是注册
{
//读取RFID 将结果给上位机*********************************************
//.........这里部分代码省略.........
示例4: main
int main(){
u8 order=0;
double record_updataSensor=0;
double record_alive=0;
double record_getwifi=0;
bool network=false ; //网络连接标识位
char *ip = (char*)calloc(15, sizeof(char*) );
char *WifiName = (char*)calloc(20, sizeof(char*) );
char *WifiPassword = (char*)calloc(20, sizeof(char*) );
/*开机WIFI模式选择*****************************************************************/
if(wifimemory.getWifiSum()!=0)//判断表中是否已经保存wifi信息
{
while( wifimemory.Load(WifiName,WifiPassword) )
{
if(wifi.ConnectNetwork_client(WifiName,WifiPassword,SERVER_IP,1111)) //每次连接历时20秒
{network=true; break;}
}
if(network ==false) {
wifi.ConnectNetwork_server(MODULE_COM,0);
WIFI.ClearReceiveBuffer();
}
}
else
{
wifi.ConnectNetwork_server(MODULE_COM,0);
WIFI.ClearReceiveBuffer();
}
Led.SetLevel(1);//将指示灯熄灭(模式切换结束)
/*END*********************************************************************************/
while(1)
{
order=CMCT_Tool.GetStateOrder(WIFI);
switch(order)
{
case DELAY:{}break;
/*启动********************************************************************************************/
case START:{//启动
while(1){
if(tskmgr.ClockTool(record_updataSensor,3)) //每三秒执行一次更新
{
co2.Updata();
if(network)
wifi.Send(20,CMCT_Tool.ToServerPack(CO2Number,co2.DATA_H,co2.DATA_L,0));
else
wifi.Send(0,20,CMCT_Tool.ToClientPack(CO2Number,co2.DATA_H,co2.DATA_L,0));
}
if(CMCT_Tool.GetStateOrder(WIFI)==DELAY)
break;
}
}break;
/*END********************************************************************************************/
/*复位******************************************************************************************/
case RESET:{//复位
wifimemory.ClearAllData(); //清空所有保存信息
*((u32 *)0xE000ED0C) = 0x05fa0004;
}break;
/*END******************************************************************************************/
/*获取WIFI信息*********************************************************************************/
case GETWIFI:{//得到wifi账号密码
record_getwifi=tskmgr.Time();
while(1)
{
if(CMCT_Tool.GetWifiNameAndPassword(WifiName,WifiPassword,WIFI) )
{
//保存WIFI账号密码
com<<WifiName<<"\t"<<WifiPassword<<"\n";
break;
}
if(tskmgr.ClockTool(record_getwifi,30)) //超时10秒退出
break;
}
}break;
/*END******************************************************************************************/
/*模式切换*************************************************************************************/
case MODEL:{//模式切换
wifi.ConnectNetwork_server(MODULE_COM,0);
WIFI.ClearReceiveBuffer();
network=false;
}break;
/*END******************************************************************************************/
/*存活确认*************************************************************************************/
case ALIVE:{//存活确认
if(network)
CMCT_Tool.SendAlive(wifi,CO2Number,1); //存活确认,数据位全为0xff
else
CMCT_Tool.SendAlive(wifi,CO2Number,0);
}break;
/*END******************************************************************************************/
/*常态******************************************************************************************/
default:
{
if(tskmgr.ClockTool(record_updataSensor,3)) //每三秒执行一次更新
//.........这里部分代码省略.........