首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity3D android USB通信

Unity3D android USB通信
EN

Stack Overflow用户
提问于 2018-05-23 06:50:35
回答 1查看 1.8K关注 0票数 1

我有一个android应用程序(统一制造),我想接收数据从usb电缆(它是插在我的电脑)

请给我点主意?

我的第一个想法是,我有一个应用程序(在android演播室,它创建通信,然后发送一些数据,以统一播放器设置)。

我发现System.IO.Ports不适合安卓系统,所以我需要你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 09:09:37

我能想到的最好的方法是在你的计算机和应用程序之间建立TCP连接,并使用这个TCP连接来实际发送和接收数据。如果你感兴趣,我可以指导你如何实现它。

编辑:您可以在您的统一项目中创建TCP侦听器,如下所示:

代码语言:javascript
复制
    int port = 8181;
    TcpListener listener = null;

    public void Awake()

    {
        DontDestroyOnLoad(gameObject);
        StartCoroutine(Listen());
    }

    private IEnumerator Listen()
    {
        listener = new TcpListener(System.Net.IPAddress.Any, port); 
        // start listening
        listener.Start();
        listener.BeginGetContext(ListenerCallback, listener);
    }
    public void ListenerCallback(IAsyncResult result)
    {
        HttpListener listener = (HttpListener)result.AsyncState;
        // Call EndGetContext to complete the asynchronous operation.
        HttpListenerContext context = listener.EndGetContext(result);
        HttpListenerRequest request = context.Request;
        //do your response-handling logic here
        listener.BeginGetContext(ListenerCallback, listener);
    }

加载这个游戏对象在你的第一个开始的场景。而不是简单地在eclispe中创建一个Java项目,并使用套接字连接到正在运行的服务器。

就像这样:

代码语言:javascript
复制
    private Socket _socket = null;

    public void conenct()
    {
        _socket = new Socket(deviceIpAddress, SERVER_PORT);
    }

    public JSONObject read()
    {
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader (_socket.getInputStream()));
        StringBuilder responseStrBuilder = new StringBuilder();
        JSONObject jsonObject = null;

        _socket.setSoTimeout(10000);
        try
        {
            for (int b = 0; ((b = inFromServer.read()) >= 0);)
            {
                // Break on New Line character
                if (b == NEW_LINE.charAt(0))
                {
                    break;
                }
                responseStrBuilder.append((char)b);
            }
            // Unity Server Ack response on socket connection
            if (responseStrBuilder.length() == 0)
            {
                responseStrBuilder.append("{}");
            }

            jsonObject = new JSONObject(responseStrBuilder.toString());
              return (jsonObject);

    }

    public void write(String msg)
    {
        PrintWriter outToServer = new PrintWriter(new OutputStreamWriter(_socket.getOutputStream()));
        //send msg to server and include new line character
        outToServer.print(msg + NEW_LINE.charAt(0));
        outToServer.flush();
    }

您可以使用读读取从统一发送的数据和写入发送请求到统一服务器。您可以根据需要对此进行修改。

我匆匆忙忙地做了这件事,所以可能有一些错误。试试看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50481615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档