第17集 串口简单应用 课后小练
这次的视频没加声音😊
程序只要在冲哥的DEMO Usart2_RunTask中加一段即可
- void Usart2_RunTask(void)
- {
- if( Rec_Num >= 6 ) //是否接收到了6位以上的数据
- {
- if(( Rec_Dat[Rec_Num-1] == '\n' ) && ( Rec_Dat[Rec_Num-2] == '\r' ) ) //末尾判断
- {
- if( ( Rec_Dat[Rec_Num-6] == 'O' ) && ( Rec_Dat[Rec_Num-5] == 'P' ) && ( Rec_Dat[Rec_Num-4] == 'E' ) && ( Rec_Dat[Rec_Num-3] == 'N' ) )
- {
- passward[0] = 16;
- passward[1] = 16;
- passward[2] = 16;
- passward[3] = 16;
- Uart2_SendStr( "打开成功!\r\n" );
- }
- else if( ( Rec_Dat[Rec_Num-7] == 'C' ) && ( Rec_Dat[Rec_Num-6] == 'L' ) && ( Rec_Dat[Rec_Num-5] == 'O' ) && ( Rec_Dat[Rec_Num-4] == 'S' ) && ( Rec_Dat[Rec_Num-3] == 'E' ) )
- {
- passward[0] = 17;
- passward[1] = 17;
- passward[2] = 17;
- passward[3] = 17;
- Uart2_SendStr( "关闭成功!\r\n" );
- }
- else if( ( Rec_Dat[Rec_Num-9] == 'D' ) && ( Rec_Dat[Rec_Num-8] == 'A' ) &&( Rec_Dat[Rec_Num-7] == 'T' ) && ( Rec_Dat[Rec_Num-6] == '+' ) && ( Rec_Dat[Rec_Num-5] == '1' ) && ( Rec_Dat[Rec_Num-4] == '2' ) && ( Rec_Dat[Rec_Num-3] == '3' ) )
- {
- passward[0] = 17;
- passward[1] = 1;
- passward[2] = 2;
- passward[3] = 3;
- Uart2_SendStr( "123\r\n" );
- }
- Rec_Num = 0;
- }
- }
- }
复制代码
如果字符比较长,采用与的方式比较两组字符串看起来比较冗长,可以采用字符串比较函数memcmp()来简化,需要包含"string.h"头文件。
- #include "string.h"
- char *S1 = "OPEN\r\n";
- char *S2 = "CLOSE\r\n";
- char *S3 = "DAT+123\r\n";
- void Usart2_RunTask(void)
- {
- if( Rec_Num >= 6 ) //是否接收到了6位以上的数据
- {
- if(( Rec_Dat[Rec_Num-1] == '\n' ) && ( Rec_Dat[Rec_Num-2] == '\r' ) ) //末尾判断
- {
- if(!memcmp(Rec_Dat,S1,6))
- {
- passward[0] = 16;
- passward[1] = 16;
- passward[2] = 16;
- passward[3] = 16;
- Uart2_SendStr( "打开成功!\r\n" );
- }
- else if(!memcmp(Rec_Dat,S2,7))
- {
- passward[0] = 17;
- passward[1] = 17;
- passward[2] = 17;
- passward[3] = 17;
- Uart2_SendStr( "关闭成功!\r\n" );
- }
- else if(!memcmp(Rec_Dat,S3,9))
- {
- passward[0] = 17;
- passward[1] = 1;
- passward[2] = 2;
- passward[3] = 3;
- Uart2_SendStr( "123\r\n" );
- }
- Rec_Num = 0;
- }
- }
- }
复制代码
demo.zip
(208.91 KB, 下载次数: 22)
|