NDK下 将Platinum SDK 编译成so库 (android - upnp)

Platinum UPnP SDK 是一个跨平台的C++库,利用该库,可以很容易就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP设备(DLNA/UPnP Device),其中包括有UPnP AV Media Server, Media Render & Control Point的例子。它可以在Windows, Mac OSX, Linux, iPhone, Android, Symbian等多种C语言开发平台上编译通过且运行 

官方网址:http://www.plutinosoft.com/platinum

SDK下载地址:http://sourceforge.net/projects/platinum/

下载后得到一个PlatinumKit-1-0-4-2_99100e_aab601.zip

版本信息为

Platinum Kit Version 1-0-4-2

-----------------------------

Neptune:  aab601

Platinum:  99100e

解压开来先熟悉下该包的内容

查看Platinum目录下的ReadMe.txt


该包包含了这两个主要的库

进入Platinum\Build\Targets\x86-microsoft-win32-vs2008目录

打开PlatinumManaged.sln解决方案可以看到工程的关联

NeptunePlatinum都是静态链接库,后续编译so库会用到

Platinum.Managed是动态链接库,暂时不用管

看看给android调用的so库如何编译


首先要下载ndk组件包

网址:http://developer.android.com/tools/sdk/ndk/index.html#Installing

这里我以ubuntun 64位环境为例,下载android-ndk-r8e-linux-x86_64.tar.bz2 

ubuntun下解压后配置ANDROID_NDK_ROOT环境变量

<1>使用命令vi ~/.bashrc 打开环境变量设置,并在文件末尾添加:

ANDROID_NDK_ROOT=你的ndk根目录绝对路径

export ANDROID_NDK_ROOT

<2>使用命令source  ~/.bashrc使环境变量设置生效。

<3>使用命令echo $ANDROID_NDK_ROOT查看是否生效,如果输出完整路径正确,说明环境变量设置ok.

<4>此步可选,使用cd命令进入到androidNDK/samples/hello-jni进入例子目录,然后使用命令:sudo $ANDROID_NDK_ROOT/ndk-build如果编译成功,则会生成so库,表示NDK能够正常Work

Ndk环境搭好后就可以编译Platinum lib了

<1>androidNDK目录下面生成out/config.mk文件,里面输入内容如下:

HOST_TAG:=linux-x86

然后保存退出;

<2>进入Platinum目录

打命令scons target=arm-android-linux build_config=Release

(请确保scons工具已安装)

正常的话最后会输出:scons: done building targets.表示编译完成了。

在Platinum\Build\Targets\arm-android-linux\Release目录下生成相关*.a

不带后缀的是c可执行文件

<3>进入到/PlatinumKit/Platinum/Source/Platform/Android/module/platinum/jni目录下面,

注意:这里需要先修改该jni目录下的Android.mk文件,将LOCAL_LDLIBS += -laxTls改为LOCAL_LDLIBS += -laxTLS,主要是前面生成库的名字是-laxTLS而不是-laxTls

使用命令:$ANDROID_NDK_ROOT/ndk-build NDK_DEBUG=0

编译之后会输出如下信息,表示生成SO库成功。

SharedLibrary  : libplatinum-jni.so

Install        : libplatinum-jni.so => libs/armeabi/libplatinum-jni.so

进入到目录PlatinumKit/Platinum/Source/Platform/Android/module/platinum/lib目录下面可以看到生成so.

最后是测试该so

将Platinum\Source\Platform\Android下的两个工厂导入eclipse

一个是lib工程,一个是apk工程,建立引用关系,然后在platinum工程下建立libs/armeabi目录并将前面编好的so库放进去


运行sample-upnp



示例比较粗糙,start后设备并不能被外界发现,需要自己重新封装,具体用法可参照

Platinum\Source\Tests\MediaRenderer下的MediaRendererTest.cpp文件

可在PlatinumManaged.sln解决方案下将MediaRendererTest工程导入,然后配置项目依赖项把那两个静态库添进来,在window下将MediaRendererTest跑起来可被外界发现

至此一个简单的platinumso库封装和调用就实现了

至于DMR,DMS以及DMC等实现就需要自己先摸透该框架的使用方法

主要涉及到这三个类

PLT_FileMediaServer:封装实现了DMS
PLT_MicroMediaController:不是库里的类,是其一个例子的类,继承了PLT_SyncMediaBrowserPLT_MediaController,即实现了DMC
PLT_MediaRenderer:实现了DMR 

另外里面许多示例程序包括Platinum.Managed都是值得参考借鉴的

好了Platinum UPnP SDK的初级使用教程到此结束


关于DMR和DMS的实现请参考这两篇博文:

基于Platinum库的DMS实现(android)

基于Platinum库的DMR实现(android)
 



预知后事如何,且听下回分解

more brilliant,Please pay attention to my 优快云 blog -->http://blog.youkuaiyun.com/geniuseoe2012

<think>好的,用户需要查找关于ANSYS Fluent与Mechanical进行耦合分析的指南和操作教程。首先,我需要回顾用户提供的引用内容,找到相关的信息点。引用[1]提到ANSYS通过Mechanical APDL与CFX、FLUENT等进行流固耦合分析,但用户关注的是Fluent与Mechanical的耦合,引用[3]和[4]更相关,特别是引用[3]提到Fluent内置流固耦合和System Coupling的使用,引用[4]则具体提到了Fluid Flow(Fluent)和Static Structure模块的搭配使用。接下来需要整理出操作步骤,可能需要分单向和双向耦合情况,同时注意用户可能需要具体的模块配置和参数设置。还要考虑是否需要引用相关文献中的步骤,比如使用System Coupling模块,或者内置的方法。另外,用户可能需要教程的结构,如准备工作、耦合类型选择、数据传递设置等。同时,用户可能想知道常见的应用实例,比如血管模型,如引用[4]提到的,这可以作为案例参考。需要确保回答结构清晰,分步骤说明,并引用正确的来源。最后,生成相关问题时要围绕耦合分析的方法、注意事项、应用案例等。</think>### ANSYS Fluent与Mechanical流固耦合分析指南 #### 一、耦合分析实现方式 ANSYS Fluent与Mechanical的流固耦合可通过两种主要方式实现: 1. **System Coupling模块**:通过ANSYS Workbench平台搭建数据传递通道,支持双向耦合分析[^3][^4]。 2. **Fluent内置流固耦合**:直接通过Fluent完成单向或双向耦合计算,无需第三方模块。 #### 二、操作流程(以System Coupling为例) **步骤1:Workbench平台搭建** 1. 新建工程,拖拽以下模块到项目管理区: - Fluid Flow (Fluent)(流体域) - Static Structural(结构域) - System Coupling(耦合控制器)[^4] **步骤2:几何与网格准备** - 流体域需包含流固耦合面(如血管壁面) - 结构域需与流体域接触面保持几何一致性 ```text 示例:血管模型需划分流体边界层网格和结构体网格 ``` **步骤3:数据映射设置** 1. 在System Coupling中定义耦合面: - 流体侧选择压力/速度传递面 - 结构侧选择位移/应力接收面 2. 设置传递参数: ``` 压力 → 结构应力 位移 → 流体网格变形 ``` **步骤4:求解器配置** | 模块 | 关键设置 | |------------|------------------------------| | Fluent | 启用Dynamic Mesh(动网格) | | Mechanical | 开启大变形选项(有限元分析) | **步骤5:时间步长控制** - 建议初始时间步长设置为流场特征时间的1/10 - 使用隐式耦合迭代算法提高稳定性 #### 三、注意事项 1. **网格兼容性**:耦合面网格节点不需要完全匹配,但建议尺寸差异不超过3倍[^4] 2. **数据传递误差**:可通过提高插值阶数降低误差(System Coupling支持二次插值) 3. **收敛判断**:监测残差曲线和界面力平衡误差(应小于5%) #### 四、典型应用场景 1. 血管壁面受力分析(如动脉瘤血流冲击) 2. 风力涡轮机叶片气弹耦合 3. 飞机机翼颤振预测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值