蓝鸽集团-云网络智慧课堂产品 离职交接文档

离职交接文档说明

这个文档将包含以下内容:

1.云网络智慧课堂 V5.4(目前发布版本)

2.云网络智慧课堂 V6.0(新框架整合版,未完成)

3.云网络智慧课堂 新版框架 LBD_CNICFramework(新版框架,未完成)

4.可视化对讲、可视化广播工具代码(已完成,目前整合进V5.4内,此代码是我第一个业务代码,不做讲解了)

1.云网络智慧课堂 V5.4(目前市场发布版本)

注:代码不是我写的,我只是维护

此版本代码使用VS2015进行编译(当然了你用别的版本编译也没有问题),从VS2015_V53.sln进入V5.3版本的工程文件,每个类的具体职责划分详情可见 附件文档/云网络智慧课堂主框架DLL职责划分.docx 其中写明部分为我已知功能的代码。

关于软件的功能及系统流程,可见:附件文档/蓝鸽云网络智慧课堂_系统流程.pdf

这个代码本身可能不够更新了,请在Source文件夹中同步最新代码

1.关于软件

软件本身是以CLR做底层,如果你不懂什么是CLR的话,我可以简单告诉你,CLR就是一个.net和C++杂交的平台,也就是可以让托管的代码编译成非托管的动态链接库及可执行程序。语法本身杂糅了C++和C#,但是理解起来并不复杂。

V53相当于是从ARM版升级而来的代码,原来老版的ARM版的代码是由C++写成的,也许是为了兼容C++和C#才将整个框架做成这样的。

程序入口点是LBD.CloudNetIntelClassroom下的

LBD.CloudNetIntelClassroom.cpp->int main(array<System::String ^> ^args)

主要的软件流程在MainProcess.cpp中,

2.信息传递:

主要的信息传递方式是通过C#的事件委托进行的。通过上下级注册EventHandler将指定的模块之间注册一些方法,来实现信号的传递。

主要的函数:

public delegate System.Int32 CallMethodEventHandler(System.Object sender, System.String sModule, System.String sDescription, System.String sVariable);

一般是消息一直向下传递直至MainForm.cpp下的后缀为CallMethod方法,比如NetInteropCallMethod和Subject_CallMethod

在CallMethod方法中,所有的消息都是通过字符串的方式传递的,通过|或者_进行分割,以过滤器的模式进行。

注:整个软件并没有全局消息,所有的消息都是严格一级级向下传递的

3.常见BUG

1.加密授权点数不足

这个问题是之前最常见的,当前软件的授权点数认证是通过Mac地址进行的,所以在测试机比较多的情况下可能会到达点数的限制

为了解决这个问题,最简单的办法就是直接在数据库中LGDB_ItelEngTeachV53中找到表Jx_TeacherSetInfo,将这个表的SetItemValue清空,这个表中的加密数据为机器的Mac地址加密,秦坤他们写的,如果有问题请联系他们。

2.秒弹连接至服务器失败

这个问题的主要原因是服务器可能没开启,也可能是Web服务器正在休眠,拒绝了第一次连接,详情请见WebServerInfo::InitFromBasicWebService(System::String^ strServerInfo),这段代码中规定了重连的模式

3.未安装语音卡

请检查你安装的版本,不要在Arm环境下安装x86的安装包,也不要在x86环境下安装arm的包,语音卡是arm版的专属语音,请不要混淆。

4.注意

如果你要学习如何维护这个框架,可以先参考LBD_VideoMeeting的Caller.cs,这个是我写的,写了点注释,通过该类启动、维护一个外部exe,这个exe的路径在svn上见:

/trunks/云网络智慧教室/V5.4/代码/Teacher/OtherB/下的四个工程

如果有什么问题的话欢迎来 https://github.com/LeventureQys 向我提issue 如果我不忙的话会尽量解答,不够我不算特别了解这个框架,如果有问题的话尽可能向 田仲昭 提问,他是这个框架原本的开发

2.云网络智慧课堂 V6.0(新框架整合版,未完成)

1.软件说明

这个新框架整合版目前只是一个临时的手脚架,并不是完整的程序

只是在原来的LBD_CloudIntelClassroom.exe启动的时候同时启动LBD_CNICFramework.exe,替换了原有LBD_CloudIntelClassroom.exe获取学生座位和通讯框架的部分功能,通过调用COM组件进行。

3.云网络智慧课堂 新版框架 LBD_CNICFramework(新版框架,未完成)

https://www.cnblogs.com/Leventure/

以上是本人博客,关于本软件的开发思想详情请见带【大型软件开发】前缀及 Qt大型工程开发技术选型 前缀的博文,具体详情在这里不再做介绍

东西非常多,代码里面注释几乎已经是完备的了,除此之外可以见 附件文档/V6.0 文件夹下有原型设计图

还有个原型设计图在黄工那里,具体是什么我忘记了,大差不差吧

目前正在进行LBD_WebApiInterface这个C#工程的包装,需要将这个工程的部分功能进行包装,已完成类似锁控、服务器信息等相关的信息获取。

开发注意:

1.此产品代码中,请仔细看代码开头的注释,里面有很多rule以及我为什么定这些rule

2.代码维护及开发中请参考以下规范

请参考代码开发规范:https://www.cnblogs.com/Leventure/p/17036865.html

谷歌C++风格指南:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/

3.该工程大量单例模式,请不要重复生成新的实例,否则代码变屎山请不要联系我了

4.我已经在BaseTool.h中提供了大量工具,请不要重复造轮子

5.与模块之间的通信 为什么选择通过COM接口,而不是通过JSON字符串,这里我解释下

主要原因是可以直接提供实例的接口供外部模块调用,而不再需要我们去发送指令解析指令了,这样的效果比较好。其实就相当于是我们发送了一个指针给到子模块中去,让子模块去调用方法,或者获取实例元素,减少开发的耦合度,不需要两边再去做解析了。

6.目前LBD_WebApiInterface现在还在开发阶段,是通过ILBD_WebApiInterface 这个CLR是用来做非托管的,这个有几个问题,不过我都解决了,没来得及写博客,就直接将就着看我的代码吧

解决了两个问题 1.C#的枚举类型转换 2.C#自带的类如何导出

posted @ 2023-03-20 10:04  轩先生。  阅读(74)  评论(0编辑  收藏  举报