Gast
#4625444
Hi, ich habe ein kleines Problem wie man am besten Zahlen, die ich über RS232 empfange für die Übertragung zum AXI aufbereite, sodass dann wirklich ein Zahlenwert als integer dargestellt wird und nicht das empfangene als ASCII String. Nehmen wir an, ich empfange: 1TP1000, dabei brauche ich nur die 1000 am Ende. Das Problem ist, es kann auch einmal 1TP500 übertragen werden, wo ich nur die 500 benötige. Ich dachte mir ich nehme aus dem empfangenen Vector Byteweise ab dem 24. Bit die Ziffern und wandel diese in eine Hexzahl um bis das erste Byte keiner ASCII Zahl entspricht. Nun kann es auch sein, dass der Wert Negativ ist (z.b. 1TP-300), dafür wollte ich zuerst prüfen, ob es sich bei dem ersten ASCII um ein Minus oder einer Zahl handelt. Je nachdem setzte ich mir eine Flag und fange an die Zahlen zu sammeln. Wenn jetzt nach 3 Ziffern keine Zahl mehr kommt, wird die erste stelle mit 100 die zweite mit 10 und die letzte mit 1 oder gar nicht multipliziert und alle zusammen summiert. Nun meine Frage ist, ob es hierzu eine saubere Lösung gibt ? Das Problem ist, dass je nachdem wieviele digits ich am Ende habe, der Vektor am größer oder kleiner ist z.b.: signal read_pos: signed(15 downto 0); signal digit1, digit2, digit3, digit4 : signed(3 downto 0); read_pos <= digit1 * 100 + digit2 * 10 + digit 3; und read_pos <= digit1 * 10 + digit2; Ich hoffe ihr versteht mein Anliegen Danke !