|
楼主 |
发表于 2012-8-10 11:39:49
|
显示全部楼层
本帖最后由 cjnt007 于 2012-8-10 11:42 编辑
大头BB 发表于 2012-8-10 11:01
我学着你写的程序就单独弄摄像头连接为啥就是没有图像显示啊,能不能讲解一下呃?我自己看了好久都感觉没 ...
你需要我讲哪方面呢,总不能整个代码都说一遍吧。
重点讲下数据接收和分析吧:
获取图像这一块,你可以逐步调试的。
首先在Private Sub WSK_Cam_DataArrival(ByVal bytesTotal As Long)中将接收到的数据打印出来,一看能否接收到数据,二看接收到的数据是否正常。
然后是解析接收到的数据。通过调式代码,是否能找到每帧数据的说明信息(Content-Length:后面跟jpeg图像大小)、帧首标志FFD8。我没有用到帧尾标志(好像是D9FF,有点忘记了,可以用抓包软件看一下),而是通过每帧开始的说明信息中的Content-Length:字符来获取帧中图片数据的大小,然后通过找到FFD8标志为起点来逐字节接收一帧jpeg数据放到jpeg数组中(每一个完整的jpeg数据要分多个批才能接收全)。
再接着,可以将接收到的完整jpeg数据通过以下代码保存到磁盘图片文件中。- filenum = FreeFile
- Open App.Path & "" & Format(Now(), "yyyymmddhhmmss") & ".jpg" For Binary As filenum
- Put filenum, , Jpeg()
- Shot = False
- Close filenum
复制代码 如果能够成功,再进一步通过函数PictureFromBits()把数组图像显示到图片框中。
以上过程我已经封装到clsCamera类中了,你参看我的源码看下如何调用的。
核心流程大概如此,希望你能成功。
|
|