枯木叶 发表于 2014-7-26 16:53

有没有懂串口通信的,快点戳进来

using UnityEngine;   
using System.Collections;   
using System;   
using System.Threading;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.IO.Ports;   
using System.Text.RegularExpressions;   
using System.Text;   


public class com : MonoBehaviour   
{   
public GameObject target;
    private SerialPort sp;   
    private Thread recvThread;   
    float x,y,z;
    // Use this for initialization   
    void Start()   
    {   
       // Debug.Log("start");   
      sp = new SerialPort("COM6", 115200, Parity.None, 8, StopBits.One);   
         
      if (!sp.IsOpen)
      {
            sp.Open();   
      }
      recvThread = new Thread(ReceiveData);   
      recvThread.Start();   
    }   


    // Update is called once per frame   
    void Update()   
    {   
      Debug.Log(x+"&&"+y+"&&"+z);
      
      //target.transform.eulerAngles=new Vector3(x,y,z);
    }
      
    private void ReceiveData()   
    {   
      char[] spil="#".ToCharArray();
      char[] sbuf = new char;
      try   
      {   
            Byte[] buf = new Byte;   
            string sbReadline2str = string.Empty;   
            if (sp.IsOpen) sp.Read(buf, 0, 1);   
            
            if (buf.Length == 0)   
            {   
                return;   
            }
            else if(buf==33){
                int i=0;
                while(true){
                  sp.Read(buf, 0, 1);
                  if(buf!=33)
                        {
                           
                            sbuf=(char)buf;
                            i++;
                        }else{
                            String s=new String(sbuf,0,i);
                            String []ss=s.Split(spil);
                            i=0;
                           
                            if(ss.Length==3)
                            {
                              x=float.Parse(ss);
                              y=float.Parse(ss);
                              z=float.Parse(ss);
                            }
                           
                        }
                }
            
            }

      }
      catch (Exception ex)   
      {   
            Debug.Log(ex);   
      }
    }   

   
private void SendSerialPortData(string data)   
{   
   if(sp.IsOpen)   
   {   
         sp.WriteLine(data);   
   }   
}   
   
    void OnApplicationQuit()   
    {   
      sp.Close();   
    }   
}

这是我在网上找的一个关于串口通信代码修改后的,都是接受ARDUNIO板子发送的数据(一个手柄的XYZ的模拟电压值),我要就收的是由感叹号开头,#隔开的三个数据一组的模拟电压值,每个值都在0~1023之间。为什么我在UNITY运行的时候总在控制台总是显示0&&0&&0

枯木叶 发表于 2014-7-26 16:56

这是借鉴的网址http://www.unitymanual.com/thread-18300-1-1.html

hetianlong 发表于 2017-3-5 20:44

很不错

无敌甩葱歌 发表于 2017-3-5 20:38

好帖就是要顶

cnchenjie 发表于 2017-3-5 20:46

顶顶多好

cnchenjie 发表于 2017-3-5 20:33

真心顶

guoer2113 发表于 2017-3-5 21:04

说的非常好

x364299611 发表于 2017-6-6 14:52

楼主是超人

silencehull 发表于 2017-6-6 14:45

好帖就是要顶

xuxinyu100200 发表于 2017-6-6 14:46

顶顶多好
页: [1]
查看完整版本: 有没有懂串口通信的,快点戳进来