这篇Blog是我从我的百度空间引过来的,因为我感觉这里的技术人更多,交流起来更方便。
由于公司的原语音卡相关程序是使用C# or VB.NET 开发的,所以这次开发DMV1200B继续使用C#开发,工具是VS2008,系统是WinForm的。经过一个月的不懈努力终于使项目顺利完成。在这里拿出一些经验跟大家分享。
Dialogic公司提供的DLL是C或C++编写的,所以在Unix+C或者Windows+C++的情况下比较好调用,直接参考Dialogic驱动里面附带的C++Demo就可以,但是这次项目是要在Windows下使用.NET开发,所以具体技术是在.NET中调用C++的DLL,然后使DLL中的函数正常工作。
在简单(非常非常的简单的那种)的浏览过Dialogic公司提供的开发文档<<Dialogic Global Call API>>,<<srl_api_v6>>,<<voice_api_v2>>以及C++的相关Demo后只能是对Dialogic函数的特点和工作原理大概有了一个了解,不过还是有许多地方比较糊涂,因为都是英文文档(这个我始终没搞明白,Dialogic这种大公司既然来中国市场为什么不提供中文文档,在我看来翻译也并不是难事)好多地方无法直观的了解老外想表达的意思。说到这让我想起来了高中的英语阅读理解题,文章里面的句子我是读懂了,可是答问题却总也答不对,呵呵,幸好有百度和谷歌,我在CSDN上面找到并下载了一篇叫<<Dialogic从入门到系统工程师>>的中文PDF,上面讲了好多东西,虽然里面讲的是C++应用,但是许多概念性东西还是介绍的比较清楚,我建议想开发Dialogic语音卡相关系统的工程师朋友们通读一下,当然这里我们要感谢这篇文章的作者了,看署名是“张杨工作室”(一张一杨?),正是这篇文章给我提供了充足的Dialogic基础知识,让我后来的开发工作事半功倍。
Dialogic的函数我记忆当中,好像十年前见到过就是这个样子了,好多函数的参数和返回值都是指针型,或者指针地址型,这种函数在C和C++中可以直接调用,不过在.NET环境中调用问题就来了,理论上.NET的主要语言和C#和VB.NET都不支持使用指针,所以这里涉及到了一个问题,就是调用非托管DLL的时候的数据封送问题。这里需要说一下,在C#中提供了不安全代码,可以使用关键字Unsafe来使用指针。但是VB.NET中是不可以的。所以我建议大家采用C#来开发,而不是VB.NET,因为在我的开发过程当中确实遇到了必须得使用不安全代码的情况。至少我是没有想出来在VB.NET中如何解决这种问题。
由于我从来不写Blog,这是我的第一篇技术Blog,所以就直接写技术相关的Example,主要是为了给朋友们提供一些参考,关于文笔方面,我就不追求了。下面直接进入正题
哈哈~~今天懒了,先写到这吧。我会随后补充。