用的是战舰开发板,基础程序是例程里边的摄像机模块(不是照相机),在输入拍摄指令后,LCD停止刷新,此时利用LCD_ReadPoint()函数来读取LCD的色彩值(一直是按照RGB565理解的也不知道对不对),然后将该数据通过串口传输到pc端(一共是153600个byte,每两个表示一个像素的RGB),串口接收的数据也用各种调试工具测试过,没有丢包的现象。在pc端(C#)把该数据转成RGB888并用Graphics显示出来,其中转换RGB用的是如下代码:
[mw_shl_code=c,true]rr = (byte)(Photodata1[2 * k] & 0xf8);
gg = (byte)(Photodata1[2 * k] << 5 | ((Photodata1[2 * k + 1] & 0xe0) >> 3));
bb = (byte)(Photodata1[2 * k + 1] << 3);[/mw_shl_code]
该值通过bmp.SetPixel()函数描76800个点组成图像。
但是最后显示出来首先颜色不对,其次出现了类似断层的情况
以下是显示图:
原图大概是这样:
总之是很奇怪。试了很多次,效果都是一样的,我自己觉得传输中应该没有问题。现在认为可能是(1)用LCD读取的时候读到的值不对;(2)RGB转换的时候出错;(3)pc端显示的时候大小和位置设置不对。别的问题也想不出来了,希望大神帮忙分析一下是什么原因,怎么样能解决,多谢多谢。
|