C#编程之界面程序VoiceTracking-仅界面部分
白羽 2018-07-10 来源 :网络 阅读 1808 评论 0

摘要:本文将带你了解C#编程之界面程序VoiceTracking-仅界面部分,希望本文对大家学C#/.Net有所帮助。




VoiceTracking是公司其他部门的同事做的。本人只负责开发voicetracking 的界面部分。

先上个效果图

 C#编程之界面程序VoiceTracking-仅界面部分

根据声源位置指针移动。因为是第一次用C#做东西,所以很多东西比较基础,大家勿喷。

1. C#调用C++写的接口。-- 原则:是越简单的接口越不容易出错

网上的这部分资料很多,这里就不写怎么去实现简单的接口调用了。说下要注意的地方,首先,要明白C#和C++是不同的平台,内存管理机制不一样,一个托管一个非托管,那么,在内存管理这块一定要注意。比如C++中有一个接口是用回调函数实现的,对C#和C++单独而言,回调都是很方便的,但是在一起,就容易出问题。比如我有回调函数

public delegate void WENUM_CALLBACK([MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]byte [] name, IntPtr param);

name 是C++以字符串形式传给C#的,C++的接口代码如下

typedef void (__stdcall *ENUM_CALLBACK)(const wchar_t *name, void *param);

开发过程中(主要使用DEBUG模式),各种正常,在测试的时候,报错,提示Read or write protected memory.  就是由于C++传给C#的常量字符串出的问题。

要下班。先写到这里

继续。整了不少时间才把接口都弄好。C#的代码编写倒是很简单,UI部分的直接在选项里修改就好了。如果有些需要定制的控件,集成那个类别的就可以。

2. 日志是很关键的东西 ---真的是非常关键

尤其是当你的测试机无法debug的时候,你可以通过日志来定位哪里的问题,日志做成宏开关形式的

#define _LOG_ENALBED#if defined _LOG_ENALBED

    FILE * f = NULL;

    #define LOG_OPEN(r) fopen_s(f, r, "a+")

    #define LOG(r) fprintf(f, r);

    #define LOG_CLOSE() fclose(f)#else

    #define LOG_OPEN(r)

    #define LOG(r)#define LOG_CLOSE()#endif

 

上面只是表示一下用法。因为上面的日志没有把时间这个关键的变量加进去,感兴趣的同学可以自己写个日志,使用C的<time>库函数获取local time。

3. 单元测试也很重要

这个东西对越是大的项目,重要性越强,写单元测试,会增加开发成本30%-40%。但是总体效率会提高60%。这个数据是老外统计的,如果只是很简单的东西,单元测试不必要那么严格,但总是需要的。

4. 代码风格

CPPLint是一个好的选择,当然需要自己定制一下,比如如果你用VS的IDE,{一定是在一行的开头,如果全按照CPPLint的要求,那是满眼的warning啊。

5. 软件做好了,需要打包发布--个人推荐使用Inno Setup

这个东西很小巧,而且容易使用。有些童鞋会用VS的IDE带的Setup程序,个人感觉功能虽强大,速度稍微有点慢。《---我的这个程序是用VS2012做的,安装了一个近200M的InstallShield,建了Setup工程,到生成release的时候居然有锁,还要序列号,狂晕。然后把代码拷到VS2005下面去弄了个build,安装包是两个文件一个依赖文件夹。最后倒腾来倒腾去,感觉还是Inno Setup简单好用。

上一个Inno Setup的图

 C#编程之界面程序VoiceTracking-仅界面部分

其实只要打开程序,点左上角的File->New,按照模板一步步来,基本的功能需求都能实现。

 

 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程