Move touch input sending to its own thread
This commit is contained in:
parent
a56e3d3d64
commit
4057c829cd
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
using System.IO.Ports;
|
using System.IO.Ports;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -16,6 +17,8 @@ public class Serial : MonoBehaviour
|
|||||||
const byte CMD_BEGIN_WRITE = 0x77;
|
const byte CMD_BEGIN_WRITE = 0x77;
|
||||||
const byte CMD_NEXT_WRITE = 0x20;
|
const byte CMD_NEXT_WRITE = 0x20;
|
||||||
|
|
||||||
|
private Thread _touchThread;
|
||||||
|
private Queue _touchQueue;
|
||||||
static SerialPort ComL = new SerialPort ("COM5", 115200);
|
static SerialPort ComL = new SerialPort ("COM5", 115200);
|
||||||
static SerialPort ComR = new SerialPort ("COM6", 115200);
|
static SerialPort ComR = new SerialPort ("COM6", 115200);
|
||||||
|
|
||||||
@ -50,11 +53,29 @@ public class Serial : MonoBehaviour
|
|||||||
SetSettingData_162();
|
SetSettingData_162();
|
||||||
SetSettingData_148();
|
SetSettingData_148();
|
||||||
//Send touch update periodically to keep "read" alive
|
//Send touch update periodically to keep "read" alive
|
||||||
InvokeRepeating("SendTouchState", 0, 1);
|
_touchQueue = Queue.Synchronized(new Queue());
|
||||||
|
_touchThread = new Thread(TouchThreadLoop);
|
||||||
|
InvokeRepeating("PingTouchThread", 0, 1);
|
||||||
//Send touch updates whenever actual state changes to achieve desired update frequency without overloading
|
//Send touch updates whenever actual state changes to achieve desired update frequency without overloading
|
||||||
ColliderToSerial.touchDidChange += SendTouchState;
|
ColliderToSerial.touchDidChange += PingTouchThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void PingTouchThread()
|
||||||
|
{
|
||||||
|
_touchQueue.Enqueue(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TouchThreadLoop()
|
||||||
|
{
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(_touchQueue.Count > 0)
|
||||||
|
{
|
||||||
|
_touchQueue.Dequeue();
|
||||||
|
SendTouchState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
ComL.Close();
|
ComL.Close();
|
||||||
@ -182,6 +203,8 @@ public class Serial : MonoBehaviour
|
|||||||
Serial.Write(SettingData_201.ToArray(), 0, 3);
|
Serial.Write(SettingData_201.ToArray(), 0, 3);
|
||||||
Debug.Log($"START AUTO SCAN SIDE {side}");
|
Debug.Log($"START AUTO SCAN SIDE {side}");
|
||||||
StartUp = true;
|
StartUp = true;
|
||||||
|
if (!_touchThread.IsAlive)
|
||||||
|
_touchThread.Start();
|
||||||
break;
|
break;
|
||||||
case CMD_BEGIN_WRITE:
|
case CMD_BEGIN_WRITE:
|
||||||
// Debug.Log($"Begin Write For Side {side}");
|
// Debug.Log($"Begin Write For Side {side}");
|
||||||
|
Loading…
Reference in New Issue
Block a user