Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge

Programmieren von seriell ( com port ) mit Matlab

lemec / 4 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
Andreas42 Borlander „Also mir erschließt sich das Problem nicht ganz... Was spricht dagegen die...“
Optionen

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

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen