WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Daten über RS232 senden GUI

 

Butzel
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2009, 19:40     Titel: Daten über RS232 senden GUI
  Antworten mit Zitat      
Hi,
ich brauche dringend eure Hilfe. Ich möchte Daten über eine serielle Schnittstelle senden und muss diese Daten leider vorher umformen.
Dabei gibts Probleme...
Meine Daten gehen von -32767 bis +32767. wenn ich jetzt zB. 15000 senden möchte, dann ist das ein int16 und ist unhandlich zu verschicken, da, soweit ich weiß, serielle Schnittstellen immer in Hexzahlen mit zwei Sellen gesendet wird. Deswegen möchte ich daraus 2 Hexzahlen machen.
Hier ist mein Code:
clear all;

x=15000;
h=dec2bin(x);
g=size(h);
z=g(1,2);

if z>8
for a = 0:7
h_neu1(8-a)=h(z-a);
end
for a = 1:z-8
h_neu2(a)=h(a);
end
else
h_neu1=h;
h_neu2=0;
end

h_neu1=bin2dec(h_neu1)
h_neu2=bin2dec(h_neu2)

Damit wandel ich die 15000 in 58 und 125 um und kann diese dann als hex zahlen schicken... Mein SimulinkProgramm auf dem Microcontroler setzt diese dann wieder zusammen und übermittelt sie über einen Can-bus an den Roboter.
Das klappt auch ganz gut, leider aber nur bei positiven zahlen. Kann mir jemand weiter helfen oder eine idee geben, wie ich das problem besser lösen kann?
Hoffe ihr versteht mein problem, wenn nicht, einfach fragen... Ich versuche dann gerne es mit anderen Worten noch mal zu erklären...
Lg Butzel
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2010, 14:32     Titel:
  Antworten mit Zitat      
Für die negative Werte muss man eine Korrektur machen:

Code:

clear all;

x = -15000;

if(x<0)
    % convert negative value
    x = 65536+x;
end
    % convert the value to 2 hex values
 h1 = bitshift(x, -8);
 h2 = bitand(x, 255);


%------------------
% convert it back
val = bitor(bitshift(h1,8), h2);
if(val >= 32768)
    % negative value
    val = val - 65536;
end

disp(val);
 
[/code]
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.