首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求高手帮忙:如何将串口采集得到图片数据保存在PC上,显示为图片格式
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangliyang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 17:07:21 楼主
    本人是C++中菜鸟一名。
    我用单片机控制CMOS图像传感器,采集图像,并要在电脑上显示图像,因为对C++不熟系,就只能做到串口采集得到数据这步了,怎么才能把那些数据以图片形式存在电脑上啊??请高手指点!!
    115  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • na_he
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 10:16:231楼 得分:0
    你呢,先熟悉一下bitmap的数据结构,window是用这个来处理图像数据的,你只要按照他的格式来村数据可以了
    这部分的例子很多,你可以搜索一下了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dingsg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 10:54:122楼 得分:0
    楼上说得很好,补充一下:
    查看一下传感器API的说明,看看输出的图片格式是什末,再进行存储。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangliyang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 15:36:193楼 得分:0
    谢谢了,可能是我表述的问题,我在编写单片机程序时我已经将采集的图像文件在串口发送前加上了头文件,(机构是:BMP的位图文件头结构+位图信息头结构+调色板+采集的位图像素数据),然后从BMP的位图文件结构“BM”开始通过串口发出,至到采集的位图最后一帧像素,结束。问题来了:
    因为C++的水平实在太差了,就参照相关书籍基于对话框的MSCOMM控件的例子写了个程序,在对话框的初始化函数定义了串口的参数:

    m_MSComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
    if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
    m_MSComm.SetPortOpen(FALSE);

    m_MSComm.SetCommPort(1); //选择COM2
    m_MSComm.SetInBufferSize(1024); //接收缓冲区
    m_MSComm.SetOutBufferSize(1024);//发送缓冲区
    m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
    m_MSComm.SetInputMode(1);//以二进制方式读写数据
    m_MSComm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
    m_MSComm.SetSettings("115200,n,8,1");//波特率115200,无检验位,8个数据位,1个停止位

    if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
    m_MSComm.SetPortOpen(TRUE);//打开串口
    else
    AfxMessageBox("Open Serial Port Failure!");
    m_MSComm.GetInput(); //先预读缓冲区以清除残留数据


    串口接受数据的部分代码如下:

    ××××××××××××××××××××××××××


    void CMy00Dlg::OnOnCommMscomm1() /*此处为响应接收事件的函数*/

    {
    VARIANT variant_inp;
    LONG len,k;
    switch(m_mscom.GetCommEvent())/*判断是否有数据到来*/
    {
      case 2:
      k=m_mscom.GetInBufferCount(); /*判断接收到的字符*/
      if(k>0)                        /*有数据到来*/
    {variant_inp=m_mscom.GetInput();/*读数据×/

    /**********希望在此添加函数,将读到的数据以BMP格式保存到PC,如何编写×××××/
    注:从单片机采集到的数据以定义了图像BMP的头文件和数据信息
    }
     
      break;

    }
    因为基础差写不了,高手能帮帮吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangliyang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 16:22:364楼 得分:0
    这是我单片机的部分程序:
    ****************************
    createheader(header,352,244);/*创建BMP位图文件头结构*/
        createinfoheader(infoheader,352,244);/*创建位图信息头结构*/
    usart_putnumchars(header, 14);/*向PC串口发送位图文件头结构 14个字节*/
    usart_putnumchars(infoheader, 40);/*向PC串口发送位图信息头结构 40个字节*/
    sendtable();/*向PC串口发送位图调色板颜色表*/
      senddata();/*向PC串口发送图像像素数据*/
    *************************
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved