串口通讯

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

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等。

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看