


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文由zzp105贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 学界 气象、 防雷、 通信、 通讯与电子 基于 VC+ 的多线程技术在串行通信中的应用 胡晓晖 摘 1 周卫星 薛云 要: 介绍了 BD30AV 视音频延时器的主要功能以及 Visual C+中的多线程技术, 并采用控件 Mscomm 实现了 BD30AV 视音频延时 器与 PC 之间串行通信。 关键词: BD30AV 视音频延时器; 串行通信; 多线程; Visual C+ 1 BD30AV 视音频延时器 BD30AV 视音频延时器系列产品适用于各类电视台的播 制作、 现场传送和各级有线网络传输等部门, 以及各级数字 出、 电视和数字卫星的网络运营商和服务提供商等。它被广泛应用 于卫星转播及现场直播等场合,以确保播出信号的安全性、 可 稳定性。 靠性、 BD30AV 视音频同步延时器是一个具有高品质、 宽频带时 基校正和帧同步功能的延时器, 它的延时时间可由 0 到 180 秒 逐帧步进调整 (原厂标准配置延时时间为 30 秒) 。可兼容全部 的嵌入、 数字和模拟视音频接口输入、 (包括: 输出 数字嵌入式 视音频信号、 数字 SDI 视频、 模拟复合视频信号, 及数字 AES/ EBU 音频、模拟立体声平衡 XLR 音频信号的任意信号接口的 ) 内置 32 比特全数字 DSP 芯片处理和 10Bits 高指 输入/输出 , 标、 宽频带时基校正和帧同步, 内置高品质的视音频信号数/模、 模/数互相转换功能, 能进行优秀的自动增益控制 AGC 和 CGC 功能及高品质的颜色调整, 也提供了标准的 RS-232 遥控协议 接口, 方便与外部控制系统或计算机相连。 本文在 VC+的平台上, 通过 RS232 串行通信接口, 实现了 用微机来控制多个 BD30AV, 使其能实现对多个电视频道的控 制。 (BD30AV 系统连接框图如图 1 所示 ) 2 BD30AV 系统 0x02,送行相位数据。data0= 0,38&204,255 0x03,送 SC 相位数据。 data0= 0,255 0x04,送锁相 (GenLock 信息。data0= 0,1(0=Int;1=Auto) ) 0x05,送 AGC 信息。data0=0,1 (0=Off;1=On) 0x06,送亮度延时数据。data0=0,15 0x07,送对比度数据。 data0=0,228 0x08,送色度增益数据。 data0=0,228 0x09,送亮度增益数据。 data0=0,228 0x10,送视频模式(TV/VCR)信息。data0=0,1,2(0=TV;1= VCR;2=Auto) 0x11,送音频偏置数据。data0=0,48 “重载默认值” 信息。 data0= Y Y( =Load Defult) 0x12,送 0x13,送 Bypass 信息。data0=0,1(1=Bypass,0=Cancel By pass) 0x14,送 Spare 信息。data0=0,1(1=Spare;0=Cancel Spare) 0x15,保留 0x16,保留 0x17,保留 0x18,保留 0x19 保留 数据内容: data0,data1,data2. 检验和: 数据包长度信息 + 命令标志符 (2 字节) 格式: 0xAA+ 数据包长度信息+ 命令标志符+ data0+data1+da ta2+.+ 检验和 4 VC+对于多线程的支持 在很多工业控制系统中,常通过扩展串口连接多个外 设, 因各外设发送数据的重复频率不同, 而且要求后台实时 无差错捕捉、 采集、 处理、 记录各端口数据, 这就需要在自定 义的串行通信类中创建端口监视线程, 以便在指定的事件发 生时向相关的窗口发送通知消息。 在 VC+6.0 下, MFC 应用程序的线程由 CWinThread 对 象表示。 Win 32 区分两种不同类型的线程, 一种是用户界面 线程 UI User Interface Thread ,它包含消息循环或消息泵, ( ) 用于处理接收到的消息; 另一种是工作线程 (Work Thread , ) 它没有消息循环, 用于执行后台任务。用于监视串口事件的 线程即为工作线程。 程序一般不需要直接创建 CWinThread 对象,通过调用 AfxBeginThread( )函数就会自动创建一个 CWinThread 对象, 从而开始一个进程。创建上述的两种线程都利用AfxBeginThread ( )函数。 线程的终止取决于下列事件之一: 线程函数返回; 线程调 用 ExitThread ( ) 退出;异常情况下用线程的句柄调用 Termi 图 1 BD30AV 系统连接框图 3 BD30AV 通信协议 数据头:0xAA 数据包长度信息:LENGTH = n, (n=6 ) 命令标志符: 0x01,送延时数据。 data0= 0,7;data1= 0,24 1 本项目受广东省科技计划工业攻关项目资助,项目编号:2008B010200042 ,2009B010800051 ,2009B010900056 58 广东科技 2010.1 总第 229 期 气象、 防雷、 通信、 通讯与电子 学界 nateThread( )退出; 线程所属的进程被终止。 工作者线程倾向于琐碎的处理, 用户界面线程则具有自己 的界面而且实际上类似于运行其他应用程序。多线程的实现可 以使得各端口独立, 准确地实现串行通信, 使串口通信具有更 广泛的灵活性与严格性, 且充分利用了 CPU 时间。 本系统中, 计 算机通过串口循环扫描多台 BD30AV, 以提供给工作人员需查 后 询和监控的各个电视台的信息。前者通过工作者线程实现, 者则需通过用户界面线程显示, 如两者没有处理好很容易引起 死机的现象。 Cmutex: 互斥量对象, 一个时刻至多只允许一个线程访问 某资源, 未被占用时处于有信号状态, 可以实现对共享资源的 互斥访问。 CEvent: 事件对象, 用于使一个线程通知其他线程某一事 件的发生, 所以它也可以用来封锁对某一资源的访问, 直到线 程释放资源使其成为有信号状态。适用于某一线程等待某事件 发生才能执行的场合。 CCriticalSection: 临界区对象, 将一段代码置入临界区, 只 允许最多一个线程进入执行这段代码。一个临界区仅在创建它 的进程中有效。 5 MScomm 控件 VC+是可视化面向对象的编程环境,提供了串行通信 ActiveX 控件 MSCOMM, 可以真正把串口看作一个对象。 该控件 的相应文件是 MSCOMM32.OCX,它提供了一系列标准通信命 令的使用接口, 利用它可以建立与串口的连接, 并可以通过串 口连接到其他通信设备 (如调制解调器) 发出命令, , 交换数据 MSCOMM 控件 以及监视和响应串行连接中发生的事件和错误。 提供了两种处理通信的方式: (1 事件驱动方式。 ) 当通信事件发生时, MSCOMM 控件会触 发 OnComm 事件,调用者可以捕获该事件,通过检查其 Com mEvent 属性便可确认发生的是哪种事件或错误, 从而进行相应 可靠性高。 的处理。这种方法的优点是响应及时、 (2 查询方式。在程序的每个关键功能之后, ) 可以通过检查 CommEvent 属性的值来查询事件和错误。 在使用 MSCOMM 控件时, 个 MSCOMM 控件只能同时对 1 那么必 应 1 个串口。如果应用程序需要访问和控件多个串口, MSCOMM 控件只对应 须使用多个 MSCOMM 控件。在 VC+中, 着 1 个 C+类-CMSComm。由于 MSCOMM 控件本身没有提供 ( 成员函数外, 其他的函数 方法, 所以 CMSComm 类除了 Create ) 都是 Get/Set 函数对, 用来获取或设置控件的属性。 MSCOMM 控 用来向调用者通知有通信事件发 件也只有 1 个 OnComm 事件, 生。MSCOMM 控件有许多属性, 限于篇幅只给出几个较为重要 和常用的属性。如 CommPort: 通信端口号; Settings: 以字符串形 奇偶校验、 数据位; PortOpen: 通信端口的状 式表示的波特率、 态,打开或是关闭; Input:接收数据; Output:发送数据; Input Mode: 接收数据的类型: 为文本; 为二进制。 0 1 6.2 等待函数 Win32 API 提供了能使线程阻塞其自身执行的等待函数, 等待其监视的对象产生一定的信号才停止阻塞, 继续线程的执 行。 其意义是通过暂时挂起线程减少对 CPU 资源的占用。 在某 些大型监控系统中,串口通信只是其中事务处理的一部分, 所 以必须考虑程序执行效率问题, 当串口初始化完毕后, 就使其 处于等待通信事件的状态, 减少消耗的 CPU 时间, 提高程序运 行效率。 常用的等待函数是 WaitForSingleObject( )和 WaitForMulti pleObjects( ), 前者可监测单个同步对象, 后者可同时监测多个 同步对象。 7 小结 本程序利用 MSCOMM 控件及多线程技术实现了对于多个 电视频道的实时控制。其界面如图 2 所示。当鼠标点击选中的 频道变成黄绿色时, 可观察该频道的控制参数, 也可进行参数 调节,同时,后台线程可按设定时间周期性扫描。本程序在 VC+6.0 下编译通过, 且运行良好。 6 多线程在串口通信中的应用 6.1 串口通信对线程同步的要求 因为同一进程的所有线程共享进程的虚拟地址空间, 而在 Windows 9X/NT 系统下线程是汇编级中断,所以有可能多个线 程同时访问同一个对象。这些对象可能是全局变量, MFC 的对 MFC 的 API 等。串口通信的几个特点决定了必须采用措施 象、 来同步线程的执行。 串口通信中, 对于每个串口对象, 只有一个缓冲区, 发送和 接收都要用到, 必须建立起同步机制, 使得在一个时候只能进 行一种操作, 否则通信就会出错。 进行串口通信处理的不同线程之间需要协调运行。如果一 个线程必须等待另一个线程结束才能运行, 则应该挂起该线程 以减少对 CPU 资源的占用,通过另一进程完成后发出的信号 (线程间通信)来激活。 VC+提供了同步对象来协调多线程的并行,常用的有以 下几种: CSemaphore: 信号灯对象, 允许一定数目的线程访问某个 共享资源, 常用来控制访问共享资源的线程数量。 图 2 程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铝粒工协作考核试卷及答案
- 铁合金回转窑工特殊工艺考核试卷及答案
- 军转干考试题及答案
- 警犬食物考试题及答案
- 课件文案要点
- 工业固体废物处理处置工突发故障应对考核试卷及答案
- 2025年中国室内装配式冷藏冷冻库数据监测研究报告
- 玻璃制品镀膜工基础考核试卷及答案
- 押题宝典教师招聘之《幼儿教师招聘》模考模拟试题带答案详解(精练)
- 绝缘防爆工具制作工职业考核试卷及答案
- 心理健康五进活动方案
- 数据中心防雷应急预案范文
- 医疗纠纷预防和处理条例培训课件
- 医院后勤教育培训课件
- 战后日本教育改革与发展进程
- 质量缺陷闭环管理制度
- 公司自动化项目管理制度
- 2025年上海市中考语文试卷真题及答案详解(精校打印版)
- 2025年上海市中考数学真题试卷及答案
- JG/T 264-2010混凝土裂缝修复灌浆树脂
- 2023年10月高等教育自学考试《13683管理学原理(中级)》试题
评论
0/150
提交评论