andriod建立NDK项目调用jrtplib与PC机通讯
来源:互联网 发布:河南 计价软件 编辑:程序博客网 时间:2024/05/18 00:11
按上两次的文章,编译好windows 平台(http://blog.csdn.net/nickwar/article/details/8962344)和android平台上使用的jrtplib库(http://blog.csdn.net/nickwar/article/details/8962482)之后,
就可以做进一步的应用开发了,但测试了一下发现,两边通讯不起来,
查资料发现,网络数据传输有大小端的区别(binendian和littleendian),
这就像是吃煮鸡蛋先从大头磕开还是小头磕开的问题,比较无聊,
但windows平台上编译的配置是默认littleendian的,但android(linux)上配置是默认大端的bigendian
所以,回到android平台编译的那一节,找到jrtplib源码目录下的CMakeLists.txt,打开它,
找到下面这段代码并注释其中相应的的行,重新编译即可获得littleendian的库
- if (CMAKE_CROSSCOMPILING)
- # option (JRTPLIB_USE_BIGENDIAN "Target platform is big endian" ON)
- # if (JRTPLIB_USE_BIGENDIAN)
- # set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")
- # else (JRTPLIB_USE_BIGENDIAN)
- set(RTP_ENDIAN "// Little endian system")
- # endif (JRTPLIB_USE_BIGENDIAN)
- else (CMAKE_CROSSCOMPILING)
- # test_big_endian(JRTPLIB_BIGENDIAN)
- # if (JRTPLIB_BIGENDIAN)
- # set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")
- # else (JRTPLIB_BIGENDIAN)
- set(RTP_ENDIAN "// Little endian system")
- # endif (JRTPLIB_BIGENDIAN)
- endif (CMAKE_CROSSCOMPILING)
if (CMAKE_CROSSCOMPILING)# option (JRTPLIB_USE_BIGENDIAN "Target platform is big endian" ON)# if (JRTPLIB_USE_BIGENDIAN)# set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")# else (JRTPLIB_USE_BIGENDIAN)set(RTP_ENDIAN "// Little endian system")# endif (JRTPLIB_USE_BIGENDIAN)else (CMAKE_CROSSCOMPILING)# test_big_endian(JRTPLIB_BIGENDIAN)# if (JRTPLIB_BIGENDIAN)# set(RTP_ENDIAN "#define RTP_BIG_ENDIAN")# else (JRTPLIB_BIGENDIAN)set(RTP_ENDIAN "// Little endian system")# endif (JRTPLIB_BIGENDIAN)endif (CMAKE_CROSSCOMPILING)
把上一节生成的android运行库libjrtplib.a, libthread和头文件拷到jni目录下,这里我使用的是静态库,
打开Anroid.mk并编辑为如下内容:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := jthread
- LOCAL_SRC_FILES := libjthread.a
- include $(PREBUILT_STATIC_LIBRARY)
- include $(CLEAR_VARS)
- LOCAL_MODULE := jrtplib
- LOCAL_SRC_FILES := libjrtplib.a
- LOCAL_STATIC_LIBRARIES := jthread
- include $(PREBUILT_STATIC_LIBRARY)
- include $(CLEAR_VARS)
- LOCAL_MODULE := HelloJni
- LOCAL_SRC_FILES := HelloJni.cpp
- LOCAL_STATIC_LIBRARIES := jthread jrtplib
- LOCAL_LDLIBS := -llog
- include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jthreadLOCAL_SRC_FILES := libjthread.ainclude $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := jrtplibLOCAL_SRC_FILES := libjrtplib.aLOCAL_STATIC_LIBRARIES := jthreadinclude $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := HelloJniLOCAL_SRC_FILES := HelloJni.cppLOCAL_STATIC_LIBRARIES := jthread jrtplibLOCAL_LDLIBS := -lloginclude $(BUILD_SHARED_LIBRARY)
然后参考jrtplib自带的样例,编写android上的代码,不再细说
在pc上运行example1.exe
在android上运行编写好的代码即可
截图:
android代码在github上:
https://github.com/F-Sidney/HellojrtplibAndroid.git
- andriod建立NDK项目调用jrtplib与PC机通讯
- android建立NDK项目调用jrtplib与pc机进行通讯
- PC-1500与PC通讯
- PC机与单片机的通讯(1)
- S7 200 modbus与PC机通讯
- Andriod与蓝牙模块通讯的步骤
- PC机与单片机多机通讯问题
- PC机并口与CAN通讯的实现
- 单片机与PC机串口通讯接地问题
- Labview通过RS422通讯接口PC与下位机通信
- Labview通过RS422通讯接口PC与下位机通信
- Android NDK 建立cocos2dx项目
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
- 用HTTP实现手机与PC通讯
- PC与MHI间的的通讯
- max232管脚讲解 单片机与PC通讯
- 4.3系统编译
- openfire 的配置文件
- Python IDE Eric4安装配置
- Android Cache Partition
- 设计模式C++描述----15.策略(Strategy)模式
- andriod建立NDK项目调用jrtplib与PC机通讯
- hdu1203 I NEED A OFFER! (01背包)
- 程序员分类,你是哪一类?——读《编程匠艺》
- 微信开发平台功能思维导图
- 常用的webservice接口
- 大数,高精度计算---大数加法
- 面向对象的三个基本特征 和 五种设计原则
- PHP学习笔记05——面向对象
- 毕向东_JavaScript视频_HTML