Show Posts
Pages: 1 [2]
16  International / Deutsch / Re: Pc Steuerung on: August 15, 2011, 04:16:55 pm
Das hat aber den Nachteil, dass die Werte nicht nachbearbeitet werden können.
die Temperatur lässt sich dann nur als analoger Wert von 0 bis 1023 anzeigen
17  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 15, 2011, 02:40:33 pm
Na toll -.-
und ich hab mich schon darüber aufgeregt, dass es nicht wie überall sonst eine Funktion dafür gibt.
18  International / Deutsch / Re: Pc Steuerung on: August 15, 2011, 12:36:40 pm
Hi piaggi,
was gibt es einfacheres als Visual Basic?

Erstell einfach einen Button für jeden Port und lass sie beim anklicken rot bzw. grün werden.
Dann sende mit über einen seriellen Port ein Zeichen, dass du vom Arduino interpretieren lässt.

Für den Temperaturfühler kannst du eine Anfrage an den Arduino schicken und dann auf ein Ergebnis warten.
In vb.net kann das so aussehen:
Code:
Private WithEvents serial As New IO.Ports.SerialPort()
Private WithEvents TempTimer as New Timer

Private Sub From1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TempTimer.Interval = 1000 'jede Sekunde
        Dim Buttons() as Button = {Button1, Button2, ...}
        For Each Button as Button in Buttons
               Button.BackColor = Color.red
               AddHandler Button.Click(), AdressOf Button_Click
        Next
        serial.PortName = "COM13" 'oder Anderer
        serial.BaudRate = 9600 'oder halt andere
        serial.DataBits = 8
        serial.StopBits = IO.Ports.StopBits.One
        serial.Parity = IO.Ports.Parity.None
        serial.open()
        temptimer.start
End Sub

Private Sub Temptimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Temptimer.Tick
        serial.write("t") 'für Temp
        Dim _bytes(4) as Byte //Beispiel 4 Bytes für die Temperaturangabe
        Serial.read(_bytes, 0, 4)
        lblTemp.text = _bytes.ToString()
End Sub

Private Sub Button_Click(Byval sender as Button, e as SystemEventArgs)
  if sender.BackColor = Color.green then
    sender.Backcolor = Color.red
  else
    sender.BackColor = Color.green
  end
  Serial.write(sender.Text)
End Sub

Auf dem Arduino wartest du bis ein Zeichen reinkommt, das die Zahl des Pins darstellt und machst halt dann an oder aus.
Schreibe auf jeden Button die Pinnummer als Text. Dann Erstellst du noch ein Label für die Temperatur.
Auf dem Arduino wartest du auf das "t" und schickst dann die Daten über Serial.

Der Code oben ist nur aus dem Kopf geschrieben. Ich garantiere für nichts smiley-wink

//Edit Nr 2
19  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 15, 2011, 12:17:13 pm
Hi MaFu,
out = out << 4 + in[t];
hat nicht funktioniert.
*16 aber schon.
Jetzt funktionert es.
Vielen Dank euch beiden,

Grüße
Werni
20  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 04:38:21 pm
Hey Joghurt,
ich hab ein bisschen recherchiert und folgendes draus gemacht:
Code:
void setup() {
  Serial.begin(9600);
  char in[] = "00CCA7F6";
 
 
  //To DEZ
  int Zahlensystem = 16;
  int length = sizeof(in)-1;
  long out = 0;
  char newIn[length];
  for (byte t=0; t < length; t++) {
    Serial.print(in[t]); Serial.print("  ");
    if (in[t]>='0' && in[t]<='9')
      in[t] -= '0';
    if (in[t]>='A' && in[t]<='F')
      in[t] -= 'A'-10;
    if (in[t]<10) Serial.print(" ");
    Serial.print(in[t], DEC); Serial.print(" * 16^");
    out += in[t] * pow(Zahlensystem, length - t - 1);
    Serial.print(length - t - 1, DEC);
    Serial.print(" = ");
    Serial.println(in[t] * pow(Zahlensystem, length - t - 1));
  }
  Serial.println("------------");
  Serial.println(out, DEC);
}

Heraus kommt dann:
Quote
0    0 * 16^7 = 0.00
0    0 * 16^6 = 0.00
C  12 * 16^5 = 12582896.00
C  12 * 16^4 = 786431.43
A  10 * 16^3 = 40959.97
7    7 * 16^2 = 1792.00
F  15 * 16^1 = 240.00
6    6 * 16^0 = 6.00
------------
13412325

Sollwert: 13412342

Der Arduino macht wohl Rundungsgehler  smiley-sad
21  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 08:57:29 am
So ähnlich hatte ich das schon gemacht:

Code:
void setup(){ 
  Serial.begin(9600);
  char in[] = "00CCA7F6";
  unsigned int out = 0;
 
  for (byte t=0; t<8; t++) {
    Serial.print(in[t]);
    Serial.print(": ");
   
    if (in[t]>='0' && in[t]<='9')
      in[t] -= '0';
    if (in[t]>='A' && in[t]<='F')
      in[t] -= 'A'-10;
    int j=0;
    if (in[t] >= 10)
      j=1;
    //for (j; j<t+1; j++){
    //  Serial.print(" ");
    //}
    Serial.print(in[t], DEC);
    Serial.print("     ");
    if (in[t]<10) Serial.print(" ");
    Serial.println(out);
    //Serial.print("neu:");
    //Serial.println(out);
    out = out*16 + in[t];
  }
  Serial.println(out);

Quote
0: 0      0
0: 0      0
C: 12     0
C: 12     12
A: 10     204
7: 7      3274
F: 15     52391
6: 6      51839
42998

Komisch, dass der Wert am Ende kleiner wird
22  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 08:33:11 am
Hi Joghurt,
das hatte ich schon ausprobiert. Es funktioniert nicht.
Da kommt 42998 raus.

ist *10 nicht eigentlich richtig, damit die neue Zahl einfach um eins nach rechts verschoben wird?
23  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 08:08:04 am
Mach ich schon die ganze Zeit
Code:
void setup(){
  Serial.begin(9600);
  char in[] = "00CCA7F6";
  int out = 0;
  for (byte t=0; t<8; t++) {
    if (in[t]>='0' && in[t]<='9')
      in[t] -= '0';
    if (in[t]>='A' && in[t]<='F')
      in[t] -= 'A'-10;
    out = out*10 + in[t];
  }
  Serial.println(out);
}

Ich weiß nicht genau wo ich da debuggen soll.
Für mich erscheint der Code komplett richtig.
24  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 07:48:14 am
Hi Joghurt,
es funktioniert leider nicht.

Heraus kommt 20136. Es sollte aber 13412342 sein
25  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 06:42:45 am
Quote
Per XOR, nach dem was da steht.
Oh Man, das war einfach  smiley-roll
26  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 06:13:15 am
Ja, einfach um zu schauen ob es der Tag ist.

Ich hab hier mal einen Ausschnitt der sagt, wie man das machen soll. Ich komme aber damit nicht ganz zurecht.
Quote
Example
Card number: 62E3086CED
 Checksum:( 62H)XOR(E3H)XOR(08H)XOR(6CH)XOR(EDH)=08H
 Note: The 10 ASCII characters grouped as 5 hex data needs to be further processed as you may find that the 5 hex data is not equal to the number marked on the tags in Decimal. Actually the tag number is equal to the later 4 bytes in decimal. For example, the card number is 62E3086CED, the corresponding number marked on the tag should be 60717296877 which is the Decimal format of E3086CED.

Start- und end-flag, sowie die Prüfsumme sind bereits aus dem String raus.
Mal nebenbei, wie kann ich denn die Prüfsumme berechenen?

Mh, jetzt seh ich auch man hätte das erste Byte weglassen können -.-
Geht es denn jetzt?
27  International / Deutsch / Re: Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 06:05:39 am
Ich weiß nicht ob man das aufteilen kann.
Die Daten repräsentieren die Nummer eines RFID-Tags in HEX Form
und jetzt will ich sie in die Nummer umwandeln, die draufsteht.
28  International / Deutsch / Hexadezimalen String in DEC Integer konvertieren on: August 12, 2011, 05:53:00 am
Hi,
der Titel sagt eigentlich schon Alles.
Ich hab ein String-Objekt mit Inhalt im hexadezimalen Format, der zum Beispiel das hier enthält:
Code:
3C00CCA7F6
Wie kann ich das denn jetzt in einen dezimalen Integer konvertieren?

Viele Grüße
Werni
Pages: 1 [2]