作者:-孙立佳得 | 来源:互联网 | 2023-09-08 15:27
照例,我不具体说我解决办法的辛酸经过。我所有的blog都不会告诉你是为什么。只简单粗暴的给出解决办法。
核心思路是:
在java层面实现串口消息收发,然后用UnityPlayer.UnitySendMessage("unity_com","java_messgae", sss); 转发给Unity
而Unity则调用
if (cls == null)
{
cls = new AndroidJavaClass("com.unity.FS.UnityPlayerActivity");
}
cls.CallStatic("unity_message", msg); 给java发数据,让java执行真正的发送函数。发往串口。
好了,办法说完了。不喜欢听我啰嗦的,可以自己去搜索怎么实现。
那么下面分解步骤:
1。去网上搜索lib_serialport。将下载回来的两个文件SerialPort.c SerialPort.h 两个.mk放到一个文件夹,例如jni文件夹。然后执行ndk-build.
看到这里,肯定很多人吐槽,去哪里下?下回来没有SerialPort.h只有.c。淡定我也是makefile出来的,但是稍后我会提供完整的用到的文件。当然,我的封装方法不一定适合你就是了。
比如UnityPlayer.UnitySendMessage("unity_com","java_messgae", sss); 网上大多是 Main Camera。 XXXX,而我认真负责的告诉你,只要场景中一直明确存在对应名字的对象就可以。
ndk-build是什么?请你自己去恶补基础知识。
然后将build出来的 obj libs jni 自己保存好。
2。打开unity,在场景里创建com消息接收对象比如这里是unity_com,给它挂载一个脚本,确保有java_messgae 这个接口就行。有人又要纠结函数怎么写,参数是什么。建议去别的地方搜。。比如宣雨松的blog。
void java_messgae(string str)
{
//str就是你收到的串口消息。我在java层将16进制转成字符串传过来的。
//当然,代码包里面有
}
3。导出unity工程为eclipse工程。这是个基本问题。但是我大发慈悲,上个图。
4。然后将刚才ndk-build出来的 三个文件夹拷贝到该工程根目录下。该工程是哪个该工程?你猜我说的是哪个工程?
5。去网上搜一个java使用串口的.java文件回来。然后自己再封装一个跟应用有关的。
具体可以去这里看看http://lpcjrflsa.iteye.com/blog/2097280
http://www.linuxidc.com/Linux/2012-05/61283.htm
如果懒得看,就用我封装好的。但是使用习惯不一定适合你。
6。打开eclipse,用java编写好串口收发的,然后编译apk即可。至于中间的环境搭建等基本问题,我相信遇到串口问题的人都会了。不啰嗦。一篇文章不可能教会你所有东西。
代码在这里
http://download.csdn.net/detail/glunoy/9637750