Loading...
  Show Posts
Pages: 1 ... 77 78 [79] 80 81 ... 87
1171  International / Deutsch / Re: Zählung von Impulsen on: February 14, 2012, 12:59:47 am
Nicht schlecht. Könntest Du noch die Schaltung für den NE555 posten, falls das mal jemand nachbauen möchte?
Ändert sich die Frequenz eigentlich linear zum Füllstand? Wenn ja, könnte man ja recht einfach eine Kalibrierung bauen, indem man einmal bei "0" und einmal bei "Voll" die Frequenz z.B. im EEPROM speichert. Somit können dann recht einfach die Sensoren getauscht werden.
1172  International / Deutsch / Re: Udp.h - wo bekomme ich die her? on: February 14, 2012, 12:46:27 am
Das NTP-Beispiel wird mit der neuen IDE so nicht mehr funktionieren. Die Datei "Udp.h" gibt es zwar noch, allerdings wurden Teile davon in die Klasse EthernetClient integriert.
Hier ist ein Beispiel, das auch mit der Version 1.0 der IDE funktioniert:
Code:
/*
 * Time_NTP sketch
 * Example showing time sync to NTP time source
 *
 * This sketch uses the Time library
 * and the Arduino 1.0 Ethernet library
 */

#include <Time.h>
#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <EthernetUDP.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 44 }; // set this to a valid IP address (or use DHCP)

unsigned int localPort = 8888;      // local port to listen for UDP packets

IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in first 48 bytes of message
byte packetBuffer[ NTP_PACKET_SIZE]; // buffer to hold incoming/outgoing packets

time_t prevDisplay = 0;    // when the digital clock was displayed

// A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
  Serial.println("waiting for sync");
  setSyncProvider(getNtpTime);
  while(timeStatus()== timeNotSet)
     ; // wait until the time is set by the sync provider
}

void loop()
{
  if( now() != prevDisplay)   //update the display only if the time has changed
  {
    prevDisplay = now();
    digitalClockDisplay();
  }
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(dayStr(weekday()));
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(monthShortStr(month()));
  Serial.print(" ");
  Serial.print(year());
  Serial.println();
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding
  // colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

/*-------- NTP code ----------*/

unsigned long getNtpTime()
{
  sendNTPpacket(timeServer); // send an NTP packet to a time server
  delay(1000);
  if ( Udp.parsePacket() ) {
     Udp.read(packetBuffer,NTP_PACKET_SIZE);  // read packet into buffer


     //the timestamp starts at byte 40, convert four bytes into a long integer
     unsigned long hi = word(packetBuffer[40], packetBuffer[41]);
     unsigned long low = word(packetBuffer[42], packetBuffer[43]);
     // this is NTP time (seconds since Jan 1 1900
     unsigned long secsSince1900 = hi << 16 | low; 
     // Unix time starts on Jan 1 1970
     const unsigned long seventyYears = 2208988800UL;     
     unsigned long epoch = secsSince1900 - seventyYears;  // subtract 70 years
     return epoch;
  }
  return 0; // return 0 if unable to get the time
}

// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(IPAddress address)
{
  memset(packetBuffer, 0, NTP_PACKET_SIZE);  // set all bytes in the buffer to 0

  // Initialize values needed to form NTP request
  packetBuffer[0] = B11100011;   // LI, Version, Mode
  packetBuffer[1] = 0;     // Stratum
  packetBuffer[2] = 6;     // Max Interval between messages in seconds
  packetBuffer[3] = 0xEC;  // Clock Precision
  // bytes 4 - 11 are for Root Delay and Dispersion and were set to 0 by memset
  packetBuffer[12]  = 49;  // four-byte reference ID identifying
  packetBuffer[13]  = 0x4E;
  packetBuffer[14]  = 49;
  packetBuffer[15]  = 52;

  // send the packet requesting a timestamp:
  Udp.beginPacket(address, 123); //NTP requests are to port 123
  Udp.write(packetBuffer,NTP_PACKET_SIZE);
  Udp.endPacket();
}
Das Beispiel verwendet zusätzlich die Time-Bibliothek, die man unter http://www.arduino.cc/playground/Code/Time findet. Beim Auspacken der Lib aber aufpassen im ZIP-File selbst ist nochmal ein Verzeichnis "Time". Dieses muss in das libraires-Verzeichnis kopiert werden, damit die IDE die Lib findet. Prüfen kann man das recht einfach. Nach einem Neustart der IDE sollten unter File->Examples die Beispiele der Time-Lib zu finden sein. Witzigerweise läßt sich das NTPTime Beispiel aus der Lib nicht direkt compilieren, da es noch eine andere Lib zu benötigen scheint.
1173  International / Deutsch / Re: DCF77 über Digitalpin? on: February 13, 2012, 03:25:56 am
Danke für die Aufklärung. Das wusste ich nicht (mehr), falls es mir jemals untergekommen ist/war.
Und wieder was gelernt....
1174  International / Deutsch / Re: Breakoutboard für 3Wire LCD? on: February 13, 2012, 01:01:29 am
Orphans und Thermals sind an. Die Fläche ist auch als GND gekennzeichnet. Leider hab ich das Problem, das ich ab einem Isolate-Wert größer 12 keine Verbindungen der Masse-Flächen mehr zwischen den Lötpunkten hindurch bekomme und somit einige Flächen nicht mehr mit Masse verbunden sind. Dann müßte ich doch mit Drahtbrücken arbeiten, was ich ja vermeiden wollte.
Einen Vorwiderstand für die Displaybeleuchtung kann ich noch einsetzen.
Dann noch eine blöde Frage, wo muss der Glättungskondensator denn dran und wie groß sollte der dimensioniert sein?
Hier mal das Layout ohne Silkscreen und mit einem Isolate-Wert von 12:
1175  International / Deutsch / Re: Z_OSC server startet nicht ! on: February 12, 2012, 11:06:36 pm
Mit welcher Version der IDE compilierst Du Dein Programm? Leider gibt es noch viele Bibliotheken die mit der Version 1.0 Probleme machen. Falls das der Fall ist, einfach mal Version 022 verwenden.
1176  International / Deutsch / Re: Breakoutboard für 3Wire LCD? on: February 12, 2012, 05:16:08 am
Ich habe mal meine ersten Schritte mit Eagle gemacht und ein Layout zusammengestümpert. Die Platine ist knapp 48mm x 35mm groß.
Eagle hat beim Export nix mehr zu meckern, aber evtl. kann ja mal jemand einen Blick drauf werfen.
1177  International / Deutsch / Re: DCF77 über Digitalpin? on: February 11, 2012, 03:03:38 pm
Jedes Element im struct DCF77Buffer ist 64 bit groß, damit ist eine Instanz des struct fast 1KB groß. Ist das nicht ein wenig übertrieben für die 59 Bit die das Signal eigentlich hat?
1178  International / Deutsch / Re: Online-Abfrage von Bahn-Verbindung on: February 11, 2012, 02:34:47 pm
@df6ih: Wozu brauchst Du "Tastatureingaben"? Es ist doch wurscht woher die Daten der Parameter kommen. Da die Werte bekannt sind, werden die beim HTTP-Request in Richtung Webserver der Bahn übertragen. Egal ob per GET oder per POST, die Daten stecken immer in einem Request. Bei GET in der URL, genauer eigentlich URI und beim POST im Body des Request. Die Daten werden doch nicht einzeln übertragen, jedesmal, wenn Du im Formular etwas einträgst oder anklickst. Das geht zwar auch (per AJAX), wird aber im Bahnformular nicht verwendet und war auch nie Gegenstand der Diskussion.
Es gibt auch prinzipiell keinen Unterschied zwischen Deinem Browser und er Arduino-Software. Am Ende schickt ein Programm über eine TCP Verbindung auf Port 80 an die IP 81.200.198.90 einen größeren String, der dann von der Gegenstelle interpretiert wird. Die daraus resultierende Antwort schickt dann der Bahnserver wieder über die gleiche Verbindung zurück.
Spannend bleibt die Frage nach den POST Parametern allemal. Leider ist mein Arduino-Ethernet ziemlich tief in meiner Wetterstation vergraben, daher kann ich das zur Zeit nicht testen. Ich behalte das aber mal im Hinterkopf, denn so offene Fragen zu Sachen die eingentlich funktionieren müßten, mag ich auch nicht.
1179  International / Deutsch / Re: Online-Abfrage von Bahn-Verbindung on: February 11, 2012, 03:13:50 am
Also, wie GET und POST funktioniert, weiß ich schon seit einiger Zeit. Vielen Dank für die Belehrung.
Quote
Die geposteten Variablen werden innerhalb der Übertragung des Servers tranportiert, da kann man erst mal nicht eingreifen. Was du im Link zeigst sind GET Variablen, die kann man sehr wohl beeinflussen, dummerweise handelt es sich im vorliegenden Fall aber um beides.
Was meinst Du hier mit "eingreifen"? Wie bereits zweimal im Thread erwähnt, werden die POST Daten mit dem HTTP-Request vom Arduino mitgeschickt. Die entsprechende Zeile hatte ich im übrigen nocheinmal explizit gepostet. Meine Lösung verwendet tatsächlich nur GET Parameter, was ja offensichtlich auch zu funktionieren scheint. Dabei ging es mir vor allem darum, das diese Lösung Speicher- und Programmtechnisch deutlich einfacher und effektiver ist. Das sollte aber nicht bedeuten, das POST nicht funktionieren kann, was Du offensichtlich zu glauben scheinst.
Quote
Hinzu kommen alle möglichen Sicherheitsabfragen der Server neuerer Bauart ( sprich Betriebssysteme und deren Kompilate) die nach Spam Methoden suchen, eben genau die, die es im erfolgreichen Nutzungsfalle brauchen würde.
Auch hier verstehe ich leider wieder nicht ganz, was Du damit sagen willst. Was hat bitte der Server (gemeint ist die Maschine, das Blech, nicht das Webserver-Programm) und das Betriebssystem mit dem Web-Request zu tun. Von welchen Sicherheitsabfragen redest Du konkret?
Arduio und der Webserver (gemeint ist das Programm und nicht der Computer) der Bahn reden ja schon miteinander. Diese Strecke der Kommunikation können wir also bei der Analyse erstmal vernachlässigen. Nun würde es ehr darum gehen, zu schauen ob die vom Arduino erzeugten HTTP-Requests RFC-konform sind und daher vom Webserver (Programm nicht Computer) korrekt verarbeitet werden können. Hier ist der Vorschlag von Udo das ganze zum Testen über einen Proxy laufen zu lassen schon mal nicht schlecht.
Da hier ein gewisser Aufwand entsteht, sollten wir dauf das Fedback von "nachtaktiv68" warten, ob die reine GET-Methode klappt, oder ob wir weiter mit der POST Methode testen sollen.
1180  International / Deutsch / Re: Welche Programmiersprache ist dem Arduino am ähnlichsten ? on: February 10, 2012, 03:17:17 pm
Quote
Diese Aussage ist falsch. Der Arduino wird in C++ programmiert und nicht in C.
Auch wenn die beiden Sprachen sich oberflaechlich aehnlich sind, so sind es doch zwei voellig unterschiedliche Sprachen.
Also C und C++ sind keine unterschiedlichen Sprachen. C++ ist eine Erweiterung von C um objektorientierte Programmierung, wobei C als vollständige Teilmenge in C++ enthalten ist.
Somit wird der Arduino sehr wohl in C programmiert. Sämtliche Funktionen die Du verwendest und die nicht an einer Klasse respektive Objekt hängen sind C.
Der größte Teil der in der IDE verwendeten Funktionen sind sogar C-Funktionen.
1181  International / Deutsch / Re: Online-Abfrage von Bahn-Verbindung on: February 10, 2012, 03:11:32 pm
POST Variablen lassen sich nicht "setzen", GET natürlich schon, aber die alleine lassen garnichts zu.

Ist doch aber auch klar: So lange ich einen Client simmuliere muss ich auch mit jedem anderen Client (=Browser) in der Lage sein das nachzumachen.

Und so lässt sich relativ einfach feststellen, dass der eingeschlagene Weg (ohne weitere Unterstützung) ein Holzweg ist.

Mindestens das cURL müsste als Befehl in der Arduino Umgebung funktionieren, was es aber allem Anschein nach nicht tut.
Sorry, aber ich verstehe leider überhaupt nicht was Du mit diesen Sätzen sagen willst. Die POST Daten hat der o.p. ja in seinem Request den er absetzt drin.
Code:
clientBahn.println("date=10.02.12&productClassFilter=1&trainname=874&stationFilter=80&start=Suchen");
Was meinst Du mit
Quote
Und so lässt sich relativ einfach feststellen, dass der eingeschlagene Weg (ohne weitere Unterstützung) ein Holzweg ist.
Und wie kommst Du von simulierten Clients (Browser) zu dieser Schlussfolgerung?
Und welcher Befehl soll "cURL" sein?
Ich gebe es zu, aber ich bin verwirrt....
1182  International / Deutsch / Re: Hygrosens I2C TEMOD I2C wie korrekte Temperatur Ausgabe? on: February 10, 2012, 04:21:10 am
Mit folgender Formel:
b1 << 8 , das entspricht der Multiplikation mit 256, also 14*256
das ganze plus b2, also + 46
Dann die Formel aus dem Datenblatt für den Sensor R3 (ist geraten, denn hier passt der Wert zum gemessenen Wert)
V/64 - 32
das entspricht dann:
(14*256+46)/64-32 = 24,71875 ~ 24,72°C
1183  International / Deutsch / Re: Online-Abfrage von Bahn-Verbindung on: February 10, 2012, 03:54:27 am
Cookies sind nicht zwingend egal. Es mag durchaus sein, das in diesem Fall Cookies keine Rolle spielen, aber das kann man nicht verallgemeinern. Wird ein Cookie als Session-Cookie verwendet, z.b. um SPAM-Anfragen zu verhindern, dann spielt das schon ein Rolle.

Unabhängig davon habe ich mit telnet mal ein wenig gespielt und siehe da, es muss nicht zwingend POST sein :-)

Du kannst Deine Parameter auch einfach per GET an den Request-String anhängen. Was ich allerdings gemacht habe ist die "&amp;" in einfache "&" zu ändern, so wie es das Protokoll vorsieht. Vor allem sieht man, das Du den Request auf das GET und den "Host" Parameter eindampfen kannst. Das spart wieder Speicher für Dein Programm, weil Du die ganzen Strings wie Useragent etc. nicht mehr brauchst. Auch der LD-Parameter ist nicht notwendig, Du kannst direkt mit dem "GET /bin/trainsearch.exe/dox?date=10.02.12&productClassFilter=1&trainname=874&stationFilter=80&start=Suchen HTTP/1.1" die Abfrage lostreten.
Siehe hier:
Quote
telnet reiseauskunft.bahn.de 80
Trying 81.200.198.90...
Connected to reiseauskunft.bahn.de.
Escape character is '^]'.
GET /bin/trainsearch.exe/dox?date=10.02.12&productClassFilter=1&trainname=874&stationFilter=80&start=Suchen HTTP/1.1
Host: reiseauskunft.bahn.de

HTTP/1.1 200 OK
Date: Fri, 10 Feb 2012 08:52:47 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-1

e35
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Deutsche Bahn - </title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="expires" content="-1" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="viewport" content="width=device-width; initial-scale=1.0;" />
<meta name="format-detection" content="telephone=no" />
<meta name="HandheldFriendly" content="true" />
<link rel="shortcut icon" href="http://www.img-bahn.de/v/861/img/favicon.ico" />
<link rel="apple-touch-icon" type="image/x-icon" href="http://www.img-bahn.de/v/861/img/apple-touch-icon.png"/>
<link rel="stylesheet" type="text/css" href="bahn_mobile.min.css" />
<link rel="stylesheet" type="text/css" href="http://www.img-bahn.de/v/861/css/hafas_mobile.css" />
<link rel="stylesheet" type="text/css" href="notouch.min.css" />
</head>
<body >
<div id="doc">
<div id="header">
<div class="logo"><img src="http://www.img-bahn.de/v/861/img/ua_xhtml/l_bahnmobile.gif" alt="DB - Deutsche Bahn" height="15" width="60" /></div>
<div id="branding">
<div class="bar1"> </div>
<div class="bar2"> </div>
</div>
</div>
<div id="content">
<h1>
<img class="prio1Icon" src="http://www.img-bahn.de/v/861/img/ua_xhtml/icon_echtzeit_grau_22x22.gif" height="22" width="22" alt="" /> <span class="bold">Fahrtinformationen</span>
</h1>
<div class="haupt bold">
ICE  874&nbsp;(Zuglauf vom: 10.02.12)</div>
<table class="ovTable">
<tr>
<th class="arrival ovHead2 bold" colspan="2">an<br />ab</th>
<th class="station ovHead2 bold">Halt<br />Aktuelles</th>
</tr>
<tr class="current">
<td>
09:52
</td>
<td>&nbsp;</td>
<td>aktuelle Zeit </td>
</tr>
<tr>
<td class="arrival tqdetail">
09:58
<br />
10:00
</td>
<td class="tqdetail rt top">
<span class="bold green">(+0)</span>
<br />
<span class="bold green">(+0)</span>
</td>
<td class="station tqdetail top">
Braunschweig Hbf
<br />
</td>
</tr>
<tr>
<td class="arrival tqdetail">
10:16
<br />
10:18
</td>
<td class="tqdetail rt top">
<span class="bold green">(+0)</span>
<br />
<span class="bold green">(+0)</span>
</td>
<td class="station tqdetail top">
Wolfsburg Hbf
<br />
</td>
</tr>
<tr>
<td class="arrival tqdetail">
11:11
<br />
&nbsp;
</td>
<td class="tqdetail rt top">
<span class="bold green">(+0)</span>
<br />
&nbsp;
</td>
<td class="station tqdetail top">
Berlin-Spandau
<br />
</td>
</tr>
<tr>
<td class="arrival tqdetail">
11:25
<br />
&nbsp;
</td>
<td class="tqdetail rt top">
<span class="bold green">(+0)</span>
<br />
&nbsp;
</td>
<td class="station tqdetail top">
Berlin Hbf
<br />
</td>
</tr>
<tr>
<td class="arrival tqdetail">
11:37
<br />
&nbsp;
</td>
<td class="tqdetail rt top">
<span class="bold green">(+0)</span>
<br />
&nbsp;
</td>
<td class="station tqdetail top">
Berlin Ostbahnhof
<br />
</td>
</tr>
</table>
<div class="bline">
<a class="nebenbtn" href="http://reiseauskunft.bahn.de/bin/trainsearch.exe/dox?">Zur&#252;ck</a>
</div>
</div>
<div id="footer">
<ul class="footer">
<li class="rline"><a class="footerlinks" href="http://reiseauskunft.bahn.de/bin/detect.exe/dox?">Startseite</a></li>
<li ><a class="footerlinks" href="http://reiseauskunft.bahn.de/bin/help.exe/dox?tpl=imprint&amp;">Impressum</a></li>
</ul>
</div>
<p class="webtrack">
<img src="http://t.bahn.de/b/ss//5/169869896?AQB=1&amp;gn=MOBI_ASK_DEU_de_Zuginfo&amp;ch=MOBI_ASK_DEU_de&amp;ev=event48,event19&amp;AQE=1" width="5" height="5" alt="" />
</p>
</div>
</body>
</html>

0

Connection closed by foreign host.

1184  International / Deutsch / Re: Online-Abfrage von Bahn-Verbindung on: February 10, 2012, 02:51:49 am
Werden von der Seite evtl. Cookies gesetzt, die Du beim Request wieder mitschicken musst?
1185  International / Deutsch / Re: Brauche Hilfe!! Schalter wird zu lange ausgelesen. on: February 09, 2012, 03:48:05 pm
Weil in
Code:
if(last_schalter_stellung = false && schalter_stellung == true) //aufsteigende flanke
immer noch ein Fehler steckt.
Code:
if(last_schalter_stellung == false && schalter_stellung == true) //aufsteigende flanke
Der Vergleich mit dem "==" gilt für beide Teile Deiner if-Bedingung. Außerdem wäre es gut, wenn Du den "#"-Button im Forum zum posten von Code verwenden würdest, das macht uns das Lesen leichter.
Mario.
Pages: 1 ... 77 78 [79] 80 81 ... 87