habe diese prog.geschrieben aber kann nicht AscII (Hex)befehl an meiner steuerkarte geben, kann nur zeichen eingeben (#,$...) .möchte aber hex wie 23 01 0D FF eingeben und anwort bekommen vielen dank für ihre hilfe, der französe...
s2 = serial(\'COM1\', \'BaudRate\', 19200,\'Parity\',\'none\',\'Terminator\',\'CR\',...
\'Databits\',8,\'StopBits\',1,\'Timeout\',1);
fopen(s2); % open session
%befehlsatz 1
fprintf(s2, \'HIER GIBT PROBLEME\'); % sends string
pause(0.1) % pause 0.1s for device to answer
idn = fscanf(s2) % reads the port
fclose(s2); % closes the session
Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge
Hi!
Wenn ich das richtig verstehe, dann hat er dass Prpblem, dass er feste Bytefolgen an ein seriell angeschlossenenes Gerät senden muss, um gewisse Operationen anzustossen.
Eine dumme Implementierung der Steuersoftware, damit verschliesst sich der Hersteller die einfache Steuerung über ein Terminalprogramm - aber dafür kann lemec nichts. :-(
@lemec:
Ich kenne Matlab nicht. In anderen Programmiersprachen gibt es eine Funktion, um aus einem Bytewert ein zeichen zu generieren (auch mit im ASCII/ANSI-Code nicht anzeigbaren Zeichen): CHR$(xx) in Basic zum Beispiel.
Hier müsste man dann nur die Hex-Zahlencodes in Dezimalzahlen umrechnen (aus $FF wird dann 255).
OK, ich hab' mal Google angeworfen (matlab reference) und das hat sofort Onlinereferenzen der Befehle ausgeworfen.
Zumindest Funktionen zum Umrechnen von HEX-Strings in Imnteger gibt es: hex2dec.
Die Funktion sprintf ist nicht die geeignete, da sie keine Wandlung in einen Character durchführt, sondern gedacht ist formatierte Zahelnstrings zu erzeugen.
Schau mal setstr an, das scheint die Aufgabe von CHR$() zu übernehmen.
Bis dann
Andreas