串口通讯

1.API 需要切换成.NET2.0。称为几乎接近.net2.0。.net2.0 subset是.net2.0的子集。串口通讯用到的system.IO.Ports命名空间在。net2.0中。

2.Unity的目标平台一定要切换为Windows平台,否则是其他平台会报错误。

3.串口参数,.net2.打开串口是如果串口超过10,则需要在串口名字前加“\\?\”。所以unity给的参数也必须有“\\?\”。实际中给的参数,因为转移符的关系要写成“\\\?\\”。

     PortName "COM1"    (端口名字)

     baudRate 115200 (波特率)

     parity  (校验位)

     databit  8 (数据位)

      stopbit 1 (停止位)

4.  SerialPort.DiscardOutBuffer方法清除串行驱动程序发送缓冲区的数据;

     SerialPort.DiscardInBuffer方法清除串行驱动程序的接收缓冲区的数据;

5. 收发错误等回调有,但是不能用,并不会回调。只能用多线程。时刻查看有没有收到数据。

    private bool canrecive = true;
    private void PortReceive()
    {
        while (this.port != null && this.port.IsOpen && canrecive)
        {
            Thread.Sleep(1);             
            try
            {               
                Debug.Log(port.ReadByte());
                this.port.DiscardInBuffer(); //清除接受缓冲                              
            }
            catch
            {
                
            }
        }
      }    

6. 获取串口数据,和传入串口数据。读取和获取有问题。

7.多线程进入死循环是无法打断的。尽量避免。可以给一个标量标记循环。以便打断。线程如果运行完会自行终止。循环变量一旦改变循环终止,线程运行完自行终止。

8.关于unity的库基本上是不能再多线程中用的,除了debug等。

猜你喜欢

转载自my.oschina.net/u/3332153/blog/1585712