1.项目背景
通过串口实时传输下位机造的一帧图像数据,然后利用qt编写上位机,实现图像数据的实时显示,并保存任意帧数据。
2.效果展示
3.下位机代码
#include "bsp_clk.h"
#include "bsp_delay.h"
#include "bsp_led.h"
#include "bsp_beep.h"
#include "bsp_key.h"
#include "bsp_int.h"
#include "bsp_uart.h"
#include "bsp_lcd.h"
#include "bsp_lcdapi.h"
#include "bsp_rtc.h"
#include "stdio.h"
#include "bsp_ap3216c.h"
#include "bsp_spi.h"
#include "bsp_icm20608.h"
/*
* @description : main函数
* @param : 无
* @return : 无
*/
int main(void)
{
unsigned char state = OFF;
int_init(); /* 初始化中断(一定要最先调用!) */
imx6u_clkinit(); /* 初始化系统时钟 */
delay_init(); /* 初始化延时 */
clk_enable(); /* 使能所有的时钟 */
led_init(); /* 初始化led */
beep_init(); /* 初始化beep */
uart_init(); /* 初始化串口,波特率115200 */
lcd_init(); /* 初始化LCD */
lcd_show_string(50, 10, 400, 24, 24, (char*)"ALPHA-IMX6U UART TEST 06");
int frameSize = 120 * 90;
char frameHead = '\x8E';
char frameTail = '\x8F';
while(1)
{
/*发送一帧数据 120*90*/
/*
1.帧头 '\x8E'
2.数据 rgb
3.帧尾 '\x8F'
*/
putc(frameHead);
int count = 0;
unsigned char r = 0x80;
unsigned char g = 0;
unsigned char b = 0;
while(1){
if(count >= frameSize){
break;
}
putc(r);
putc(g);
putc(b);
count++;
}
putc(frameTail);
state = !state;
led_switch(LED0,state);
delayms(1000);
}
return 0;
}
4.下位机代码
4.1 串口接收数据
4.2 绘制图像
4.3 保存图像