数字对讲系统开发札记(前端linux c 后端 c#)
前言 数字化是一种趋势,特别是在“提速降费”的大环境下,这种趋势愈发明显。对讲机这种古老的系统也处在时代的变革之中,虽然手机的功能越来越强,让人怀疑对讲机是否还有存在的必要。诚然,对讲机仍然有它的市场。有时候,功能太多太强反而不是优势;对讲机的优势就是功能简单,专业性强。
笔者最近也涉足了对讲系统的开发,发现这个行业也大有可为。特别是4G、5G的出现,数字对讲系统的优势逐步显现;就像数码相机代替光学相机,模拟对讲机最终会被数字对讲机代替。虽然笔者接触数字对讲时间并不长;但是敏锐的觉察到,在这一细分市场做好、做强,定有丰厚回报。我把开发对讲系统的一些技术要点,想法写下来;希望大家多多交流指导!有志同道合者,可以联系我。
对讲系统现状
笔者是技术出身,对技术有一定的敏感性。对于市场,只能算作门外汉了;好在,技术人员推理能力比较强。对于对讲系统现状,我确实没有过多的发言权,我就根据了解的一些的情况,做一些合理的推理。模拟对讲系统出现已有几十年了,直到最近几年,数字对讲系统才有突飞猛进的发展,有加速替换模拟对讲系统的趋势。有几个原因:1流量费的降低。大家可以回想一下几年前的流量资费,是多嘛的坑爹。2功能优势:数字对讲传输距离不受限制;可以传输文字、图片、视频等,并且可以保存;做到保密通讯;方便群组、人员管理等等。可以说优点很多。最后再加一条:由于电脑处理系统的强大,单个对讲机的服务费也非常的低,几乎可以做到忽略不计;这样就能做到,硬件便宜,后期使用费用也很低。免除了使用者的后顾之忧。
模拟对讲系统在国内存量市场很大,有几千万台之多。每年会有相当比例的用户转为数字对讲。加之,数字对讲系统的优点,也会吸引相当一部分新用户加入。对于一些要求比较高的群体,如公安等,有些功能是模拟对讲无法满足的,只能选择数字对讲。
可以说涉足这个领域的风险极低。关键是技术上要过硬,功能上有灵活性。
数字对讲系统组成
对讲系统主要有:PPT终端、对讲处理中心,调度平台等组成。我逐一介绍一下开发要点。
PPT终端:可分为两部分:硬件和软件。对于硬件,需要找相关的生产厂家代工,国内主要的生产基地在泉州。软件部分也不必完全从底层做起;比如4G通讯,与界面交互这些都大同小异;这些功能可采用第三方平台。你所做的只是业务逻辑部分,暨如何与服务器处理部分。这样开发难度会大大降低。采用的操作系统只能是linux,开发语言一般是C语言。
我们采用的是广和通平台,在该平台开发,和在pc机开发几乎没有区别。网络功能部分,广和通模块已经实现的非常完备。界面部分,也可以采用第三方平台;界面与程序之间是通过AT指令完成。广和通平台已经支持AT指令,界面部分的工作量也非常的小。业务模块逻辑,一般可在一个月内完成开发。
上图为广和通的开发平台。右侧为通讯模块(CP),左侧为应用程序模块(AP)。AP与CP之间是通过标准接口通讯,CP端升级,不会影响到AP端。譬如:以后CP升级到5G,AP端无须任何改动。应用程序是运行在AP端,底层就是linux系统,开发语言是C。平台集成了AT指令。这样就大大减轻开发者负担。
对讲处理中心:这里是对讲系统的中转调度中心。时时刻刻处理着对讲系统的登录、语音、群组切换等业务。我们采用的是c#开发的,运行在windows平台。
该系统有如下几个特点
1 性能: 提高单台服务器的处理能力,就意味着降低单个对讲机的服务成本。一台服务器要满足处理10万台以上的对讲机的能力。流量数据每秒达到几百兆带宽的量,这部分处理需要极度优化;socket处理如何优化可以参考我的文章《高性能、高可用性Socket通讯库介绍》。
由于很难模拟10万台设备与服务器交互,所以只进行了传输量测试。IOCP是可扩展性模型,单个连接与多个连接效率区别不大,通过单个连接测试,也可以窥探服务器的性能与容量;
我使用c++写的模拟程序,对该系统测试。收发数据总计超过50M,暨占用500M带宽,cpu占用率23%。测试平台为笔记本,硬件配置比较低。如果采用高性能服务器,达到千兆带宽传输,cpu占用也不会很高。
2 稳定性:这点的重要性不言自明。如果服务器出现故障,会影响数万台对讲机。这里的稳定性包括硬件和软件两个部分。硬件可以使用云平台,费用可能高点,但是硬件稳定性有了保障。软件稳定性需要考虑很多因素,主要和开发人员水平有关,这里不多叙述。
调度平台:这里可以看到所管辖的对讲机;查看对讲机的状态,GPS位置信息等。调度台同时也是一个对讲终端,可以和别的对讲机发起通话。由于系统应用的行业、场景有所不同,调度台功能也会有非常大的差别。这部分的难点是界面开发,我们采用的WPF来开发界面。WPF可以说是微软推出的迄今为止最优秀的框架,WPF的缺点是理念有些超常,不易理解。
扩展功能:数字化的优点是方便计算机处理,易扩展。除了以上基本功能,还能加上许多附加功能。比如:传图片、视频、传文字等。这些都不是对讲系统的主流功能;但是,如有必要,实现这些功能并不很难。对于视频的处理,可以参见我写的相关文章。
后记:常言道“时势造英雄”;有时选对方向比努力更重要。随着互联网+国家战略的推进,定会涌现不少符合潮流的产业。数字对讲系统应该就是符合这个潮流的产业之一。 提前布局,才能占得先机!入行几个月来,笔者也有一点感想,一点心得,粗笔草记,权当抛砖引玉!
数字对讲系统开发札记(前端linux c 后端 c#)的更多相关文章
- 招聘前端、Java后端开发、测试、Mysql DBA
公司介绍: http://www.lagou.com/gongsi/43095.html http://www.yamichu.com 简历发到: zhuye@yamichu.com 招聘职位: JA ...
- 前端基于react,后端基于.net core2.0的开发之路(1) 介绍
文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数 ...
- 前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数据初始化
前端环境配置 项目介绍文章:前端基于react,后端基于.net core2.0的开发之路(1) 介绍 1.VSCode安装 下载地址:https://code.visualstudio.com/Do ...
- 让前端独立于后端进行开发,模拟数据生成器Mock.js
让前端独立于后端进行开发,模拟数据生成器Mock.jsMock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试. Home · nuysoft/Mock Wiki ...
- 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具
认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...
- Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置
前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ...
- Web系统开发构架再思考-前后端的完全分离
前言 前后端完全分离其实一直是Web开发人员的梦想,也一直是我的梦想,遥想当年,无论是直接在代码里面输出HTML,还是在HTML里面嵌入各种代码,都不能让人感到满意.期间的痛苦和纠结,我想所有Web开 ...
- Python开发【前端】:JavaScript
JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
随机推荐
- ABP框架 配置权限、本地语言文件、左侧菜单项
1.Framework.Core>Authorization>PermissionNames.cs 这里新增权限项 namespace Framework.Authorization { ...
- SpringMVC Controller中注入Request成员域和在方法中定义中HttpServletRequest有啥区别
先说结论,在Controller中注入Request是线程安全的. 以下是解释: 我们先来看看这两者有什么不同 在controller注入成员变量request 可以看到注入的是一个代理对象 写在方法 ...
- ABP框架系列之四十六:(Setting-Management-设置管理)
Introduction Every application need to store some settings and use these settings in somewhere in th ...
- 10. Halloween 万圣节
10. Halloween 万圣节 (1) On October the 31st,across Britain and the USA,thousands of children are dress ...
- 获得文件的CRC32值
使用方法:先调用init_crc32_tab生成查询表,再调用calc_img_crc获得文件的CRC值. #define Poly 0xEDB88320L//CRC32标准 ];//CRC查询表 / ...
- [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creator【s
问题:执行创建函数的sql文件报错如下: [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA ...
- android-基础编程-ToolBar
Android 3.0 Android 推了 ActionBar 这个控件,而到了2013 年 (4.0)Google 开始大力地推动所谓的 android style,material desig ...
- 51nod1683
代码参考:http://blog.csdn.net/sdfzyhx/article/details/74359927 //dp[i][j][k]表示到了第i列,最下边的点最短路为j,剩下的点之间的关系 ...
- Crontab定时执行Oracle存储过程
Crontab定时执行Oracle存储过程 需求描述 我们有一个Oracle的存储过程,里面是每个月需要执行一下,生成报表,然后发送给业务部门,这一个功能我们有实现在系统的前台界面(如图1-1),但是 ...
- 福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
Team information 队名: 彳艮彳亍团队 各成员短学号.名: 学号: 姓名: 本次博客链接: 041602209 黄毓明(临时队长) https://www.cnblogs.com/m ...