Applescript to Arduino LCD działa tylko z Serial Monitor


(vivitern) #1

Cały dzień próbowałem to rozgryźć i wreszcie dotarłem do miejsca, w którym co najmniej daje mi znać, że robię coś dziwnego …

Próbuję przesłać dane do mojego ekranu LCD na moim Arduino Uno, ale z jakiegoś powodu działa to tylko wtedy, gdy monitor szeregowy jest otwarty jako pierwszy, wtedy próbuję uruchomić mój skrypt …

To mój kod Arduino …

#include <Adafruit_CharacterOLED.h>
Adafruit_CharacterOLED lcd(6, 7, 8, 9, 10, 11, 12);

String inData;

void setup()
{
// Print a message to the LCD.
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
char TestData=‘X’;
lcd.print(TestData);
}

void loop() {
while (Serial.available() > 0)
{
char recieved = Serial.read();
inData += recieved;

// Process message when new line character is recieved
if (recieved == '\n')
{
    lcd.setCursor(0, 0);
    lcd.print(inData);

    inData = ""; // Clear recieved buffer
}

}
}
Jeśli otworzę swój szeregowy monitor i coś wpiszę, pojawi się na moim ekranie … Świetnie

Więc jeśli uruchomię ten skrypt, z applescripta z zainstalowaną SerialPort X Plugin …

set portRef to serialport open item 1 of (get serialport list)
if portRef is equal to -1 then
display dialog " could not open port "
else
serialport write "text " to portRef
delay 1
serialport close portRef
end if
jeśli spróbuję użyć rzeczywistej nazwy portu … zawsze mówi, że nie może się połączyć, może się połączyć tylko wtedy, gdy użyję elementu 1, nie mam pojęcia dlaczego, ale na razie to jest w porządku …

Więc jeśli nie mam otwartego monitora szeregowego i uruchamiam mój bukszpryt, to się dzieje …

Mój wyświetlacz LCD jest resetowany do stanu początkowego za pomocą X w lewym górnym rogu … teraz, jeśli otworzę swój szeregowy monitor …

i wysłać coś na ekran … znowu działa

i jeśli spróbuję wrócić do skryptu jabłkowego i uruchomić go …

znowu nic się nie dzieje …

ale tutaj jest dziwne … jeśli znowu przejdę do mojego monitora szeregowego i napiszę coś i wyślę …

Dostaję się test somethingna mój ekran … obv uzyskuję test z applescriptu i coś z seryjnego monitora … czy jest coś bardzo prostego, czego mi brakuje … Próbowałem dodać \ n do applescript, a także próbowałem dodawać i zwracać , ani się nie sprawdziło … jaki jest mały szczegół, którego tu brakuje?
Czy moduł wyświetlacza działa nieprawidłowo?


EDYTOWAĆ

Zrobiłem wiele badań wczoraj wieczorem i dziś rano, i znalazłem reprezentacje ASCII zarówno Newline, jak i Carriage Return … Ponieważ nowa linia nie działała, zanim zacząłem z przełączeniem na powrót karetki …

Wymieniłem if (recieved == ‘\n’);z if (recieved == 13);czym w moim AppleScript dodany set CR to (ASCII character 13), a następnie zmieniła linię do zapisuserialport write “really” & CR to portRef

To działa … cóż, czasami wiem, że jest to kwestia otwierania i zamykania portu szeregowego, na którym mam małą wiedzę … ale co się dzieje, to jeśli zaczynam od zera … otwórz seryjny monitor open applescript i działa skrypt … jedynym problemem, który mam, jest to, że jeśli spróbuję uruchomić go po raz drugi … mówi, że nie może otworzyć portu

W tym miejscu jestem zdezorientowany, mój scenariusz będzie powtórzeniem, ale chcę wiedzieć, dlaczego nie może połączyć się z portem po raz drugi?