陶晶驰串口屏幅频特性曲线绘制/STM32F407与串口屏通信
创始人
2024-12-14 10:07:44
0
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {  //	HAL_UART_Receive_IT(&huart1, (uint8_t *)Buffer, 1); 	if(huart->Instance == USART1)     { 		RxLine++;                      //每接收到一个数据,进入回调数据长度加1 		DataBuff[RxLine-1]=RxBuff[0];  //把每次接收到的数据保存到缓存数组      		if(RxBuff[0]==0xf0)                //接收结束标志位,这个数据可以自定义,根据实际需求,这里只做示例使用,不一定是0xff 		{ 			 			DataBuff[RxLine-1] = '\0'; 			RxLine=0;  //清空接收长度 			frequency = atof((char*)DataBuff); 		    Freq_start = frequency; 		printf("page0.t0.txt=\"%.3f\"\xff\xff\xff",frequency); 		}  		else if(RxBuff[0]==0xf1)            //接收结束标志位,这个数据可以自定义,根据实际需求,这里只做示例使用,不一定是0xff 		{ 			 			DataBuff[RxLine-1] = '\0'; 			RxLine=0;  //清空接收长度 			frequency = atof((char*)DataBuff); 		    Freq_rate = frequency; 		printf("page0.t1.txt=\"%.3f\"\xff\xff\xff",frequency); 		}  		else if(RxBuff[0]==0xf2)            //接收结束标志位,这个数据可以自定义,根据实际需求,这里只做示例使用,不一定是0xff 		{ 			 			DataBuff[RxLine-1] = '\0'; 			RxLine=0;  //清空接收长度 			frequency = atof((char*)DataBuff); 			Freq_stop = frequency; 			if(Freq_stop < Freq_start)		//倘若频率设置不符合规范,复位为初始值 			{ 				Freq_start = 5000; 				Freq_rate  = 100; 				Freq_stop  = 20000;  			} 			printf("page0.t2.txt=\"%.3f\"\xff\xff\xff",frequency); 		}  		RxBuff[0]=0; 		HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuff, 1);     }      }    

串口屏与单片机通信

        单片机发送

一.发送文本

 在串口重定向后,可以直接使用printf发送字符串,当要与陶晶驰串口屏通信时,须在字符串后加上\xff\xff\xff作为后缀

例如

printf("page0.t2.txt=\"%.3f\"\xff\xff\xff",frequency);

意为使串口屏的page0页面的t2文本控件显示frequency的数值[此处是将浮点数类型转换为文本]

二.绘制直线
	//串口屏绘制幅频响应曲线 	printf("page page1\xff\xff\xff"); 	HAL_Delay(5); 	 	for(i = 0;Freq_start + i*Freq_rate < Freq_stop;i++) 	{ 		frequency = Freq_start*k*1.0 + i*Freq_rate*k*1.0; 		printf("line %d,%d,%d,%d,%d\xff\xff\xff", (int)(x_begin+log10(frequency)*x_step), (int)(y_begin-10*i), (int)(x_begin+log10(frequency+Freq_rate*k)*x_step), (int)(y_begin-10*i-10), color);  	}

page page1表示切换串口屏显示界面至page1

line %d,%d,%d,%d,%d表示在两个点之间绘制一条直线,五个数字分别表示第一个点的个、横竖坐标、第二个点的横竖坐标、绘制直线的[具体参见陶晶驰官网tjc1688.com]

都要有\xff\xff\xff作为后缀

         单片机接收

以串口屏触摸按键发送键值为例

 按下按键后令串口屏发送0xA,单片机在串口中断回调函数中判断是否接收到了0xA字符,若接收到,则判定为发生按键所指向事件

[参考代码]

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {     if(huart->Instance == USART1)     { 		if(*Buffer == 0x75) 			printf("page0.t2.txt=\"hello\"\xff\xff\xff"); 		else if(*Buffer == 0x65) 			printf("page0.t2.txt=\"world\"\xff\xff\xff");     } 	HAL_UART_Receive_IT(&huart1, (uint8_t *)Buffer, 1); }

         简易数字设置界面

 要实现在串口屏输入数字并显示以及将数据传输给单片机处理,可以使用触摸热区来实现,即触摸屏幕的特定位置触发串口屏执行特定任务,功能类似按键

t0.txt=t0.txt+"2"

在触摸“2”位置后,使t0位置的字符串加上“2”

按了“确定”后,将t0的文本统一发送给单片机

由于发送的数字长度不一定,所以可以设定结束标识位来实现串口的不定长接收

[参考代码]

prints t0.txt,8 if(page0.va0.val==0) {   page0.t0.txt=t0.txt   printh f0 }else if(page0.va0.val==1) {   page0.t1.txt=t0.txt   printh f1 }else if(page0.va0.val==2) {   page0.t2.txt=t0.txt   printh f2 } page page0

上述代码为按了“确定”按键后串口屏的执行流程

prints t0.txt,8表示将t0的文本发送给单片机

printh f0发送0xf0表示当前字符串发送结束

相关内容

热门资讯

八分钟总结!陕西三代二破解(辅... 八分钟总结!陕西三代二破解(辅助挂)一贯存在有挂,规律教程(有挂解密)-哔哩哔哩1、陕西三代二破解透...
七分钟脚本!掌酷天天开心辅助器... 七分钟脚本!掌酷天天开心辅助器,新道游辅助,好像有挂(有挂详细)-哔哩哔哩;1)掌酷天天开心辅助器辅...
第2分钟普及!凑一桌游戏辅助器... 第2分钟普及!凑一桌游戏辅助器怎么安装(辅助挂)都是是有挂,规律教程(有挂秘笈)-哔哩哔哩凑一桌游戏...
第2分钟工具!花花生活圈第三方... 第2分钟工具!花花生活圈第三方工具,赣牌圈小程序破解版,竟然有挂(了解有挂)-哔哩哔哩暗藏猫腻,小编...
5分钟揭露!赣牌圈控制牌型(辅... 5分钟揭露!赣牌圈控制牌型(辅助挂)原来真的有挂,专业教程(发现有挂)-哔哩哔哩赣牌圈控制牌型辅助器...
第1分钟教你!微信茶馆辅助(辅... 第1分钟教你!微信茶馆辅助(辅助挂)原来是有挂,分享教程(竟然有挂)-哔哩哔哩1、起透看视 微信茶馆...
第4分钟脚本!决战卡五星游戏辅... 第4分钟脚本!决战卡五星游戏辅助器,微友辅助神器下载,一贯真的有挂(有挂头条)-哔哩哔哩1)决战卡五...
第二分钟外挂!欢乐茶馆免费辅助... 第二分钟外挂!欢乐茶馆免费辅助器(辅助挂)本来是真的挂,wpk教程(有挂技巧)-哔哩哔哩1、用户打开...
第七分钟插件!游戏辅助器免费版... 您好,悟空大厅免费辅助器这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多...
第二分钟了解!佛手大菠萝破解版... 第二分钟了解!佛手大菠萝破解版ios(辅助挂)原来存在有挂,可靠技巧(有挂头条)-哔哩哔哩1、进入游...