基于C语言实现的单片机传输的VGA图像数据生成bmp文件

基于C语言实现的单片机传输的VGA图像数据生成bmp文件

参考硬件:stm32(但其实是个能带动ov7725有串口的单片机就行)、ov7725,上位机(电脑)
实现原理:ov7725通常输出QVGA/VGA的240*320图像,一个像素点由RBG565(16bits)表示,但常用的电脑bmp像素由BGR888构成(又称bmp24),这需要小小的进行一下像素点的数据处理,然后就是编写电脑串口和bmp文件头实现串口数据接收以及自动生成bmp
建议搜索查阅:因为有点想偷懒,把编写时涉及到的知识点罗列一下(当初在csdn一个个查的,都可以查到很好的解说昂),不再详细解说,见谅

  1. c语言实现rgb565转bmp24(实现像素点的格式变化)
  2. c语言调用windows自带库编写串口(实现串口在c语言里的调用,可以存到想存的数组里,不然你把数据用串口助手传到txt里面还真不好弄,他那个是utf8格式)
  3. c语言生成bmp文件(教你打造bmp文件头,bmp24的文件头最简单了,所以建议先做好数据处理)
  4. 其他

下面是程序代码,需要更改的地方我用中文表达出来了

#include <stdio.h>  
#include <windows.h>
#include   <stdlib.h>
#include <string.h>  
#include <conio.h>  
#include <winnt.h>  
#include "rgb2bmp.h"
int main()
{
   
int cnt;
//char* txtfile="C:\\Users\\17001\\Desktop\\compare2.txt" ;
DWORD dwLength;//unsigned long 
unsigned short recvBuf[76800];//定义一个x个16位的数组 
DWORD dwactlen;//unsigned long 
char psendbuf[32] = "test\n";//定义字符串数组 
char ch;//定义字符型变量ch 
DCB myDCB;//结构体数组,常用来定义串口 
HANDLE m_hComm;//定义一个句柄 
m_hComm = CreateFile(
"COM3:",//要打开的文件的名字 (修改为com3) 
GENERIC_READ | GENERIC_WRITE,   //对设备允许读和写  
0,                          //独占方式(非共享模式)  
NULL,
OPEN_EXISTING,              //打开而不是创建(创建方式),要求文件必须已存在  
0,
NULL
);
if (m_hComm == (HANDLE)-1)                          //打开串口失败返回  
{
   
printf("打开串口失败");
return 0;
}
//得到打开串口的当前属性参数,修改后再重新设置串口。  


if (!GetCommState(m_hComm, &myDCB))
{
   
printf("GetCommState error");
return FALSE;
}


//设置串口参数  
myDCB.BaudRate = CBR_115200;   // 设置波特率115200  
myDCB.fBinary = TRUE; // 设置二进制模式,此处必须设置TRUE  
myDCB.fParity = NOPARITY; // 修改为无奇偶校验 
myDCB.fOutxCtsFlow = FALSE;  // No CTS output flow control  
myDCB.fOutxDsrFlow = FALSE;  // No DSR output flow control  
myDCB.fDtrControl = DTR_CONTROL_DISABLE; // No DTR flow control  
myDCB.fDsrSensitivity = FALSE; // DSR sensitivity  
myDCB.fTXContinueOnXoff = TRUE; // XOFF continues Tx  
myDCB.fOutX = FALSE;     // No XON/XOFF out flow control  
myDCB.fInX = FALSE;        // No XON/XOFF in f
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kejane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值