|
Facemann |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.10.2011, 15:50
Titel: fread zu langsam
|
|
Habe die Aufgabe einen Roboter per Matlap anzusteuern. Dieser hat Endschalter die genutzt werden sollen. Ich schicke über fwrite 2 Bytes worauf hin eines zurückgesendet wird, welches die Stellung der Endschalter beinhaltet. Dieses lese ich mit fread doch das dauert viel zu lange, gibt es eine Alternative zu fread bzw kann man es drastisch beschleunigen?
Außerdem bekomme ich einen Vektor vom Roboter mit unterschiedlicher Länge zurück (je nach dem wann die erste 1 im Vektor ist). Ich benötige zur Verarbeitung einen Vektor der immer 8 Stellen beinhaltet, also wie kann ich den Vektor auffüllen?
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 17.10.2011, 16:11
Titel: Re: fread zu langsam
|
|
Hallo Facemann,
Das Lesen per FREAD benötigt in Matlab (mit "b" hinten) nur sehr wenig Zeit. Wenn Du eine große Verzögerung bemerkst, liegt das höchst wahrscheinlich an etwas anderem. Bitte poste den relevanten Code, da wir ansonsten nur raten können, woran es liegt.
Gruß, Jan
|
|
|
Facemann |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.10.2011, 09:32
Titel:
|
|
|
|
|
Also ich habe den fischertechnik am port 4.
s=serial('com4')
set(s, 'Baudrate', 38400); % Baudrate auf 38400
fopen(s) %Port öffnen
fwrite(s,[193,bin2dec('00000001')],'uint8') % sende ihm 2 bytes 1.->Aufruf 2.-> Zustände der Eingänge, ein byte wird zurückgesendet den ich mit:
fread(s) %auslese (dauert ewig)
zurück bekomme ich zb. 10101 welches aber generell 8 Zahlen im vektor haben soll (zwecks späteren aufruf) also 00010101.
Das ausgelesene Byte beinhaltet die Züstände der 4 Endlagenschalter und der Zählschalter.
Natürlich möchte ich später dass wenn er an einen Endschalter fährt dass er NICHT weiter in diese Richtung fährt doch bis jetzt würde er das tun.
Es gibt wohl auch die möglichkeit mit der BytesAvailebleFcn zu arbeiten doch da steig ich überhaupt nicht durch bis jetzt.
Ich lade auch mal die gui datei hoch. Damit ihr sehen könnt wie mein code in der gui aussieht.
Beschreibung: |
das ist die gui datei an der ich arbeite |
|
Download |
Dateiname: |
gui1.m |
Dateigröße: |
7.68 KB |
Heruntergeladen: |
529 mal |
|
|
|
Facemann |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.10.2011, 08:59
Titel:
|
|
Kann mir denn niemand helfen?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 26.10.2011, 09:31
Titel:
|
|
|
|
|
Hallo Facemann,
Das Fehlen eine Antwort weist darauf hin, das die Frage noch nicht verständlich ist. Z.B. ist "dauert ewig" nicht verständlich: Bei 38'400 Baud sind 0.1 Sekunden bereits ziemlich lang, "ewig" kann aber auch "ein paar Minuten" bedeuten, oder Jahre.
Kann es sein, dass der Controller noch auf ein Abschluß-Byte wartet und erst beim Time-out antwortet?
Zitat: |
zurück bekomme ich zb. 10101 welches aber generell 8 Zahlen im vektor haben soll (zwecks späteren aufruf) also 00010101. |
Das ist unklar. Du bekommst natürlich Bytes zurück, und die haben immer 8 bits. Man kann die zwar per DEC2BIN in binäre Strings umwandeln, wobei die führenden Nullen nicht dargestellt werden (ausser natürlich mit z.B. DEC2BIN(21, 8)). Binäre Strings sind aber für die Verarbeitung nicht praktisch. Was also "8 Zahlen im Vektor" genau bedeutet, wird nicht klar.
Zitat: |
Natürlich möchte ich später dass wenn er an einen Endschalter fährt dass er NICHT weiter in diese Richtung fährt doch bis jetzt würde er das tun. |
Trägt das noch zur Klärung des aktuellen Problems bei? Wenn nicht, verwirrt es die Leser unnötig.
Zitat: |
Es gibt wohl auch die möglichkeit mit der BytesAvailebleFcn zu arbeiten doch da steig ich überhaupt nicht durch bis jetzt. |
Dann kannst Du die entsprechenden Absätze in der Dokumentation durchlesen und eine konkrete Frage stellen.
Zitat: |
Ich lade auch mal die gui datei hoch. Damit ihr sehen könnt wie mein code in der gui aussieht. |
Das GUI eines Programms, das noch nicht funktioniert, erhöht nur die Verwirrung der Leser. Die Chancen auf eine hilfreiche Antwort sind am größten, wenn man sich auf ein Problem konzentriert und alle unnötigen Details wegläßt.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|