Forum: PC-Programmierung Schnittstellenbefehl


von Hans P (Gast)


Lesenswert?

Hallo, ich habe eine Frage und zwar steuere ich über eine serielle 
Schnittstelle ein Gerät an. Dabei sende ich einen Befehl aus und erhalte 
eine Antwort zurück. Nun will ich aber diesen Befehls öfters 
hintereinander senden (z.b:5 mal) also in einer for schleife aber dies 
gelingt mir nicht so richtig, ich habe es folgendermassen probiert aber 
es klappt nicht.

fopen(s);
disp('Serialobjekt geöffnet')

% Scan ablesen
for i=1:5
fprintf(s, '%R1Q,20146:')
daten(1,i)=fscanf(s(i))
end
fclose(s)
delete(s)
clear s

Kann mir da vielleicht jemand helfen vielen Dank

von was (Gast)


Lesenswert?

was klappt nicht, und wie sind die symptome? klappt der erste 
leseversuch, aber dann nichts weiter? was soll fscanf(s(i)) überhaupt 
bezwecken? gibt es fehlermeldungen?

http://www.catb.org/esr/faqs/smart-questions.html

von Hans P. (Gast)


Lesenswert?

Hey vielen Dank für deine Antwort, es gibt eine Fehlermeldung weiss aber 
jetrzt nicht mehr genau wie die aussah da ich das Gerät zur Zeit nicht 
zur Verfügung habe. Mit fscanf(s) erhalte ich die Antwort des Gerätes 
wahrscheinlicht ist das fscanf(s(i)) falsch aber ich weiss nicht wie man 
es anders schreiben soll damit man 5 antworten hintereinander erhält.

Vielen Dank
MFG Hans

von Robert L. (lrlr)


Lesenswert?

> aber ich weiss nicht wie man
>es anders schreiben soll damit man 5 antworten hintereinander

einfach genau gleich wie bei 1 mal (das 5 malige erledigt ja die for 
schleife schon)

von Hans P. (Gast)


Lesenswert?

Ja genau aber mit der for schleife funktioniert es nicht so wie ich es 
ausprobiert habe

von Robert L. (lrlr)


Lesenswert?

>funktioniert es nicht

aha

bitte nochmal lesen:

http://www.catb.org/esr/faqs/smart-questions.html

von Hans P. (Gast)


Lesenswert?

Hallo, heute stand mir das Instrument wieder zur Verfügung und die 
Fehlermeldung die erscheint ist folgende:
Subscripted assignment dimension mismatch.
und zwar an der Stelle Code:  daten(1,i)=fscanf(s)


Es geht darum das der Befehl fprintf fünf mal gesendet werden soll, dies 
habe ich aber nicht herausfinden können. Das Problem ist das ich den 
fprintf und fscanf nicht in die Vorschleife packen kann, damit der 
Befehl öffters gesendet wird.

Ich hoffe es kann mir jemand weiterhelfen

MFG Hans P.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hans P. schrieb:
> Es geht darum das der Befehl fprintf fünf mal gesendet werden soll, dies
> habe ich aber nicht herausfinden können. Das Problem ist das ich den
> fprintf und fscanf nicht in die Vorschleife packen kann, damit der
> Befehl öffters gesendet wird.

Lies Dir das nochmal durch.

Und nochmal.

Meinst Du wirklich, daß irgendjemand anderes versteht, was Dein Problem 
ist, von Deiner offensichtlichen Unfähigkeit abgesehen, das Problem zu 
schildern?

von Hans P. (Gast)


Lesenswert?

Hallo es ist halt etwas kompliziert zu Beschreiben, ich versuchs 
nochmal:

s = serial('COM4');
set(s,'Baudrate',9600,'Parity','none','Databits',8,'Terminator','CR/LF', 
1);
fopen(s);

Ich sende einen Code an ein Messgerät mit fprintf(s,'%R1Q,20146:') und 
lese mir die Daten mit fscanf(s)

So funktionniert das Programm einwandfrei und ich erhalte meine Daten. 
Das Problem liegt nun darin, dass ich den Befehl 
fprintf(s,'%R1Q,20146:') nun öfters hintereinander an das Messgerät 
senden möchte. Dies habe ich mit einer for schleife folgendermassen 
probiert:

for i=1:3
fprintf(s,'%R1Q,29035:');
daten(i,1)=fscanf(s);
end

dort endsteht die Fehlermeldung: Subscripted assignment dimension 
mismatch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.