Offline
Newbie
Karma: 0
Posts: 13
|
 |
« on: February 04, 2012, 05:40:54 pm » |
Wie kann man eine Verbindung über die Serial Schnittestelle erstellen? Hab folgendes laufen auf dem Arduino. Doch jedes mal meint er, dass die Serielle schnittstelle nicht verfügbar ist. #void setup() { Serial.begin(9600); pinMode(outPin, OUTPUT); Serial.flush(); mail = HIGH; }
void loop() { delay(1000); if(Serial.available()) { val = Serial.read(); if(val == 0) { Serial.println("Ja"); digitalWrite(outPin,HIGH); delay(10000); } else if(val == 1) { Serial.println("Nein"); digitalWrite(outPin,HIGH); delay(10000); } }
Python Code try: ser = serial.Serial('COM7', 9600) print "Serial connected" time.sleep(3.0) except serial.SerialException: print "no device connected - exiting" sys.exit()
Laut Python funktioniert es und es kommt keine Fehlermeldung raus. Es liegt irgendwie an Arduino. RX und TX leuchten je nach delay auf. Wenn ich den Python Skript laufen lasse, dann hab ich in der SDK keine Verbindung mehr zur Arduino --> heißt Python hat zugriff auf Arduino, nur leider übersteht er halt nie die if bedingung. Leider weiß ich echt nicht mehr weiter
|
|
|
|
« Last Edit: February 06, 2012, 02:30:03 pm by Sylar »
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15742
+39 349 2158303
|
 |
« Reply #1 on: February 04, 2012, 05:56:02 pm » |
Die Sache funktioniert wenn Du probeweise über das Terminal von IDE Daten an den Arduino verschickst? Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 87
|
 |
« Reply #2 on: February 05, 2012, 01:02:40 am » |
Hallo,
mit "if(Serial.available() > 0)"
wird geprüft ob Daten am Port angekommen sind, nicht ob der Port da ist.
Grüße, Jürgen
|
|
|
|
|
Logged
|
|
|
|
|
Heidelberg
Offline
Full Member
Karma: 1
Posts: 209
Arduino rocks
|
 |
« Reply #3 on: February 05, 2012, 08:38:13 am » |
Was steht denn in {...} ? 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #4 on: February 05, 2012, 10:38:51 am » |
Die Sache funktioniert wenn Du probeweise über das Terminal von IDE Daten an den Arduino verschickst? Grüße Uwe
Wie meinst das genau? Hab ein anders Programm probiert, mit der ich über das Terminal Daten ans Arduino verschicke. Das funktionierte. Aber mit meinem Code, kann ich keine Daten übers Terminal verschicken, da er ja aufs Python Skript abwartet und somit besteht keine Verbindung zwischen der SDK und Arduino. Hallo,
mit "if(Serial.available() > 0)"
wird geprüft ob Daten am Port angekommen sind, nicht ob der Port da ist.
Grüße, Jürgen
Aha, dachte der Überprüft ob der Port da ist oder nicht. Und wie kann ich es überprüfen, ob der Port da ist? Was steht denn in {...} ?  siehe oben, hab es oben editiert
|
|
|
|
|
Logged
|
|
|
|
|
Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 87
|
 |
« Reply #5 on: February 05, 2012, 11:48:41 am » |
Hallo,
Port da - oder nicht da - gibt es am Arduino nicht. Der Standard-Port ist ja nicht dynamisch, wie z.B. am PC wo man mal schnell was per USB dazustecken kann.
Grüße, Jürgen
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15742
+39 349 2158303
|
 |
« Reply #6 on: February 05, 2012, 12:45:17 pm » |
Wenn Du mit einem Terminalprogramm vom PC Daten an den Arduino senden kannst und dieser sie sieht dann tippe ich daß das Problem auf der PC Seite liegt; entweder beim Programm oder beim Betriebssystem, das die Schnittstelle nicht richtig anspricht. Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #7 on: February 05, 2012, 04:25:21 pm » |
Hallo,
Port da - oder nicht da - gibt es am Arduino nicht. Der Standard-Port ist ja nicht dynamisch, wie z.B. am PC wo man mal schnell was per USB dazustecken kann.
Grüße, Jürgen
Stimmt..aber ich brauche ja eine Überprüfung, ob eine Serialverbindung existiert oder nicht. Liege ich da falsch? Wenn Du mit einem Terminalprogramm vom PC Daten an den Arduino senden kannst und dieser sie sieht dann tippe ich daß das Problem auf der PC Seite liegt; entweder beim Programm oder beim Betriebssystem, das die Schnittstelle nicht richtig anspricht. Grüße Uwe
Über das SerialMonitor von ArduinoSDK kann ich aufs Arduino zugreifen. Also wenn ich nur das Arduino starte, dann blinkt nur das TX auf. Wenn ich das Python Skript starte, dann blinkt auch das RX mit. Theoretisch können doch beide mit dem Arduino kommunizieren, sonst würde TX nicht aufleuchten (Arduino), sowie das Python Skript(RX). Ich glaube es fehlt irgendwie noch die Verbindung über die Serial Schnittstelle..
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15742
+39 349 2158303
|
 |
« Reply #8 on: February 05, 2012, 05:34:29 pm » |
Wenn das TX und das RX LED blinkt dann heißt das das Daten in beide richtungen verschickt werden. Hast Du die gleichen Parameter der seriellen Schnittstelle eingestellt (Baudrate, Start-Stop-Bit, Parität)? Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #9 on: February 06, 2012, 03:08:18 am » |
Im Prinzip hab ich nur in den Arduino,Python Code geschrieben, dass die Baudrate 9600 ist, sowie der COM anschluss.
Aber hier mal die Eigenschaften des Arduinos Bits per Sec: 9600 Datenbits: 8 Parität: Keine Stopbits: 1 Russsteuerung: Keine
Habe hier nix verändert und alles original gelassen.
|
|
|
|
|
Logged
|
|
|
|
|
Heilbronn
Offline
Jr. Member
Karma: 0
Posts: 87
|
 |
« Reply #10 on: February 06, 2012, 11:11:21 am » |
Hallo,
kommt auf der PC-Seite was an? Der Arduino sollte laut Deinem Scetch ja alle 1 Sekunde "Nein" schicken...
Grüße, Jürgen
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #11 on: February 06, 2012, 12:21:16 pm » |
Auf der PC Seite kommt nix an, weil Arduino die if bedingung nicht besteht und somit kein "nein" oder "ja" rückgeben kann.
Habe nur nach der if bedingung noch ein else, wo ich im serial monitor sehen kann, dass er die if bedingung nicht erfüllt. Das sehe ich, aber mehr leider nicht..
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 16
Posts: 3196
20 LEDs are enough
|
 |
« Reply #12 on: February 06, 2012, 01:13:39 pm » |
Dann ändere Dein Programm doch mal so, daß immer etwas ausgegeben wird. Erst einmal den Fehler eingrenzen...
Ich würde ja vermuten, daß Du '0' und 0x0 sowie '1' und 0x1 verwechselst.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15742
+39 349 2158303
|
 |
« Reply #13 on: February 06, 2012, 01:27:58 pm » |
Das ist auch mein Verdacht. Schicke mal das Empfangene Zeichen als Dezimalwert an den PC zurück. einfach Serial.println(val,DEC); Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #14 on: February 06, 2012, 02:23:44 pm » |
HABS HINBEKOMMEN!!
es fehlte bei if(val == 0) die Anführungszeichen. --> if(val == '0')
ansonsten hat fast alles gepasst. Aktuell erkennt er bei mir in kürzester Zeit, dass eine Mail da ist.
Echt sehr geil! Ein großer Aufwand, aber top wie das läuft....nächstes Ziel Facebook Notification^^
Ich möchte mich hiermit bei allen für die Ratschläge und Tipps bedanken!! Klasse
|
|
|
|
|
Logged
|
|
|
|
|
|