public IEnumerator _writeSlices(Vector2[,,] d, bool sullied)
        {
            float startTime = Time.timeSinceLevelLoad;

            if (touchPanel != null && touchPanel.serial.isConnected)
            {
                pcbIoState     = pcbState.WORKING;
                _recordingMode = false;

                //prepare the pcb to accept our data
                if (sullied)
                {
                    touchPanel.serial.SendSerialMessage("write2");
                }
                else
                {
                    touchPanel.serial.SendSerialMessage("write1"); //perfect slices
                }
                while (!_recordingMode)
                {
                    if (_serialTimeOutCheck(startTime))
                    {
                        yield break;
                    }
                    yield return(pcbIoState);
                }

                string saveData;
                utils.vert2Bin(d, out saveData);
                touchPanel.serial.SendSerialMessage(saveData);

                while (_recordingMode)//don't exit until we are done.
                {
                    if (_serialTimeOutCheck(startTime))
                    {
                        yield break;
                    }
                    yield return(pcbIoState);
                }
                pcbIoState = pcbState.SUCCESS;
                yield break;
            }
            pcbIoState = pcbState.FAIL;
        }
        public IEnumerator _writeSettings(string settingsData)
        {
            float startTime = Time.timeSinceLevelLoad;

            if (touchPanel != null && touchPanel.serial.isConnected)
            {
                pcbIoState     = pcbState.WORKING;
                _recordingMode = false;

                //prepare the pcb to accept our data
                touchPanel.serial.SendSerialMessage("write0"); //settings data

                while (!_recordingMode)
                {
                    if (_serialTimeOutCheck(startTime))
                    {
                        yield break;
                    }
                    yield return(pcbIoState);
                }

                settingsData = dataFileDict.base64Encode(settingsData);
                touchPanel.serial.SendSerialMessage(settingsData);

                while (_recordingMode)//don't exit until we are done.
                {
                    if (_serialTimeOutCheck(startTime))
                    {
                        yield break;
                    }
                    yield return(pcbIoState);
                }
                pcbIoState = pcbState.SUCCESS;
                yield break;
            }
            pcbIoState = pcbState.FAIL;
        }