新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于S3C2410的嵌入式图象传输系统设计

基于S3C2410的嵌入式图象传输系统设计

作者:时间:2012-05-17来源:网络收藏

截取图象方法有两种:直接读取设备文件和内存影射的方法,本文采用后面一种。采用这种方法后,普通文件被映射到内存地址空间,进程可以象访问普通文件一样访问内存,这样做的一个好处是可以提高效率。做视频截取的两个主要函数是:

ioctl(vd->fd, VIDIOCMCAPTURE, (vd->mmap)) 若调用成功,开始一副图象的截取。是否截取完毕留给VIDIOCSYNC来判断。

ioctl(vd->fd, VIDIOCSYNC, frame) 若调用成功,表明一帧截取已完成。可以开始做下一次截取

对于网络发送部分,主要是linux下的socket编程,调用的主要函数有:创建套接字函数socket、端口绑定函数bind、监听函数listen、等到连接函数accept、数据接收函数read、数据发送函数write等。这些函数的具体定义和用法具体可以查阅相关资料。需要说明的是为了能够正确发送一帧数据,要把定义的帧的结构体设置为单字节对齐,具体方法是在结构体的定义后面加上 _attribute_((packed))。

多线程编程部分用到的主要函数有:互斥量初始化函数pthread_mutex_init、互斥量锁定函数 pthread_mutex_lock、互斥量解锁函数pthread_mutex_unlock、互斥量注销函数pthread_ mutex _destroy、线程创建函数pthread _ create、线程同步函数pthread_join。此外,程序中为了能更好的实现两个进程的同步,还需要用到信号量机制的一些内容。受篇幅所限,这些函数的具体定义和用法请参考相关资料 。

3.2 客户机端软件系统设计

客户端是建立在一台PC机上,用Visual C++ 6.0设计一个基于MFC的界面作为接收端。在接收端主要完成从网络缓冲区内读取数据,并保存成文件的形式,文件以接收到数据的时间为名。图2为时间间隔为1秒时程序执行的结果。图象大小为320 象素。需要说明的是:服务器端发送的数据采用了单字节对齐,对应的在客户端接收的时候也要采用单字节对齐。在WINDOWS下实现内存单字节对齐的方法是在定义的帧结构体前面加上#pragma pack (1),并在其定义之后加上#pragma pack ()。

图2 客户端程序执行结果(1秒种采集一次图象)

4 结束语

本文提出了一套基于S3C2410平台和linux系统的嵌入式、传输系统的具体实现,并给出了实验结果。实验结果证明:系统很好的完成了和传输。得到的图象清晰。服务器可以稳定运行,不会发生断开或退出的现象。本系统可应用于工业现场的监控,也可以与其他系统如门禁系统相结合获得门开或关时现场的重要图象数据。

参考文献

[1] Alessandro Rubini著 LISOLEG译,linux设备驱动程序开发,中国电力出版社,2002

[2] 乔晓丹张鹏,一个基于Linux操作系统的嵌入式网关的实现,微计算机信息,2005年第21卷第7-2期

[3] 朱刚 等,Linux,科学出版社,2000.

[4] 于明俭 等,linux程序设计权威指南 机械工业出版社 2001.

[5] http://mxhaard.free.fr/embedded.html


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭