INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmproblem
22.02.2015, 03:39
Beitrag #1
Programmproblem
Hallo,
ich bin neu hir und habe folgendes Problem. Ich will von einer zahl (2-3 stellen) die letzten beiden Ziffern je einer variable zuordnen darauf kommt es auch noch darauf an wie groß die Gesamtzahl ist. Ich habe mal folgendes Beispiel geschrieben, aber irgendwie funktioniert das nicht.

reins = Serial.read();
if (reins > 0)
{
if (reins < 100)
{
ss = reins % 10;
s = (reins / 10) % 10;
}
if ((reins > 100) && (reins < 200))
{
mm = reins % 10;
m = (reins / 10) % 10;
}
if (reins >= 200)
{
reins = reins - 200;
hh = reins % 10;
h = (reins / 10) % 10;
}
}
Die Zahlen kommen von vb über USB als Byte an und sind jeweils ein Teil der Uhrzeit. Sekunden sind 0-59. Minuten sind 100-159 und Stunden sind ab 200.
Ich würde mich sehr ober eine Antwort freuen.

LG CASKR[/code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2015, 09:34
Beitrag #2
RE: Programmproblem
Hi,
ich kann da keinen wesentlichen Fehler entdecken. Nur hier stimmt's nicht ganz:
Code:
if ((reins > 100) && (reins < 200))
Das müsste wahrscheinlich ">= 100" heißen.
Ansonsten fehlen die Datentypen, vielleicht liegt's daran. Gib uns mal ein bisschen mehr Coding und spezifiziere genauer, was mit "irgendwie funktioniert das nicht" gemeint ist.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2015, 11:29
Beitrag #3
RE: Programmproblem
Danke für die Antwort.
Ich hab grad auch festgestellt dass es im Bereich von 0-127 einwandfrei funktioniert. Das würde heiße dass das Problem schon in der Übertragung liegen muss.
In VB Seht bei mir folgendes:

Imports System.IO.Ports
Public Class Form1
Public SP As New SerialPort
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
SP.PortName = "COM10"
SP.BaudRate = 9600

SP.Open()
Dim Charvarh As Char
Dim bytevarh As Byte
bytevarh = 160
Charvarh = Convert.ToChar(bytevarh)
SP.Write(Charvarh)
End Sub
End Class

ich glaube da muss ich mir ein anderen weg für die Übertragung einfallen lassen, hier fehlt bestimmt ein bit.
Gruß
CASKRA
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2015, 22:42
Beitrag #4
RE: Programmproblem
Nein, die Arduino-Seite wäre interessant. Wie sind die Datentypen?

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2015, 19:50
Beitrag #5
RE: Programmproblem
Als Datentypen von der Variable "reins" hab ich Byte.

byte reins;

im void setup habe ich die Baud rate auf 9600 eingestellt.

void setup(){
Serial.begin(9600);
}

Die variable "ss", "s" usw. habe ich als Integer Deklariert.

int h = 0;
int hh = 0;
int m = 0;
int mm = 0;
int s = 0;
int ss = 0;

ich möcht im Endeffekt jeder dieser Variablen eine Ziffer der aktuellen Zeit zuordnen, Dann werden sie im schon bestehenden Programm weiter verarbeitet.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2015, 21:42
Beitrag #6
RE: Programmproblem
Hi,
das sollte ok sein. Wenn es für 0-127 funktioniert, dann riecht das nach einem Problem mit Vorzeichen oder dem oberen Bit.
Das Blöde ist, dass Du keine Debug-Ausgaben über Serial machen kannst. Oder kannst Du das ganze auf SoftwareSerial umstellen?
Oder stimmt da vielleicht was mit Stop- und Startbits nicht?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2015, 23:25
Beitrag #7
RE: Programmproblem
Hi,
danke für die hilfe. ich mach das jetzt einfach so.

if ((reins >= 10) && (reins <=19))
{
ss = reins % 10;
reins = 0;
}
if ((reins >= 20) && (reins <=29))
{
s = reins % 10;
reins = 0;
}
if ((reins >= 30) && (reins <=39))
{
mm = reins % 10;
reins = 0;
}
if ((reins >= 40) && (reins <=49))
{
m = reins % 10;
reins = 0;
}
if ((reins >= 50) && (reins <=59))
{
hh = reins % 10;
reins = 0;
}
if ((reins >= 60) && (reins <=69))
{
h = reins % 10;
reins = 0;
}

Sieht zwar blöd aus aber funktioniert :-)
Ich muss jetzt nur noch die einzelnen werte in die byte variablen in VB bekommen.

Gruß,
CASKR
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2015, 09:46
Beitrag #8
RE: Programmproblem
Hi,
auch nicht schlecht, wenn es von 0-127 funktioniert, dann verwendet man eben nur 0-127.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste