本文实现功能,利用OneNET应用网页控件控制麒麟座LED。以及一些其他的东西。
首先感谢之前的网友提供了综合程序,我只是在各位的基础上增加了一些东西~
本文献给那些:想利用网页控制麒麟板的小伙伴,生成应用将数据流关联起来,然后再讲指令格式和我程序中的命名方式即可。
程序我也会附上去,我还将附上我的应用链接!!!
程序还有很多不足,欢迎来撕~
等我有空了,我再来一版FreeRTOS的。立帖为证~
应用链接:http://open.iot.10086.cn/appview/p/f632ad83b52343d162954d5e244b7f7b
-------------------------------------------正事儿-----------------------------------------------------
增加了一个小任务,用于控制LED,这个小任务里面有两个功能:a、打开一个呼吸灯;b、用占空比去控制LED灯
1、 任务代码段
- void PWMLED_Task(void *pdata)
- {
- int i;
- while(1)
- {
- if(PwmStatus)//this is the flag for PwmLED Switch
- {
- UsartPrintf(USART1, "WM-LED ON\r\n\r\n");
- for(i=100; i>50; i--)
- {
- bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_7, TIM8, 2,10000, i*100);
- OSTimeDly(10);
- }
- for(i=50; i<=100; i++)
- {
- bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_7, TIM8, 2,10000, i*100);
- OSTimeDly(10);
- }
- }
- else
- {
- UsartPrintf(USART1, "WM-LED OFF\r\n\r\n");
- OSTimeDly(100);
- }
- bsp_SetTIMOutPWM(GPIOC, GPIO_Pin_8, TIM8, 3,10000, (10000-LED_duty*100)); //Control PWMLED Duty
- OSTimeDly(800);
- }
- }
复制代码
2、网页控件的设置以及指令编写(看图例)
3、串口接收程序的解析
增加判断信息,判断信息一定要与下达指令一直不然就接收不到哦
- void OneNetApp(USART_INFO *usartInfo)
- {
- unsigned short i=0;
- uint32_t temp=0;
- UsartPrintf(USART1, "usart2Info.usartCmdBuf--> %s \r\n",usart2Info.usartCmdBuf); //专用调试接收指令打印
- UsartPrintf(USART1, "usart2Info.usartExtBuf--> %s \r\n",usart2Info.usartExtBuf);
- //printf("%s/r/n",usart2Info.usartCmdBuf);
- if(strstr((char *)usart2Info.usartCmdBuf, "Red_Led"))
- {
- if(usart2Info.usartExtBuf[0] == '1') //ץȡ³öÀ´¾ÍÊÇÔÚλÖÃ1ÄǸöµØ·½²ÅÓÐÊý¾Ý
- {
- // ledStatus.Led4Sta = LED_ON;
- // Led4_Set(LED_ON);
- }
- else if(usart2Info.usartExtBuf[0] == '0')
- {
- // ledStatus.Led4Sta = LED_OFF;
- // Led4_Set(LED_OFF);
- }
- OneNet_SendData(kTypeString);
- }
- else if(strstr((char *)usart2Info.usartCmdBuf, "Green_Led"))
- {
- if(usart2Info.usartExtBuf[0] == '1')
- {
- ledStatus.Led5Sta = LED_ON;
- Led5_Set(LED_ON);
- }
- else if(usart2Info.usartExtBuf[0] == '0')
- {
- ledStatus.Led5Sta = LED_OFF;
- Led5_Set(LED_OFF);
- }
- OneNet_SendData(kTypeString);
- }
- else if(strstr((char *)usart2Info.usartCmdBuf, "Blue_Led"))
- {
- if(usart2Info.usartExtBuf[0] == '1')
- {
- ledStatus.Led6Sta = LED_ON;
- Led6_Set(LED_ON);
- }
- else if(usart2Info.usartExtBuf[0] == '0')
- {
- ledStatus.Led6Sta = LED_OFF;
- Led6_Set(LED_OFF);
- }
- OneNet_SendData(kTypeString);
- }
- else if(strstr((char *)usart2Info.usartCmdBuf, "Yellow_Led"))
- {
- if(usart2Info.usartExtBuf[0] == '1')
- {
- ledStatus.Led7Sta = LED_ON;
- Led7_Set(LED_ON);
- }
- else if(usart2Info.usartExtBuf[0] == '0')
- {
- ledStatus.Led7Sta = LED_OFF;
- Led7_Set(LED_OFF);
- }
- OneNet_SendData(kTypeSimpleJsonWithTime);
- }
- else if(strstr((char *)usart2Info.usartCmdBuf, "WMLED"))
- {
- if(usart2Info.usartExtBuf[0] == '1')
- {
- PwmStatus = 1;
- }
- else if(usart2Info.usartExtBuf[0] == '0')
- {
- PwmStatus = 0;
- }
- OneNet_SendData(kTypeString);
- }
- else if(strstr((char *)usart2Info.usartCmdBuf, "LED_Duty"))
- {
- for(i=0;i<usart2Info.usartExtLen;i++)//½«×Ö·û´®ÀàÐÍֵת»»³ÉÊýÖµÐÍ
- {
- temp =temp*10+(uint32_t)(usart2Info.usartExtBuf-'0');
- }
- LED_duty = temp;
- temp = 0;
- OneNet_SendData(kTypeString);
- UsartPrintf(USART1, "LED_duty--> %d \r\n",LED_duty);
- }
- }
复制代码
4、实验现象及解释
a、按钮可以控制,PWMLED的打开和关闭
b、旋钮可以控制LED灯的亮度。由于麒麟座LED的电路采用的是低电平点亮,所以控件上显示66%时,示波器上显示的是高电平34%(可以示波器也可以显示低电平的占空比,我懒得设置了)。
本主题由 lihanliangbilly 于 2016-11-13 23:34 设置高亮
下载附件
2016-9-26 19:58 上传
EDP指令格式
下载附件
2016-9-26 19:55 上传
设计的控件
下载附件
2016-9-26 20:04 上传
指令图例解释
下载附件
2016-9-26 20:08 上传
上传信息更改
下载附件
2016-9-26 20:11 上传
示波器显示
下载附件
2016-9-26 20:16 上传
占空比66%
|