mirror of
https://github.com/xiaopeng12138/MaiDXR.git
synced 2025-02-15 18:32:34 +01:00
104 lines
3.3 KiB
C#
104 lines
3.3 KiB
C#
|
using System.Collections;
|
||
|
using UnityEngine;
|
||
|
using System.IO.Ports;
|
||
|
using System;
|
||
|
|
||
|
public class LedSerial : MonoBehaviour
|
||
|
{
|
||
|
static SerialPort p1Serial = new SerialPort ("COM51", 115200);
|
||
|
// Start is called before the first frame update
|
||
|
byte[] dataPacket = new byte[13];
|
||
|
byte[] incomPacket = new byte[13];
|
||
|
float timer = 0;
|
||
|
byte recivData;
|
||
|
int packLeng = 0;
|
||
|
public Light[] Lights;
|
||
|
Color32 PrevFadeColor;
|
||
|
bool headState = false;
|
||
|
void Start()
|
||
|
{
|
||
|
p1Serial.Open();
|
||
|
Debug.Log("LED Serial Started");
|
||
|
|
||
|
}
|
||
|
void Update()
|
||
|
{
|
||
|
//ReadPack();
|
||
|
ReadData();
|
||
|
//UpdatePacks();
|
||
|
}
|
||
|
private void ReadPack()
|
||
|
{
|
||
|
ReadData();
|
||
|
//StartCoroutine(ReadData());
|
||
|
Debug.Log("RX: "+dataPacket[0]+"-"+
|
||
|
dataPacket[1]+"-"+
|
||
|
dataPacket[2]+"-"+
|
||
|
dataPacket[3]+"-"+
|
||
|
dataPacket[4]+"-"+
|
||
|
dataPacket[5]+"-"+
|
||
|
dataPacket[6]+"-"+
|
||
|
dataPacket[7]+"-"+
|
||
|
dataPacket[8]+"-"+
|
||
|
dataPacket[9]+"-"+
|
||
|
dataPacket[10]);
|
||
|
}
|
||
|
private void ReadData()
|
||
|
{
|
||
|
timer = 0f;
|
||
|
if (p1Serial.BytesToRead >= 3)
|
||
|
{
|
||
|
if (!headState)
|
||
|
recivData = Convert.ToByte(p1Serial.ReadByte());
|
||
|
headState = false;
|
||
|
if (recivData == 224)
|
||
|
{
|
||
|
do
|
||
|
{
|
||
|
incomPacket[packLeng++] = recivData;
|
||
|
recivData = Convert.ToByte(p1Serial.ReadByte());
|
||
|
}
|
||
|
while (recivData != 224 & p1Serial.BytesToRead >= 1);
|
||
|
headState = true;
|
||
|
dataPacket = incomPacket;
|
||
|
packLeng = 0;
|
||
|
UpdateLED();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void UpdateLED()
|
||
|
{
|
||
|
switch (dataPacket[4])
|
||
|
{
|
||
|
case 49:
|
||
|
if (dataPacket[5] > 7)
|
||
|
dataPacket[5] = 7;
|
||
|
Lights[dataPacket[5]].color = new Color32(dataPacket[6], dataPacket[7], dataPacket[8], 255);
|
||
|
break;
|
||
|
case 50:
|
||
|
if (dataPacket[6] > 8)
|
||
|
dataPacket[6] = 8;
|
||
|
for (int i = dataPacket[5]; i < dataPacket[6]; i++)
|
||
|
{
|
||
|
Lights[i].color = new Color32(dataPacket[8], dataPacket[9], dataPacket[10], 255);
|
||
|
}
|
||
|
PrevFadeColor = new Color32(dataPacket[8], dataPacket[9], dataPacket[10], 255);
|
||
|
break;
|
||
|
|
||
|
case 51:
|
||
|
if (dataPacket[6] > 8)
|
||
|
dataPacket[6] = 8;
|
||
|
for (int time = 0; time < dataPacket[11]; time++)
|
||
|
{
|
||
|
for (int i = dataPacket[5]; i < dataPacket[6]; i++)
|
||
|
{
|
||
|
Lights[i].color = Color.Lerp(PrevFadeColor, new Color32(dataPacket[8], dataPacket[9], dataPacket[10], 255), time / 255);
|
||
|
}
|
||
|
}
|
||
|
PrevFadeColor = new Color32(dataPacket[8], dataPacket[9], dataPacket[10], 255);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|