中级会员
 
- 积分
- 418
- 金钱
- 418
- 注册时间
- 2018-6-6
- 在线时间
- 126 小时
|
2金钱
发送:
if(KEY4==0)
{
delay_ms(50);
if(KEY4==0)
{
//充气
print2("OPEN_S1\r\n",11);LED1(0); printf("正在充气 T1:%d\r\n",T1);
delay_ms(20);
print2("OPEN_S2\r\n",11);LED2(0);
DAC_OUT(0,1.0);
DAC_OUT(1,1.0);
delay_s(T1);
//平衡1
print2("CLOSE_S1\r\n",12);LED1(1);printf("平衡1 T2:%d\r\n",T2);
DAC_OUT(0,0);
DAC_OUT(1,0);
delay_s(T2);
//平衡2
print2("OPEN_S4\r\n",11);LED4(0);printf("平衡2 T3:%d\r\n",T3);
delay_s(T3);
//检测
print2("GET_AD\r\n",10);printf("开始检测 T4:%d\r\n",T4);
if(USART2_RX_STA&0x8000) //包头
{
USART2_RX_STA=0;
if(USART2_RX_BUF[0]==0x00|USART2_RX_BUF[1]==0xaa)
{
voltage_1=USART2_RX_BUF[3]*256+USART2_RX_BUF[4]; //得到AD_CH1的电压
voltage_2=USART2_RX_BUF[5]*256+USART2_RX_BUF[6]; //得到AD_CH2的电压
printf("差压传感器电压为%d V",voltage_1);
printf("直压传感器电压为%d V",voltage_2);
}
}
delay_s(T4);
print2("GET_AD\r\n",10);printf("检测结束\r\n");
if(USART2_RX_STA&0x8000) //包头
{
USART2_RX_STA=0;
if(USART2_RX_BUF[0]==0x00|USART2_RX_BUF[1]==0xaa)
{
voltage_1_now=USART2_RX_BUF[3]*256+USART2_RX_BUF[4]; //得到AD_CH1的电压
voltage_2_now=USART2_RX_BUF[5]*256+USART2_RX_BUF[6]; //得到AD_CH2的电压
printf("差压传感器电压为%d V",voltage_1);
printf("直压传感器电压为%d V",voltage_2);
}
//获得电压 进行计算
//泄压率 L=|C1-C2|/T4 输出L
L=(voltage_1_now-voltage_1)/T4;
printf("%f",L);
}
//排气
print2("CLOSE_S2\r\n",12);LED2(1);printf("排气 T5:%d\r\n",T5);
delay_ms(10);
print2("CLOSE_S4\r\n",12);LED4(1);
delay_s(T5);
printf("测试完成\r\n");
}
}
接收
if(USART2_RX_STA&0x8000)
{
USART2_RX_STA=0;
if(strstr((const char*)USART2_RX_BUF,"OPEN_S1"))
{
L9348_1_IN1=1; //打开通道1
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"CLOSE_S1"))
{
L9348_1_IN1=0; //关闭通道1
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"OPEN_S2"))
{
L9348_1_IN2=1; //打开通道2
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"CLOSE_S2"))
{
L9348_1_IN2=0; //关闭通道2
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"OPEN_S3"))
{
L9348_1_IN3=1; //打开通道3
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"CLOSE_S3"))
{
L9348_1_IN3=0; //关闭通道3
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"OPEN_S4"))
{
L9348_1_IN4=1; //打开通道4
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"CLOSE_S4"))
{
L9348_1_IN4=0; //关闭通道4
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"OPEN_ALL_VALVE"))
{
L9348_1_IN1=1;L9348_1_IN2=1;L9348_1_IN3=1;L9348_1_IN4=1; //打开所有通道
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"CLOSE_ALL_VALVE"))
{
L9348_1_IN1=0;L9348_1_IN2=0;L9348_1_IN3=0;L9348_1_IN4=0; //关闭所有通道
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"RESET"))
{
L9348_1_IN1=0;L9348_1_IN2=0;L9348_1_IN3=0;L9348_1_IN4=0; //关闭所有通道
Usart_SendString(USART2,"OPERATE_OK!\r\n");
}
else if(strstr((const char*)USART2_RX_BUF,"GET_AD"))
{
UartASendStr (send_data, 13);
printf("\r\n");
}
else Usart_SendString(USART2,"error!\r\n");
}
用串口调试助手查看,数据已全部发送出去。
print2()为发送给从机
但是接收端,始终只执行第一条print2()指令。
接收的数组需要没接收一次清除吗?
|
|