Check two string data without carriage return symbol

3 vues (au cours des 30 derniers jours)
Sergey Makovkin
Sergey Makovkin le 25 Mar 2016
Modifié(e) : Ced le 25 Mar 2016
Hi all!
In the serial com port channel values comes from 0 to 1023, this example from Arduino: https://monosnap.com/file/TiTehc6zWhu0zszPnCALbnjIMAfpzf
On the MATLAB side I parse it via function:
while(obj1.BytesAvailable)
Psvoltage = deblank(fscanf(obj1)) %, '%d', 4)
[a, b] = size(Psvoltage)
bb = findstr(Psvoltage, '\r')
if ~isempty(Psvoltage)
sPs = str2num(Psvoltage) * (100 / 1023); %
break;
end
end
But sometimes from serial port I take corrupted data like this: https://monosnap.com/file/ysJFdabTbOVOKoQbgqJYF44SioAORy
And it is cause error in my program:
https://monosnap.com/file/oEJlyjnifsTx6h531xfDi23nQ89Shv
https://monosnap.com/file/6fdI8mgQa6pVjKn2EHFqzXdQnDDLzb
This is two string data, but without carriage return symbol, because all checking such as: ~isnan(), ~isempty() and findstr(Psvoltage, '\r') this data had been passed.
The question is: how do I check these data would be to ignore them?
Thank you!

Réponse acceptée

Ced
Ced le 25 Mar 2016
Modifié(e) : Ced le 25 Mar 2016
Why not just take the first row?
I.e.
Psvoltage = deblank(fscanf(obj1)) %, '%d', 4)
if ( ~isempty(Psvoltage) )
Psvoltage = Psvoltage(1,:);
end
edit: added ~isempty check
  2 commentaires
Sergey Makovkin
Sergey Makovkin le 25 Mar 2016
I tried you case, but it dont solve my problem with corrupted data. This is the code: https://monosnap.com/file/qgg8o3x6aQ2rbs6AtFpGsNh5LEtXZO
This is corrupted case with errors: https://monosnap.com/file/rAr5kgsKK2OAtVCKLNKiXL995Gffzb
Ced
Ced le 25 Mar 2016
Modifié(e) : Ced le 25 Mar 2016
How about
Psvoltage = deblank(fscanf(obj1)) %, '%d', 4)
if ( ~isempty(Psvoltage) )
volt_num = str2num(Psvoltage);
Psvoltage = volt_num(1);
end
?
or simply < removed, did not work >, see Sergey's answer below.

Connectez-vous pour commenter.

Plus de réponses (1)

Sergey Makovkin
Sergey Makovkin le 25 Mar 2016
Thank you very much! First variant is working correctly, but second is not (please see the 2nd result: https://monosnap.com/file/6XxSZBS1pNI2AcPHIZNSq3n4SCSPJD)
  1 commentaire
Ced
Ced le 25 Mar 2016
Interesting, thanks for testing them out!

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by