|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
flice
Anmeldungsdatum: 22.08.2021 Beiträge: 3
|
Verfasst am: 22.08.2021, 14:40 Titel: String über COM an Arduino senden |
|
|
Moin allerseits, und direkt mal Entschuldigung für die Noob-Frage.
Ich habe viele Beiträge hier gefunden, wie ich den Arduino mit FreeBasic auslesen kann. Ich habe das umgekehrte Problem. Die Dinge, die ich gefunden habe, waren zu allgemein gehalten. Meine Sprache ist eher java, aber da ist USB-Kommunikation furchtbar...
Kurz zum Hintergrund: Ich möchte meinen Monitor aus dem Schreibtisch hochfahren, wenn der Rechner angeschaltet wird, und runter, wenn man den Rechner runterfährt.
Der ganze andere Kram funktioniert. Kann gern die Schaltung etc. nachliefern, aber das läuft soweit. Ich kann auch über den Serial Monitor zum Beispiel "down" an den Arduino schicken und er fährt mir den Monitor runter.
Das Problem ist, dass ich natürlich gern eine .exe hätte, die das Wort "down" an den Arduino schickt, damit ich sie in Windows automatisch ausführen lassen kann, wenn der Rechner heruntergefahren wird.
Ich bin ziemlich sicher, dass das in FB nur 2 Zeilen sind, aber ich habe da keine Erfahrung und möchte mich eigentlich auch nicht in FB einarbeiten um 2 Zeilen zu schreiben.
Dieser Code ist Arduino-seitig:
[code]
if (Serial.available()) {
command = Serial.readStringUntil("\n");
command.trim();
if (command.equals("down")) {
direction = 1;
digitalWrite(DIR, direction);
while (digitalRead(Breakdown) == HIGH) {
digitalWrite(STEP, HIGH);
delayMicroseconds(Delay);
digitalWrite(STEP, LOW);
delayMicroseconds(Delay);
}
}
}
[/code]
Die Formatierung hat meine eingerückten Zeilen gefressen, sry.
"Breakdown" ist ein Endlagenschalter, der den Motor stoppt, wenn der Monitor unten angekommen ist. Wie gesagt, läuft wunderbar.
Jetzt habe ich versucht, den COM6 mit FB zu öffnen und das Wort "down" zu schicken, aber das klappt nicht. Weil ich keine Ahnung habe.
[code]
Open com "COM6:9600,N,8," As #1
PRINT #1,"down"
[/code]
So einfach wie ich mir das vorgestellt habe, ist es halt leider nicht...
Danke,
M |
|
Nach oben |
|
|
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 22.08.2021, 16:17 Titel: |
|
|
COM6 ist vorhanden? |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 22.08.2021, 16:39 Titel: |
|
|
Probier mal mit "COM6:9600,N,8,1,CS0,DS0,RS"
(eventuell auch, falls das nicht klappt, zusätzlich mit einer Auswahl dieser: "ME,CS0,DS0,CD0,RS"
siehe mein älterer Beitrag hier: https://forum.qbasic.at/viewtopic.php?p=109593#109593)
Wenn das nicht klappt würd ich probieren Arduino-seitig herauszufinden, ob überhaupt was ankommt, und falls ja, was. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
flice
Anmeldungsdatum: 22.08.2021 Beiträge: 3
|
Verfasst am: 22.08.2021, 17:06 Titel: |
|
|
Vielen Dank für die rasche Antwort!
Ich habe inzwischen versehentlich zeigen können, dass der Motor genug Kraft hat, den Tisch anzuheben und dabei die Gewindespindel auszukugeln. Läuft bei mir.
Ich muss also alles etwas anders verkabeln, um den Code zu testen, während die Spindel repariert wird, darum kann ich nicht sagen, ob es läuft. Wollte mich nur melden, damit es nicht wie Desinteresse aussieht |
|
Nach oben |
|
|
flice
Anmeldungsdatum: 22.08.2021 Beiträge: 3
|
Verfasst am: 27.08.2021, 20:09 Titel: |
|
|
Serial.available() bleibt false, es wird gar keine Verbindung aufgebaut...
Oh, well, dann muss ich wohl doch erstmal paar Videos über FreeBasic schauen.
Dank Euch für die raschen Antworten! |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 28.08.2021, 11:40 Titel: |
|
|
Hi,
prüf noch einmal:
entsprechenden USB-Treiber geladen?
Arduino wird erkannt?
der Arduinocode enthält "Serial.begin(9600);"?
Stimmt COM6?
Code: | 'Testet die ComPorts 1-20 auf Aktivität
Dim As String COMPort
For i As Long = 1 To 20
COMPort = "COM" & Str(i) & ":9600,N,8,1,ME,CS0,DS0,RS"
If (Open Com ( COMPort For Binary As #1 ) = 0 ) Then
Print "COM" & Str(i),
Print COMport
EndIf
Close #1
Next
Sleep
|
Wenn dies alles stimmt solte es funktionieren!
PS: Ich habe so einen Fehler mal lange gesucht, da hatte ich ein USB Ladekabel und kein echtes USB Kabel benutzt. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|