ich habe eine Pumpensteuerung/Programmierung mit Matlab über einen Serial-Port geschrieben. Dort ist es so, das mehr oder weniger "Klartext" übergeben wird.
Ich denke du musst warten bis das Gerät da ist, oder beim Hersteller nachfragen, was wie vom Gerät übergeben wird oder ausgelesen werden kann.
ich habe so ein ähnliches Manko, allerdings benutze ich ein OBD (On Board Diagnose) Tool. Das Gerät hat eine seriellen Anschluss. Nun ist es aber so, dass ich die Daten, die normalerweise vom Gerät aus gesendet werden unter Matlab einlesen möchte. Wir haben zwar eine Software, die dies tut, aber das will ich umgehen. Ist es auch dort so, dass Klartext von Matlab empfangen wird oder nur Hexa dezimal Zahlen, die man interpretieren muss? Hat jemand in dieser Richtung Erfahrungen sammeln können und kann uns weiterhelfen?
Muss ich da erst alle Befehle des OBD Geräts kennen, um sie unter Matlab aufzubereiten oder reicht es, wenn ich die Hexa-Dezimal-Zahlen in "Klartext" konvertiere?
soweit ich weiß, gibt Matlab genau das wieder, was gesendet wird. Es liegt dann immer am Programmierer, was mit den empfangenen Daten passiert...
Wenn dein Gerät also Hexadezimal Zahlen sendet, musst du diese konvertieren um Klartext zu erhalten, wenn es Klartext sendet dann kannst du diesen sehen.
habe endlich wieder zeit die RS232 Schnittstelle zu programmieren. Also folgender stand:
Ich habe einen code generiert aber es klappt noch nicht wirklich. ich kommuniziere zurzeit von meinem Laptop aus mit einem anderen PC (Hyper terminal) , allerdings bekomm ich bei dem versuch was zu senden bzw empfangen ein warnmeldung:
Warning: A timeout occurred before the Terminator was reached.
Normalerweise sollte der COM Port doch offen bleiben solange ich was tippe...?
Anbei mein Code:
Code:
% Offene Verbindung schließen
g=instrfind('type','serial','port','COM1');
if ~isempty(g) fclose(g);
delete(g);
end
%::: Verbindung herstellen :::%
s = serial('COM1',...
'BaudRate', 9600,...
'Parity', 'none',...
'DataBits', 8,...
'StopBits', 1,...
'Timeout', 2);
fopen(s); % Gerät öffnen disp('COM-Port opened successfully');
d = fscanf(s); % Empfangen bis ich den Port selber schliesse disp(d) fclose(s);
Für eine gewisse zeit klappt es ja auch. Wenn ich was am anderen PC tippe, kommt auch nach einiger zeit das getippte an, aber danach kommt die warnmeldung, mit der ich nix anfangen kann
Das ist das eine problem. Das andere ist, dass ich den Port steuern will, also selbst entscheide wann er geöffnet wird und wann ich ihn schliesse, wie zum beispiel über ein on/off button. Wie habt ihr es denn realisiert. Es soll Benutzerfreundlich im GUI oder controldesk implementiert werden...
Könnt ihr mir da weiterhelfen
Danke
Matlab Amateur3
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.09.2008, 09:09
Titel:
Hi
habe inzwischen das Problem mit dem Terminator, denke ich, behoben. Habe einfach die Parameter erweitert:
Code:
%::: Verbindung herstellen :::%
s = serial('COM1',...
'BaudRate', 9600,...
'Parity', 'none',...
'DataBits', 8,...
'StopBits', 1,...
'Terminator', '',...
'Timeout', 10);
Allerdings bekomme ich nie die gesendeten Daten sofort auf dem Bildschirm gezeigt, sondern erst immer nach dem das Timeout (10s) abgelaufen ist. erst dann sehe ich was ich gesendet habe. wie schaffe ich es denn, die daten sofort zu sehen unnd wieso diese fehlermeldung?
Kann mir jemand weiterhelfen?
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
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.