Sida 1 av 1

Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:13:46
av gripner
Leker lite med ett mätinstrument som jag seriellt kopplar till min dator

Inställningar för den seriella kommunikationen är korrekt det har jag verifierat. Så ingen felsökning behövs där.

Problemet jag har är att datan som kommer över är ej läsbar.
Tog för givet att det kommer över en datasträng man kan "anse" vara ascii det brukar ju fungera.
Men datan är helt oläslig, bara skräptecken.
Då tog jag och läste in byte för byte, alla 25 som skickas och så skrev jag ut byte i form av 0-255 dvs dec ej Hex.
får en ströng som ser ut så här 213|240|0|20|0|1|2|1|239|255|255|255|0|0|7|185|0|0|7|172|239|255|255|254|13|0| de stående | lgger jag bara till för att det skall bli lätt och se vart vardera byte är.
Man ser ju direkt att det inte kan vara vanlig ascii, går ju bara till 127, extended ascii går ju till 255 men på de högre ligger ju bara en massa skumma symboler etc.

Så testade att läsa in allt som bytes och skriva ut som UTF7/8/16/32, Unicode, Unicode(BigEndian), ascii men det blir bara skräp i alla, kanske man kan förstå då i alla varianter bör ju det vi kan läsa/tolka ligga runt 20ish till 120ish. innan och efter är ju specialtecken inte a-z, 0-9

Det ända jag vet om strängen är att den innehåller ett avstånd som är 1.964 meter.
Ska posta en till med liknande siffror tex 1.111 meter. kanske lättare att avkoda.

Någon som har någon bra ide.

Mätaren har ingen märkning, är någon China Export så inte googlebar

EDIT mätte lite och loggade datan. Förstår ännu mindre. man tycker ju att oavsätt vad bör ju alla 1.111 meter mätningar ge samma data, men inte då!
1.111 alt. 1.112 är vad som visas på instrumentet.

213|240|0|20|0|1|2|1|0|0|4|86|0|0|4|86|0|0|4|87|0|0|4|87|13|0| 1.111meter
213|240|0|20|0|1|2|1|0|0|4|87|0|0|4|87|0|0|4|86|0|0|4|87|13|0| 1.111m
213|240|0|20|0|1|2|1|0|0|4|87|0|0|4|86|0|0|4|87|0|0|4|87|13|0| 1.111m
213|240|0|20|0|1|2|1|0|0|4|86|0|0|4|87|0|0|4|87|0|0|4|88|13|0| 1.112m
213|240|0|20|0|1|2|1|0|0|4|87|0|0|4|88|0|0|4|88|0|0|4|88|13|0| 1.112m


213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0| alla är 1.672 meter
213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0|
213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0|
213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0|
213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0|
213|240|0|20|0|1|2|1|0|0|6|136|0|0|6|136|0|0|6|136|0|0|6|136|13|0|

213|240|0|20|0|1|2|1|0|0|5|183|0|0|5|182|0|0|5|183|0|0|5|182|13|0| alla är 1.462
213|240|0|20|0|1|2|1|0|0|5|182|0|0|5|183|0|0|5|182|0|0|5|182|13|0|
213|240|0|20|0|1|2|1|0|0|5|183|0|0|5|182|0|0|5|182|0|0|5|182|13|0|

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:26:09
av AndLi
Varför måste det vara ASCII?
Kan det inte bara vara något binärt protokoll istället?

Ska mätaren följa någon standard som skickar ASCII?

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:27:53
av AndLi
efter din edit är det ju glasklart, 4 & 88 blir ju 1112 om du tolkar det som ett 16 bitars tal..

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:33:24
av grym
gjort något liknande på en multimeter som hadde 232 , verkade som om dom helt enkelt skickade lcd segmentens av/på i en lång sträng och sedan kodade programmet av det, riktigt surt, orkade inte gå för djupt in i det

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:36:09
av gripner
Skrev ju att det troligen inte är ascii, utan har testat med en drös olika variante, utan framgång. SKall rota lite i det du sa om 4 & 88, dock förklarar ju inte det varför samma längd har olika data....

Kanske är 4 mätningar som görs, men displayen visar en avg av de 4.....

tack för inputten iaf.

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 22:52:35
av gripner
Då jag suger något kopiöst på matte och än mer på levelshiftand o bittand hit och dit :) så hur ser en simpel tex C funktion ut för att "konvertera"
4 & 88 till 1112 ?

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 23:10:31
av nifelheim
256*A+B
256*4+88

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 23:16:22
av gripner
Tack!

Re: Skumt format på data inkommand på serieport

Postat: 28 januari 2015, 23:44:17
av sebastiannielsen
Det är ju den sista som gäller, den som står före |13 i slutet.
Den ändrar sig inte vid olika längder.

Verkar som att den "spammar" resultatet några gånger för att man ska kunna läsa i hög hastighet.

Re: Skumt format på data inkommand på serieport

Postat: 29 januari 2015, 08:09:24
av Nerre
Tecken 13 är ju CR, så det är rätt logiskt att det används som avslutning.

Re: Skumt format på data inkommand på serieport

Postat: 29 januari 2015, 20:06:11
av gripner
Har fått allt att fungera .

Den skickar senaste 4 mätningarna
Visar det sig

Re: Skumt format på data inkommand på serieport

Postat: 30 januari 2015, 07:59:13
av jorgen
Hur långa sträckor kan den där apparaten mäta?

Eftersom alla mätvärden har två ledande 0-bytes så kan man ju anta att den skickar ut mätvärdena som 32-bitars tal (4 bytes), om man då bara tolkar de 16 minst signifikanta bitarna (2 bytes) så blir det fel om man mäter upp mer än 65,355 meter.

Om apparaten inte är gjord för att mäta så långt så har det alls ingen betydelse, men annars bör man kanske ta med alla 4 bytes:

T.ex bytevärden A,B,C,D = 0,0,4,86:
x = (A << 24) | (B << 16) | (C << 8 ) | D;

(c-kod)

/jörgen