Matlab da seri porttan float veri nasıl alırım.

Başlatan XX_CİHAN_XX, 10 Kasım 2014, 20:52:49

XX_CİHAN_XX

MCU dan Matlaba seri port üzerinden float veriler göndermek istiyorum.
Örneğin göndermek istediğim bilgi -85.7 olsun. Bunu MCU dan iki şekilde çıkabilirim.
1. Seçenek String ifade olarak "85.7" katarını matlaba gönderip matlab ta bunu çeşitli fonksiyonlarla string'ten float'a çevirmek olabilir.
2. Seçenek 85.7 sayısının bayt karşılığı olan 0xC2AB6666 değerini 4 bayt olarak matlab'a gönderip. Aldığım bu 4 baytı bin2dec gibi bir çevrim ile float olarak elde edebilirim.

Her iki çözüm önerisine de açığım basitçe nasıl bir kod ile matlab ortamında float veriyi elde edebilirim?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Kabil ATICI

ham veriyi gönder onu orada işle... Muhtemelen aha az bayt tutar.
ambar7

XX_CİHAN_XX

#2
Onu biliyorum sorun işleme kısmında onu nasıl yapacağımı sordum.
4 baytlık veriyi 4x1 lik A dizisine aldım diyelim
Bunu float yada double olarak nasıl ifade edeceğimi sordum.

mesaj birleştirme:: 10 Kasım 2014, 21:22:41

Elimde seri porttan fread ile aldığım 4 baytlık veri var.
A = [104;145;250;193]
Bu veriyi almak için matlab tarafında şu komutları kullandım
s = serial('COM8');
set(s,'BaudRate',115200);
fopen(s);
A = fread(s,4);
fclose(s)
delete(s)
clear s

Bu veri benim mikrodenetleyiciden 0xC1FA9168 datasını göndermem sonucunda oluştu.
Bu sayı aslında -31.321 float sayısına eşit.

Benim yapmak istediğim fread komutundan sonra A dizisinde elde ettiğim
A = [104;145;250;193]
Değerinden -31.321 bu değere nasıl dönüştürebilirim. Bunu da plot ta görmek istiyorum.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

fatal16