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