微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于3G手机的视频监控系统设计

基于3G手机的视频监控系统设计

时间:10-08 来源:本站整理 点击:

的初始化OV9650内部寄存器参数的作用, 其数据线SIOD 和时钟线SI-OC, 相当于I2C 总线中的SDA 与SCL。也就是说, SC-CB 起到I2C 总线的作用。OV9650 是I2C 总线的从器件, S3C2440 是对应的主器件。I2 C 总线采用串行方式从高位到低位传输字节数据, 每个字节传输完后, 主控制器将SDA 置为高电平并释放, 等待从设备发送确认信号。OV9650 内嵌了一个10 位A/ D 转换器, 对应有10 个数据输出口D[ 0: 9] 。输出图像数据的格式可以为10 位原始RAW, RGB 或经过内部DSP 转换的8 位RGB/ YCbCr。本系统选择的微处理器芯片S3C2440的CAM IF 单元支持8 位的YU V/ YCbCr 格式, 故需将OV9650 的数据接口D[ 9: 2] 与CAM IF 的数据口CAMDAT A[ 7: 0] 相连接。OV9650 的XVCLK 用于接收CPU 输出的24 MHz 的工作时钟。OV9650 内部产生的帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK 等3 个时钟信号传入ARM 芯片中, 用于控制图像采集。每一个VSYN C 脉冲表示一帧图像数据采集的开始, HREF 的高电平则表示采集一行图像数据, 图像传感器按从左到右的顺序在每个PCLK脉冲过程中依次采集一个字节的数据, 直到一帧图像数据全部采集完成。

  3  3G图片传输流程

  图片传输流程图如图3 所示, 3G 手机向MINI2440开发板发送短信请求发照片, ARM9 控制中心接收到信息,发送出文件名与文件大小, TCP 服务器收到信息接收完图片并关闭窗口, 同时向3G 手机回馈图片已接收完毕的信息, 接着3G 手机向服务器发送请求接收照片, T CP 服务器向3G 手机发送图片数据, 直到图片接收完毕, 当接收完毕, 3G 手机向服务器反馈图片接收完毕。

 

图3 3G 图片传输方案

  有关Micro2440 开发板发送图片及3G 手机接收图片的部分程序如下所示:

  / / TCP 监听

  UINT ListenT hread( vo id * p)

  {

  / / 准备接收请求

  CGSMW_CameraDlg * pDlg = ( CGSMW_CameraDlg* ) p;

  SOCKET s= pDlg??> m_hSo cket;

  CStr ing strFileName = temp; / / 得到文件名

  st rcpy( temp, buffer + i+ 1) ;

  lo ng lFileSize = ato l( temp) ; / / 得到文件大小;

  st rFilePath= " \ 123ARM\ "+ strFileName; / / 进度条操作,接收并保存文件

  CFile file( strFilePath, CFile: : modeCreate | CFile: : mode??Write) ;

  long iTemp = 0;

  while ( 1)

  {

  rcv = r ecv ( s, buffer, 1024, 0) ;

  if ( rcv = = 0)

  {

  break;

  }

  file. Wr ite( buffer, rcv) ;

  iTemp + = rcv ;

  }

  file. Close( ) ;

  send( s, " [ ! %] " , 4, 0) ; / / 发送接收文件结束请求

  int ret1= send( pDlg> m_hSo cket, buffer, iSize, 0) ;

  / / 发送文件的名称和大小

  / / 发送文件

  if ( iEnd= = SOCKET_Error)

  {

  strError. Format( _T( " Send File: %d") , er ro r= WSAGetLast Error( ) ) ;

  AfxM essag eBox ( strErr or) ;

  break;

  }

  iT mp + = iEnd;

  pDlg> m_pro gr ess. Set Pos( iTmp) ;

  Sleep( 10) ;

  / / 判断发送是否成功、结束处理

  if ( iTmp = = lFileSize)

  {

  }

  CSt ring st rTemp= "发送文件结束" ;

  / / 回复对方接收完毕

  pDlg> SendMessag e( NULL, NULL) ;

  pDlg> m_cState. SetWindowTex t( st rTemp) ;

  / / shutdow n( ) ;

  ExitThread( 0) ;

  return 0;

  4  应用软件设计及实验结果

  操作系统与硬件平台间采用虚拟串口进行通信,EVC 在实现串口数据通信中存在2 个局限性: 一是EVC 不支持串口通信控件MScomm, 另一个是WinCE不支持重叠I/ O 操作。因此, 要采用WinCE 的API 函数和多线程技术进行数据串口通信的底层开发[ 10] 。

  Window s API 函数将串口视为文件, 对于串口的操作类似于对于普通文件的操作。在EVC 环境中, 通过调用CreateFile 函数来打开串口, 设置串口读写模式:

  H ANDLE m _ hComm = Cr eateFile ( szPor t, GENERIC _READ| GENERIC _WRIT E, 0, NULL, OPEN _ EXISTING, 0,NULL) ;因为WinCE 不支持重叠I/ O, 所以CreateFile 的第6 个参数不能设置为: FILE _ FLAG _ OVER _LAPPED, 这里设置成通用常数" 0", 否则串行通信处理将被系统信息阻塞。

  打开串口以后, 可以使用串口初始化函数SetCommState( ) 来获取串口当前的配置, 如串口号、波特率、奇偶校验、数据位、停止位等:

BOOL

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top