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?