diff --git a/Arduino/SendCart/SendCart.ino b/Arduino/SendCart/SendCart.ino index 0b3639a..a98aa6d 100644 --- a/Arduino/SendCart/SendCart.ino +++ b/Arduino/SendCart/SendCart.ino @@ -23,7 +23,6 @@ void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); Wire.begin(); - Wire.setClock(400000); } void loop() { diff --git a/Assets/Scripts/Arduino_Com.cs b/Assets/Scripts/Arduino_Com.cs index 16c941d..c5f1bad 100644 --- a/Assets/Scripts/Arduino_Com.cs +++ b/Assets/Scripts/Arduino_Com.cs @@ -14,7 +14,6 @@ public class Arduino_Com : MonoBehaviour { Déconnecté, Connecté, - Connexion, Lecture, Écriture, Invalide @@ -69,21 +68,11 @@ public class Arduino_Com : MonoBehaviour return sum; } - // Core communication function. - // Receives all the data from the cartridge and writes it out to the png file. - // As the computer will probably read the serial data faster than the Arduino - // /and/ the transfer is quite slow (lots of bits, low baudrate), make this a - // coroutine. - // This prevents the whole application freezing up why waiting for data and - // allow presenting visual feedback. private IEnumerator ReceiveSerialData() { do { - // We could use an event instead but as Unity is lagging behind .NET versions, - // it wouldn't be cross-platform. yield return new WaitUntil(() => _serial.BytesToRead >= 1); - // Read all available data, up to the PageSize. _readBytes += _serial.Read(_pageBuffer, _readBytes, PageSize - _readBytes); @@ -115,7 +104,6 @@ public class Arduino_Com : MonoBehaviour _readBytes = 0; } } while (_currentPage < PageCount); - // We are done receiving the cart, we don't expect more data to be received so the coroutine can return. _currentPage = 0; _state = ArduinoState.Connecté; @@ -234,7 +222,14 @@ public class Arduino_Com : MonoBehaviour return; } - StartCoroutine(DoSerialConnection()); + // TODO: Wait ~2s for Arduino startup + _arduinoControlButton.text = "Déconnecter"; + + _cartLoadButton.SetEnabled(true); + // _cartWriteButton.SetEnabled(true); TODO: Not implemented + _arduinoSerialPort.SetEnabled(false); + + _state = ArduinoState.Connecté; } } @@ -249,24 +244,4 @@ public class Arduino_Com : MonoBehaviour _state = SerialPort.GetPortNames().Contains(newPort.newValue) ? ArduinoState.Déconnecté : ArduinoState.Invalide; _arduinoControlButton.SetEnabled(_state != ArduinoState.Invalide); } - - // Update UI during connection and when ready, prevent interacting too quickly. - IEnumerator DoSerialConnection() - { - _arduinoControlButton.text = "Connexion..."; - _arduinoControlButton.SetEnabled(false); - _arduinoSerialPort.SetEnabled(false); - _state = ArduinoState.Connexion; - - // Delay enabling transfers because the Arduino is slow to set-up the serial. - yield return new WaitForSeconds(1.5f); - - _arduinoControlButton.text = "Déconnecter"; - _arduinoControlButton.SetEnabled(true); - - _cartLoadButton.SetEnabled(true); - // _cartWriteButton.SetEnabled(true); TODO: Not implemented - - _state = ArduinoState.Connecté; - } }