拌合站软件开发(25) 替换海康LED屏幕可行性分析及方案
需求分析:
海康的DS-TVL224系列屏幕主要用在出入口显示车牌信息,项目中用于司机自助按钮后显示车牌和重量信息数据,方便司机查看车牌是否正确. 代码实现在前面文章有讲解, 该屏幕可以用于户外,项目上也经受住了风雨考验, 只要柱子稳, 山竹来了也扛得住。海康的设备一直以结实耐操闻名,当然价格也比较高, 目前新的2400+, 二手也要去到1200+, 项目过程中,遇到的土豪客户有,主要是一些国企了,不买对的只买贵的,挑牌子,这样的金主爸爸当然是乐意见到的, 但大多数还是价格比较明敏感行的客户。
可行性分析:
那么有没有什么办法能够把这块的成本给降下来,而又对项目的效果没有大的影响。 我们发现大多数时候司机按下后,只要听到有播报提示他就知道数据提交成功了,然后就开下地磅了,他也不会去帮你核实车牌是否正确。如果没有播报声音,知道是数据没有提交成功,那么会呼叫协助,或者老手知道是车停的位置没到位,会重新停一下让车牌识别。那么其实重点就是让司机听到声音就好了,那么替换完全是可行的。
设备选型:
设备需求:
1. 能够POE供电
2. 可以通过网络下发音频
3. 可以文字转语音
4. 户外防水
设备对比:
一、海康的户外音柱设备
去年时候差海康的IP音柱支持POE的价格大概800左右,今年发现京东上查不到什么型号,难道是太贵没啥竞争力所以卖的不多么。找到一款要将近1000,那肯定不换算了,本来就是为了项目降本。
二、作者最终设备选型
户外音柱应用比较广泛的就是公园里面了,作者跑去植物园观察了一下,使用的是一个叫做丹唛派克的品牌设备,价格200+,我就不放图了,免得说我广告,京东上可以搜。至于好不好用,还得看项目的效果,至少这次广东桦加沙来后设备还是正常的。
代码实现:
一 .net对接设备播放语音
这款设备对接还是比较简单的,提供了接口文档,只需要向接口地址发送json格式数据即可。 按照文档设置好设备的IP地址后,语音接口地址为
http://xxxxxx/v1/speech
需要发送的json文件数据格式
{"text": "这里是要播放的文字","vcn": "xiaoyan","speed": 50,"volume": 50,"rdn": "0","rcn": "0","reg": 0,"sync": false,"queue": false,"loop": {"duration": 600,"times": 20,"gap": 2},"prompt": false
}
这个是客服给我的一个示例,核心的就是text 这个是你需要的播放的文本信息, vcn 是语音播报模拟人声的主播,speed是朗诵的速度,volume是音量大小, loop里面表示需要循环的次数,times是循环的次数。直接上实现代码
public class AudioDevice{private string url;public AudioDevice(string _ip){url = "http://" + _ip + "/v1/speech";}public void SendMsg(string msg){string json = "{ \"text\": \"" + msg + "\", \"vcn\": \"xiaoyan\", \"speed\": 40, \"volume\": 50, \"rdn\": \"0\", \"rcn\": \"0\", \"reg\": 0, \"sync\": false, \"queue\": false, \"loop\": { \"duration\": 600, \"times\": 1, \"gap\": 2 }, \"prompt\": false}";SendPost(url, json);}public string SendPost(string url, string jsonData){string result = String.Empty;try{CookieContainer cookie = new CookieContainer();HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";request.Headers.Add("x-requested-with", "XMLHttpRequest");request.ServicePoint.Expect100Continue = false;request.ContentType = "application/json";request.Accept = "*/*";request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)";request.ContentLength = Encoding.UTF8.GetByteCount(jsonData);request.CookieContainer = cookie;// request.Timeout = 200000;request.KeepAlive = false;System.Net.ServicePointManager.DefaultConnectionLimit = 512;using (StreamWriter writer = new StreamWriter(request.GetRequestStream())){writer.Write(jsonData);}// HttpWebResponse response = (HttpWebResponse)request.GetResponse();using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()){// response.Cookies = cookie.GetCookies(response.ResponseUri);using (Stream responseStream = response.GetResponseStream()){using (StreamReader reader = new StreamReader(responseStream)){result = reader.ReadToEnd();reader.Close();}responseStream.Close();}response.Close();// response = null;request = null;}}catch (Exception ex){Console.WriteLine("发送POST请求出现异常:" + ex.Message);}return result;}}
代码比较简单了,就是post发送数据了。代码直接用的json字符串,一下想不起来当时为啥这样写的。ContentType = "application/json"; 应该直接post文件过去,想不起来算了,项目中最重要的是代码能够跑起来就好了。
二、需要注意的地方
语音转文件需要额外付费授权的 ,好像是几十块加价了,总体不算贵,相比海康而言。