mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Benötige Hilfe betreffend eines C-Codes


Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!
Mir ist jetzt ein ganzer C-Code von einem System vorgsetzt worden, und 
ich soll diesen auch verstehen.
Die Funktion soll folgendes sein:
Über eine RS485 wird ein Wert eingelesen (als String) und je nach 
Eingabe werden Digitale Potentiometer angesteuert und die Wiperposition, 
folglich der Widerstand, verändert.

Möchte den C Code erst nach erbitten posten, da ihr sonst glaubt ich 
mein das nicht ernst.

LG

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, da kann man nichts machen ...

;-)

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt mal im ernst, was ist eigentlich Deine Frage?

Gruß

Olaf

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Jetzt mal im ernst, was ist eigentlich Deine Frage?
>
> Gruß
>
> Olaf

Meine Frage:
Kurz gesagt, RS485 begreifen, anhand eines vorgsetzten C-Codes? °_°

Hab keinen Plan + 1, aber würde mich freuen, wenn sich jemand einmal 
diesen C Code ansehen möchte.
LG

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist der Code ?

Autor: Marcus Kunze (marcusk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kurz gesagt, RS485 begreifen
das wird schwer, weil RS485 erstmal nur eine Hardware schnittstelle ist, 
da gibt es in Software nicht zu begreifen.

Autor: Peter G. punkt (grudolf)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bernd schrieb:
> Wo ist der Code ?

Poste ich jetzt

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, dann häng doch den Code an Dein nächstes Posting ran.

Ansonsten findest Du mit Google auch jede Menge über RS485.
Das lesen und verstehen. Dann erst den Code anschauen.


Gruß

olaf

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Konsequenterweise gibt es ja auch keine SW dazu zu sehen...

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Kunze schrieb:
>> Kurz gesagt, RS485 begreifen
> das wird schwer, weil RS485 erstmal nur eine Hardware schnittstelle ist,
> da gibt es in Software nicht zu begreifen.

Okay...
Das heißt, kein standardmäßiges Protokoll?

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schreib einfach zu langsam ...

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Naja, dann häng doch den Code an Dein nächstes Posting ran.
>
> Ansonsten findest Du mit Google auch jede Menge über RS485.
> Das lesen und verstehen. Dann erst den Code anschauen.
>
>
> Gruß
>
> olaf

PS: Standardbefehle wie printf oder ähnliches müssen nicht erläutert 
werden, nur den Sinn des Programms und die Funktions betreffend RS485

Autor: Peter G. punkt (grudolf)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Ich schreib einfach zu langsam ...

Autor: Rene H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mail mir doch mal den Code. Einfach auf mein Nick klicken und Nachricht 
schreiben.

Autor: Rene H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, hat sich erledigt :-)

Autor: Olaf Dreyer (Firma: O.D.I.S.) (dreyero)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auf den ersten Blick sage, der Code macht genau das was er 
soll.
Oder etwa nicht?

Er ist ja sogar kommentiert!!!  ;-)

Gruß

Olaf

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olaf Dreyer schrieb:
> Ich würde auf den ersten Blick sage, der Code macht genau das was er
> soll.
> Oder etwa nicht?
>
> Er ist ja sogar kommentiert!!!  ;-)
>
> Gruß
>
> Olaf

Ja der Code ist aufjeden Kommentiert, nur fehlt mir dazu das nötige 
Wissen betreffend RS485 um auch die Funktion genau zu verstehen, wann 
und warum er welche Befehle einliest....
Hilfe wäre super...nicht nur herumflamen ;-D

Autor: Marcus Kunze (marcusk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ja der Code ist aufjeden Kommentiert, nur fehlt mir dazu das nötige
> Wissen betreffend RS485 um auch die Funktion genau zu verstehen, wann
hier gibt es ein spezielles wissen über RS485!

getc() liest einfach das nächsten zeichen was über die Schnittstelle 
übertragen wurden ist. Das ganze wird dann in einem kleiner Array 
gespeichert. Wenn am ende eine Enter (\n) kommt, dann wird das Array 
ausgewertet.

erste kommt die Adresse, dahinter kommen der wert für die beiden Regler, 
das wars.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:

> Ja der Code ist aufjeden Kommentiert, nur fehlt mir dazu das nötige
> Wissen betreffend RS485 um auch die Funktion genau zu verstehen,


das brauchst du auch gar nicht.
Für dich als Programmierer kommen einfach nur Zeichen über eine 
Schnittstelle herein.

Diese Zeichen werden in einem String gesammelt und wenn der String zu 
Ende ist (erkennbar am Carriage Return) wird er ausgewertet. Offenbar 
ist der String sehr strikt aufgebaut, da die Auswertung auf 
Fehlerbehandlung verzichtet und davon ausgeht, dass dieselben Werte im 
String immer an derselben Stelle stehen.

Du brauchst kein Wissen über RS485, du brauchst Wissen über 
Stringverarbeitung in C! :-)

OK. Das Programm könnte an manchen Stellen ein wenig klarer geschrieben 
sein, aber die meisten hier haben schon Schlimmeres gesehen.
Alles in allem, wenn man weiß wie Stringverarbeitung in C funktioniert 
und die Kommentare liest, sollte auch ein nicht so erfahrener 
C-Programmierer eigentlich keine großen Schwierigkeiten damit haben.

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Kunze schrieb:
>> Ja der Code ist aufjeden Kommentiert, nur fehlt mir dazu das nötige
>> Wissen betreffend RS485 um auch die Funktion genau zu verstehen, wann
> hier gibt es ein spezielles wissen über RS485!
>
> getc() liest einfach das nächsten zeichen was über die Schnittstelle
> übertragen wurden ist. Das ganze wird dann in einem kleiner Array
> gespeichert. Wenn am ende eine Enter (\n) kommt, dann wird das Array
> ausgewertet.
>
> erste kommt die Adresse, dahinter kommen der wert für die beiden Regler,
> das wars.
DANKE!


Aaaaber, für was ist am Anfang des Programms das Echo und für was die 
Carridge Return Abfrage bzw. dies mit \0 ersetzt wird?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Diese Zeichen werden in einem String gesammelt und wenn der String zu
> Ende ist (erkennbar am Carriage Return) wird er ausgewertet. Offenbar
Nur der vollständigkeit halber:
- ein \n ist ein Newline/Formfeed
- ein \r ist ein Carriage Return
;)

> Aaaaber, für was ist am Anfang des Programms das Echo und für was die
> Carridge Return Abfrage bzw. dies mit \0 ersetzt wird?
\0 = "String ende zeichen" in C

und was für ein echo?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:
>
> Aaaaber, für was ist am Anfang des Programms das Echo

Damit ein Mensch, der am anderen Ende der Leitung sitzt auch auf seinem 
Bildschirm eine Ausgabe bekommt und so sieht was übertragen wurde.
Es kann auch sein, dass am anderen Ende eine Maschine die Strings 
wegschickt und die Zeichen zur Bestätigung des korrekten Empfangs wieder 
zurückgeschickt haben möchte. Wenn du also rausfinden willst, warum da 
ein Echo zurückgeschickt wird, musst du nachsehen wer am anderen Ende 
der Leitung sitzt und was der mit dem Echo macht.

> und für was die
> Carridge Return Abfrage

Damit man weiß, wann der String zu Ende ist.
Wenn auf der Schnittstelle daherkommt
esistallessokompliziert
woher weißt du denn wo ein Wort beginnt und wo ein Wort endet?
es
ist
alles
so
kompliziert
Die Carriage Return (Zeilenumbrüche) verraten dir wo ein Wort aufhört

> bzw. dies mit \0 ersetzt wird?
Damit ein C-String daraus wird!

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> putc(input_rs232); //ECHO für serielle Schnittstelle
Meinst du das?
Steht doch daneben... es wird das aktuelle Zeichen (offensichtlich zu 
debugzwecken oder weil die Gegenstelle das braucht) ausgegeben.

Also ETWAS Nachdenken darf auch erlaubt sein wenn man keine Ahnung hat, 
oder bezog sich das darauf das du weder von C noch von Controller, noch 
von Programmieren Ahnung hast oder lieber andere für dich arbeiten läßt?

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läubi .. schrieb:
>> putc(input_rs232); //ECHO für serielle Schnittstelle
> Meinst du das?
> Steht doch daneben... es wird das aktuelle Zeichen (offensichtlich zu
> debugzwecken oder weil die Gegenstelle das braucht) ausgegeben.
>
> Also ETWAS Nachdenken darf auch erlaubt sein wenn man keine Ahnung hat,
> oder bezog sich das darauf das du weder von C noch von Controller, noch
> von Programmieren Ahnung hast oder lieber andere für dich arbeiten läßt?

Drittes

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:
> Drittes
Und warum sagst du dem der dir das vorsezt nicht das du keine Ahnung 
hast?
In so einem Fall wäre es zumindest mal hilfreich ein paar Tutorials im 
web durchzugehen das man wenigstens etwas versteht wie es 
funktionieren soll?

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läubi .. schrieb:
> Peter G. punkt schrieb:
>> Drittes
> Und warum sagst du dem der dir das vorsezt nicht das du keine Ahnung
> hast?
> In so einem Fall wäre es zumindest mal hilfreich ein paar Tutorials im
> web durchzugehen das man wenigstens etwas versteht wie es
> funktionieren soll?

Weil man heutzutage nicht alles erklärt bekommen kann in der 
Gesellschaft, so traurig es auch ist...

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn ich jetzt das Ganze richtig verstehe:

Interrupt #int_rda

input_rs232=getc(); // Wartet bis ein Zeichen an der RS232 bzw. RS485 
anliegt
putc(input_rs232); // Echo an die RS232 senden

if (index>=29) // Diese if Bedingung verstehe ich NICHT! Warum auf 0 
setzen /////////////////wenn Index den Wert 29 hat?
index=0;

if (input_rs232==0x0d) // Warum den Wert 13(0x0D) Abfragen?
{
daten[index] = '\0';   // Diesen Befehl verstehe ich überhaupt nicht
rs232_ready = true;    // warum ist das Array Daten auf \0 zu setzen?

}

Wäre froh, wenn mir dies schon jemand beantworten könnte.

LG

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:

> if (index>=29) // Diese if Bedingung verstehe ich NICHT! Warum auf 0
> setzen /////////////////wenn Index den Wert 29 hat?
> index=0;

hat daten vielleicht nur eine Länge von 30 chars?

> if (input_rs232==0x0d) // Warum den Wert 13(0x0D) Abfragen?
> {
> daten[index] = '\0';   // Diesen Befehl verstehe ich überhaupt nicht
> rs232_ready = true;    // warum ist das Array Daten auf \0 zu setzen?


wurde beides schon gestern beantwortet...

Autor: Marcus Kunze (marcusk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> if (index>=29) // Diese if Bedingung verstehe ich NICHT! Warum auf 0
> setzen /////////////////wenn Index den Wert 29 hat?
> index=0;
damit es beim nächsten packet wieder von vorne los gehen kann.

> if (input_rs232==0x0d) // Warum den Wert 13(0x0D) Abfragen?
weil das ein "Enter" ist, wird hier als ende genutzt.

> daten[index] = '\0';
in C werde die strings immer mit 0 abgeschlossen
und dabei wird nicht das array auf 0 gesetzt sonder ein zeichen aus dem 
array

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Justus Skorps schrieb:
> Peter G. punkt schrieb:
>
>> if (index>=29) // Diese if Bedingung verstehe ich NICHT! Warum auf 0
>> setzen /////////////////wenn Index den Wert 29 hat?
>> index=0;
>
> hat daten vielleicht nur eine Länge von 30 chars?
>
>> if (input_rs232==0x0d) // Warum den Wert 13(0x0D) Abfragen?
>> {
>> daten[index] = '\0';   // Diesen Befehl verstehe ich überhaupt nicht
>> rs232_ready = true;    // warum ist das Array Daten auf \0 zu setzen?
>
>
> wurde beides schon gestern beantwortet...

Okay, sorry, habs vergessen, "\0" keinnzeichnet das Ende eines Wortes 
zum Beispiel.
Und der Wert ist eine ganz einfache Wertabrage oder? also 
input_rs232==0x0D.

Dann wäre ich beim Nächsten:

else if (input_rs232==0x20)
{
daten[index++] = 0x30;          //Warum wird das Array erhöht?
}
else
{
daten[index++] = input_rs232;   //Das versteh ich generell nicht, bitte 
um //////////////////////////////////Erklärung!
}

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:

> else if (input_rs232==0x20)
> {
> daten[index++] = 0x30;          //Warum wird das Array erhöht?
> }

wird es doch gar nicht, nur der Index wird nach der Zuweisung erhöht...

> else
> {
> daten[index++] = input_rs232;   //Das versteh ich generell nicht, bitte
> um //////////////////////////////////Erklärung!
> }

was gibt es denn daran nicht zu verstehen? Das empfangene Zeichen wird 
in das daten-array gespeichert...

Vielleicht solltest du dir echt mal ein Grundlagen Buch über C zu Gemüte 
führen...

Autor: Daniel G. (daniel83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>daten[index++] = 0x30;          //Warum wird das Array erhöht?

Es wird nicht das Array erhöht sondern der Index nach der Zuweisung.
also index ist nachher nicht mehr z.b. 1 sondern 2, das spart einfach 
eine Zuweisung

>>daten[index++] = input_rs232;   //Das versteh ich generell nicht, bitte

"input_rs232" ist offensichtlich eine Variable, und du weist dem einen 
Array Element den Wert dieser Variable zu.
Genau das gleiche wie darüber.

Hast du es schonmal mit nem Buch versucht? Von Galileo gibt nen Haufen 
open online Book, die brauchst du nicht mal kaufen, und so nen paar 
Kapitel davon lesen ist bestimmt schneller, als hier solche Fragen 
stellen und auf Antwort warten.
Ist nicht bös gemeint, aber manchmal hilft auch nen Buch..

Gruß Daniel

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Justus Skorps schrieb:
> Peter G. punkt schrieb:
>
>> else if (input_rs232==0x20)
>> {
>> daten[index++] = 0x30;          //Warum wird das Array erhöht?
>> }
>
> wird es doch gar nicht, nur der Index wird nach der Zuweisung erhöht...
>
>> else
>> {
>> daten[index++] = input_rs232;   //Das versteh ich generell nicht, bitte
>> um //////////////////////////////////Erklärung!
>> }
>
> was gibt es denn daran nicht zu verstehen? Das empfangene Zeichen wird
> in das daten-array gespeichert...
>
> Vielleicht solltest du dir echt mal ein Grundlagen Buch über C zu Gemüte
> führen...

Tja meine C Kenntnisse sind nicht gut, dessen bin ich mir bewusst.
Hab nur nicht gewusst dass man mit index++ raufzählt, also das Array 
erhöht.


Dann das Nächste:
//Abfragen ob Broadcast oder die Dev_id stimmt
if (((daten[1] == '0') && (daten[2] == '0')) || ((daten[1] == dev_id0) 
&& (daten[2] == dev_id1)))

Warum wird die erste und die zweite Position des Arrays abgefragt?
Und was heißt hier Broadcast oder Dev_id?

LG und DANKE dass ihr euch meiner Probleme widmet.

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel G. schrieb:
>>>daten[index++] = 0x30;          //Warum wird das Array erhöht?
>
> Es wird nicht das Array erhöht sondern der Index nach der Zuweisung.
> also index ist nachher nicht mehr z.b. 1 sondern 2, das spart einfach
> eine Zuweisung
>
>>>daten[index++] = input_rs232;   //Das versteh ich generell nicht, bitte
>
> "input_rs232" ist offensichtlich eine Variable, und du weist dem einen
> Array Element den Wert dieser Variable zu.
> Genau das gleiche wie darüber.
>
> Hast du es schonmal mit nem Buch versucht? Von Galileo gibt nen Haufen
> open online Book, die brauchst du nicht mal kaufen, und so nen paar
> Kapitel davon lesen ist bestimmt schneller, als hier solche Fragen
> stellen und auf Antwort warten.
> Ist nicht bös gemeint, aber manchmal hilft auch nen Buch..
>
> Gruß Daniel

Nee danke für den Tipp, find ich das Galileo gleich unter Google?
LG

Autor: Daniel G. (daniel83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte, google Galileo openbook c, da sollte was kommen

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel G. schrieb:
> sollte, google Galileo openbook c, da sollte was kommen

Danke hab ich schon! :-)

Autor: Daniel G. (daniel83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>//Abfragen ob Broadcast oder die Dev_id stimmt
>>if (((daten[1] == '0') && (daten[2] == '0')) || ((daten[1] == dev_id0)
>>&& (daten[2] == dev_id1)))

Daten[1] und Daten[2] wird die Adresse sein,

wenn da jeweils 0 drin steht ist Broadcast also an alle.
steht dev_id0 bzw. dev_id1 drin ist das die Adresse von deinem Modul??

es muss reagiert werden, wenn es für alle oder für mich ist, deshalb 
frage ich beides ab.

weißt du generell was dein Programm macht??

Autor: Marcus Kunze (marcusk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Tja meine C Kenntnisse sind nicht gut, dessen bin ich mir bewusst.
> Hab nur nicht gewusst dass man mit index++ raufzählt, also das Array
> erhöht.
ich würde sagen sie sind nicht vorhanden. Es wird hier kein Array 
erhöht. Es wird nur eine Variabel erhöht die zusammen mit dem Array 
verwendet wird.

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Kunze schrieb:
>> Tja meine C Kenntnisse sind nicht gut, dessen bin ich mir bewusst.
>> Hab nur nicht gewusst dass man mit index++ raufzählt, also das Array
>> erhöht.
> ich würde sagen sie sind nicht vorhanden. Es wird hier kein Array
> erhöht. Es wird nur eine Variabel erhöht die zusammen mit dem Array
> verwendet wird.

Na dann halt die Variable im Array. Mann, ihr Deutschen seid aber auch 
immer so penibelst genau...

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel G. schrieb:
>>>//Abfragen ob Broadcast oder die Dev_id stimmt
>>>if (((daten[1] == '0') && (daten[2] == '0')) || ((daten[1] == dev_id0)
>>>&& (daten[2] == dev_id1)))
>
> Daten[1] und Daten[2] wird die Adresse sein,
>
> wenn da jeweils 0 drin steht ist Broadcast also an alle.
> steht dev_id0 bzw. dev_id1 drin ist das die Adresse von deinem Modul??
>
> es muss reagiert werden, wenn es für alle oder für mich ist, deshalb
> frage ich beides ab.
>
> weißt du generell was dein Programm macht??

DANKE!
Ja ich weiß, dass das Programm Daten von LabVIEW ausliest, diese 
Auswertet und dann jeweils digitale Potentiometer einstellt. PS: C-Code 
findest du oben! :-)

Okay danke, aber dann macht das ja keinen Sinn, dann könnte man doch 
gleich einen Broadcast senden oder? Denn egal ob die Adresse Dev_1 oder 
Dev_2 ist, oder eben ein Broadcast, wird sowieso das Gleiche 
abgearbeitet.
LG

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Na dann halt die Variable im Array. Mann, ihr Deutschen seid aber auch
> immer so penibelst genau...
auch das ist falsch, es gibt hier keine Variabel im Array. Es gibt eine 
Variable und ein Array. Beide habe erstmal nicht miteinander zu tun.

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Tja meine C Kenntnisse sind nicht gut


Dann ändere das halt! C lernen ist keine Magie, das haben schon tausende 
andere vor dir gemacht. Also schnapp dir endlich ein Buch, schalt dein 
Gehirn ein und fang an selbstständig zu lernen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:

> Okay danke, aber dann macht das ja keinen Sinn, dann könnte man doch
> gleich einen Broadcast senden oder? Denn egal ob die Adresse Dev_1 oder
> Dev_2 ist, oder eben ein Broadcast, wird sowieso das Gleiche
> abgearbeitet.

Schalt dein Gehirn ein!

Wenn du einen Haufen Leute vor dir hast und Befehle ausgeben musst, 
welche Möglichkeiten gibt es dann

"An alle, haltet die Klappe"
"Hubert, du machst das Fenster auf"

Was könnte das wohl mit der Auswertung der DevId zu tun haben?

Sorry. Aber so hat das echt keinen Sinn. Sag demjenigen, der dir diese 
Aufgabe gegeben hat, er soll dir eine andere Aufgabe geben. In seinem 
eigenen Interesse!

> Na dann halt die Variable im Array. Mann, ihr Deutschen seid aber auch
> immer so penibelst genau...

Zwischenfrage. Hast du in deinem Leben schon mal irgendetwas 
programmiert. Ich meine was anderes als den Videorekorder?
Dann wüsstest du nämlich, dass diese Penibilität noch gar nichts ist im 
Vergleich zu der Penibilität, die ein Computer an den Tag legt. Entweder 
du kannst damit leben, penibel genau zu arbeiten oder Programmieren ist 
definitiv nichts für dich.

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An dieser Stelle fällt mir der Kommentar unseres C Profs zum Thema 
Bücher ein:

Es soll wohl C-Bücher geben, die folgendes Hello World Beispiel bringen:
 #include <stdio>
 void main(void) {
  printf("Hello World!");
 }

Die Begründung der Buchautoren für dieses falsche Programm: Wir wollen 
den Einsteigerleser nicht mit den unnötigen Parametern oder dem Return 
verwirren, sondern das erste Programm so einfach wie möglich halten.

Kommentar: Wenn ein Leser nicht in der Lage ist, die 5 Zeilen eines 
korrekten Programms zu verstehen bzw. wenigstens zu akzeptieren, dass da 
was steht, was erst später erklärt wird, wird er auch definitiv nicht in 
der Lage sein, selbst Programme zu schreiben.

An Peter:

In deinem eigenen Interesse solltest du wirklich absolut bei 0 anfangen 
und dir genügend Zeit nehmen, C zu lernen. Dieses Programm stellt 
absolut keine Höchstanforderungen und sollte, sofern du gewillt bist, 
bei einem Tagesaufwand von 2-3 Stunden (C-lernen; NICHTS mit diesem 
Programm tun!) nach 2 Wochen so, so ähnlich bzw. vielleicht sogar besser 
von dir nachprogrammierbar sein.

Es ist in einer Programmiersprache (übrigens in JEDER, wenn man sie 
beherrschen will!) absolut notwendig, sehr penibel mit seiner 
Ausdrucksweise umzugehen. Mit einer Aussage array[index++] -> das Array 
wird erhöht, wärst du vermutlich unabhängig deiner sonstigen Leistungen 
in jeder Programmierübung an der Uni durchgefallen... Denn die 
eigentlichen Schwierigkeiten kommen wesentlich mehr im Detail. Wenn die 
Grundlagen schon absolut garnicht passen, so kann das generell nichts 
werden.

Was ist denn überhaupt deine Aufgabe in dem Code, sollst du ihn 
anpassen?

Und zum Thema: Warum überhaupt Dev-IDs und nicht alles als Broadcast:
Könnte es sein, dass du von der kompletten Materie nicht sonderlich viel 
verstehst? Mit etwas technischem Verständnis oder einer informatischen 
Grundausbildung würde so eine Frage nicht kommen...

Matthias

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was ist, wenn ich sage, dass ich eigentlich mehr Kompetenz in 
Hardware Entwicklung, als in Programmierung habe?
Kann ich daran was ändern, dass ich so eine grottenschlechte 
Softwareausbildung hatte, bei dem die zu lehrende Person noch selber 
nachschlagen musste, bevor er uns etwas lernen hat können. Wobei man das 
Wort Lernen doch besser unter Anführungszeichen setzen sollte!

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann ich daran was ändern

Ja! Kannst du! :) C-Lernen etc. ist wirklich machbar. Du solltest dir 
nur bewusst sein, dass du die entsprechende Zeit dafür einplanen musst. 
Das geht nicht in 2 Tagen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:
> Und was ist, wenn ich sage, dass ich eigentlich mehr Kompetenz in
> Hardware Entwicklung, als in Programmierung habe?

Zitat
Meine Frage:
Kurz gesagt, RS485 begreifen, anhand eines vorgsetzten C-Codes? °_°
/Zitat

Wenn du Hardware-Kompetenz hast, dann müsstest du wissen, dass RS485 in 
erster Linie eine Hardware Sache ist. Da geht es fast ausschliesslich um 
die elektrische Spezifikation der Übertragungsstrecke. Softwaremässig 
gibt es zur RS232 so gut wie keine Unterschiede. RS485 anhand eines 
C-Codes zu begreifen ist also von vorneherein zum Scheitern verdammt. 
Das ist ungefähr so, wie wenn du sagst du willst beim Telephonsystem die 
Funktionalität eines Hebdrehwählers verstehen, indem du ein paar 
Überseegepräche führst.

Und über diese Aussage
> Möchte den C Code erst nach erbitten posten, da ihr sonst glaubt
> ich mein das nicht ernst.
hab ich mich eigentlich nur geärgert.
Das genaue Gegenteil ist der Fall. Von jemandem, dem man erst alles aus 
der Nase ziehen muss, glauben wir er meint es nicht ernst. Jemand, dem 
es ernst ist, präsentiert von vorne herein alle Informationen die ihm 
wichtig und relevant erscheinen. Hier gilt die Devise: Lieber etwas 
zuviel als zu wenig (mal vom Extremfall "Er postet einfach nur seine 
Aufgabenstellung 1:1" abgesehen). Das zeigt uns, dass er sich zumindest 
Gedanken darüber gemacht hat, was wichtig ist und was nicht.

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Abstimmung: Wer hat denn den Thread komplett bis hier gelesen und 
ist jetzt der Meinung, das alle Beteiligten köstlichst verarscht wurden?
Bei mir keimte dieser Verdacht mit jedem Posting von grundolf auf, sooo 
naiv kann man ohne Vorsatz doch kaum sein?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mag sein.
Ich hatte den Thread am Anfang gelesen und mich schnell ausgeklinkt
mangels Hoffnung.

Letztlich ist es aber auch egal, weil es nichts hilft, hier helfen
zu wollen, es ist sinnlos - sei es aus Unfähigkeit oder Vorsatz.

Glück, wer den nicht als MA hat.

Autor: Anton (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch ich habe den Thread von Anfang an gelesen.

Ich bewundere die Geduld mit der einige die Antworten geben, trotz des
Verdachts "vera....." zu werden.

Wennr sich als Hardware-"Spezialist" ausgibt sollte man zumindest
einen Schaltplan lesen können, und die Funktion der ggf. unbekannten ICs
aus dem Datenblatt ermitteln. Dann hätte der TO wohl gemerkt daß RS485
nur "Übertragungshardware" ist; und der ist es ziemlich egal wer oder 
was an der Leitung "klappert" (sofern es nicht zu schnell ist......)

Und was SW betrifft: Ein gute C-Buch wirkt Wunder! Wenn man es denn 
liest,
(Lesen können ist allerdings Voraussetzung, ggf. auch 
Englischkenntnisse)

Aber was solls: Wenn der "Aufgabenverteiler" nicht weiß wer was kann 
fehlt es doch schon weiter oben!

Wenn man nur die Firma wüßte könnte man die Produkte dann meiden....

'nen schönen Sonntag!

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also nur damit wir uns richtig verstehen, ich wollte hier jetzt nicht 
den Scharfmacher spielen. Auch ich bewundere die engelsgleiche Geduld 
von einigen Menschen hier im Forum!
Ab und an geht mit nur der Kreislauf durch wenn die Ratschläge auf 
derart unfruchtbaren Boden fallen.

schönen Sonntag ;)

Autor: Peter G. punkt (grudolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ich habe bedenken, dass manche Shitfaces von euch wahrscheinlich 
außer Mikrocontroller kein Leben haben, den ganzen Tag im Keller sitzen 
und bei Mikrocontroller.net ihren nicht vorhandenen Sexualtrieb 
ausleben.
Mikrocontroller beweist wieder mal, welche blauäugigen Informatiker hier 
ihre Augen mit Zeichen füllen, welche zuerst durch eine 5 Dioptrien 
Brille gefiltert wurden! Kein Wunder, dass ihr niemanden helfen könnt, 
da ihr hier euch ja nicht in 0 und 1 ausdrücken könnt, sondern auf die 
vielfältigen Farben des Alphabets zurückgreifen müsst!

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, damit steht fest, dass es ein Fake ist. So dumm-frech kann keiner in 
Wirklichkeit sein.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter G. punkt schrieb:
> Und ich habe bedenken, dass manche Shitfaces von euch wahrscheinlich
> außer Mikrocontroller kein Leben haben, den ganzen Tag im Keller sitzen
> und bei Mikrocontroller.net ihren nicht vorhandenen Sexualtrieb
> ausleben.
> Mikrocontroller beweist wieder mal, welche blauäugigen Informatiker hier
> ihre Augen mit Zeichen füllen, welche zuerst durch eine 5 Dioptrien
> Brille gefiltert wurden! Kein Wunder, dass ihr niemanden helfen könnt,
> da ihr hier euch ja nicht in 0 und 1 ausdrücken könnt, sondern auf die
> vielfältigen Farben des Alphabets zurückgreifen müsst!

Sehr eloquent! Bisauf shitface zumindest.

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:) ** popcornhol**

> ...dass ihr niemanden helfen könnt...

vielleicht wurdest du hier nicht geholfen, weil du dir keine mühe gibst, 
zu verstehen, was geantwortet wird.

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter G. punkt (grudolf)

bis zu deinen Beitrag um 13:31  hattest du noch eine gewissen Chance, 
daß deine ursprünglich gestellte Frage zur seriellen Kommunikation 
wieder in die sachlichere Ebene geht, sofern du dich den entgegen 
gebrachten "Argumenten" und "Ratschlägen" ein wenig geöffnet hättest.

Nun fühlst du dich angepisst, weil "die Helfer" dir Aufgrund der Art und 
Weise wie du antwortest, sogar auch noch mangelnde Hardware-Kenntnisse 
unterstellen, obwohl du dich vermutlich einfach nur in dem dir 
unbekannten Terrain (Software)  nicht "geschickt" ausdrücken kannst.

Hm, und dann jetzt schiesst du aus allen Rohren auf alles los. Das wird 
sicherlich nicht zielführend sein, um weitere Unterstützung anzufordern.
Naja, hoffendlich verhältst du dich hier nur im Board so, oder machst du 
das auch so "im echten Berufsleben"?

> Kein Wunder, dass ihr niemanden helfen könnt,
> da ihr hier euch ja nicht in 0 und 1 ausdrücken könnt, sondern
> auf die vielfältigen Farben des Alphabets zurückgreifen müsst!

Den Satz versteh ich nicht, ist mir zu philosophisch ;-)

Kannst du den mal so formulieren, daß ich den auch als Informatiker 
verstehe?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, der braucht weniger Hilfe wegen seines C-Codes.

Vielleicht wird er ja entspannter, wenn er erstmal seinen G-Punkt 
gefunden hat.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.