EDN China > 设计实例 > 工业电子 > 安防监控 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于ARM 的远程无线监控系统的设计与实现

今日电子 彭畑 张文普 牟宇飞?? 2011年08月05日 ?? 收藏0

? 图像采集流程图

图4 图像采集流程图

  在/usr/local/man/manl目录下会生成cjpeg.l、djpeg.l、jpegtran.l、rdjpgcom.l、wrjpgcom.l、snapscreenshop.l六个文件,在/usr/local/arm/3.4.3/arm-linux/lib目录下会生成libjpeg.a、libjpeg.la、libjpeg.so、 libjpeg.so.62、libjpeg.so.0.0五个函数库,libjpeg.so.62、libjpeg.so.0.0就是我们需要的库,将它拷贝到arm-linux里,这样ARM就支持JPEG压缩格式的图像。图像压缩的一些重要函数如下:

char *filename = "first.jpeg";//指定压缩后的图像所存放的目标文件
struct jpeg_compress_struct cinfo;//申请并初始化JPEG压缩对象
struct jpeg_error_mgr jerr; // 声明错误处理器
JSAMPROW row_pointer[1];? // 一行位图
int? row_stride;? // 每一行的字节数
int line; //每一列的字节数
jpeg_create_compress(&cinfo);
cinfo.image_width = width;????? // 图像的宽、高和深度
cinfo.image_height = height;
cinfo.input_components = depth;
cinfo.in_color_space=JCS_RGB;// 彩色图像
jpeg_set_quality(&cinfo, JPEG_QUALITY, TRUE ); // 设定压缩质量
cinfo.dct_method=JDCT_FASTEST;? // DCT离散余弦变换
jpeg_start_compress(&cinfo, TRUE); //开始进行JPEG图像压缩
while (cinfo.next_scanline < cinfo.image_height)//对每一行进行压缩
jpeg_destroy_compress(&cinfo); //释放压缩工作过程中所申请的资源

  采集到的图像如图5所示。如果要进行连续帧的采集由grab_fd.frams来确定需要采集的帧数,最多支持一次采集32帧。

采集的图像

图5 采集的图像

  GPRS DTU通过全功能串口与ARM开发板相连接,在arm-linux的指令调度下将ARM采集到的图像通过串口通信传输到GPRS DTU。arm-linux是通过设备文件访问串口的,在访问具体的串行端口时,只需打开相应的设备文件即可。串行端口Port1和Port2对应的设备文件分别为/dev/ttyS0和/dev/ttyS1。若要使用串口进行通信必须在通信两端设置好串口的属性,包括数据传输的波特率、传输的数据格式、是否有奇偶校验位、流控方式等。在Linux下进行串口设置,涉及一个重要的数据结构struct termios,设置串口波特率struct termios Opt,设置串口数据位

  struct termios Opt;
??? Opt.c_cflag &= ~CSIZE; //屏蔽字符大小位
??? Opt.c_cflag |= ~CS8;??? //选择8位数据位

  设置串口校验位与此相关的宏定义有:

  #define PARENB? 0000400? //PARENB控制是否使能奇偶校验
#define PARODD? 0001000? //PARODD控制使用奇校验还是偶校验

  设置串口停止位与停止位相关的宏定义只有CSTOPB,设置termios结构的.c_cflag成员即可。

 #define CSTOPB 0000100
? Opt.c_cflag &= ~CSTOPB; //1位停止位
?Opt.c_cflag |= ~CSTOPB; //2位停止位

  设置串口波特率:


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

ARM? 无线监控? PXA270?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈