Problem:
Chciałem pobrać dane z ciśnieniomierza (aparat medyczny)
do własnego programu .
Urządzenie posiada port RS232C ustawienia transmisji 9600,n,bit-8,stop-1.
Po dokonaniu pomiaru do portu wysyłane są dane - 9 ramek po 10 bajtów.
7 identycznych ramek zawiera dane (ramka rozpoczyna się bajtem FF) -
oznacza to że wszystkie ważne dane przesłane mogą być za pomocą jednej
10 bajtowej ramki .( sprawdzane , wyzerowanie innych i pozostawienie jednej
nienaruszonej daje prawidłowy odczyt po przesłaniu do programu dołączonego
do ciśnieniomierza ,wysłałem je po skrosowaniu COM1 i COM2 innym programem,
symulując obecność urządzenia ).
2 ramki zawierają jakieś nieistotne badziewie .
Dane z urządznia mogę odebrać , ale nie potrafię po mimo różnych
kombinacji ich zinterpretować aby ustalić jak są zapisane dane w tych 10
bajtach (Format ramki) .
Oryginalny program daje następujące odczyty po odebraniu danych z COM .
Dane, Ramka pierwsza ,przykładowy pomiar nr1:
Hex:
FF 67 28 0B 56 0D 48 21 0E 8D
Jako Dec:
255,103,40,11,86,13,72,33,14,141
Jako Bin:
11111111-01100111-00101000-00001011-01010110
00001101-01001000-00100001-00001110-10001101
Dane wyświetlone przez oryginalny program odbierający dane :
Edit-> Time: 06:45
Edit-> Date: 1/8
Edit-> SYS : 110
Edit-> DIA : 39
Edit-> H.R.: 91
Dane Zapisane do bazy Danych:
Date Time SYS_mmHg DIA_mmHg MAP_mmHg Pulse_min
2008-01-08 06:45:00 110 39 63 91
Dane, Ramka pierwsza ,przykładowy pomiar nr2:
Jako Hex:
FF 7E 39 03 44 04 48 11 02 A4
Jako Dec:
255,126,57,3,68,4,72,17,2,164
Jako Bin:
11111111-01111110-00111001-00000011-01000100
00000100-01001000-00010001-00000010-10100100
Dane wyświetlone przez oryginalny program odbierający dane :
Edit-> Time: 04:20
Edit-> Date: 1/9
Edit-> SYS : 114
Edit-> DIA : 62
Edit-> H.R.: 67
Dane Zapisane do bazy Danych:
Date Time SYS_mmHg DIA_mmHg MAP_mmHg Pulse_min
2008-01-09 04:20:00 114 62 79 67
Czy ktoś może wie jak to rozszyfrować ,spędziłem 2 dni nad próbą
interpretacji tych danych binarnych ,bez efektu ..
Prawdopodobnie w ramce zawarta jest CRC ,- zmiana jednego bitu w ramce
powoduje jej odrzucenie i brak odczytu .
Wolałbym pominąć debugowanie programu oryginału w celu podejrzenia jak
dane są przetwarzane bo jest to "rozdmuchana kiszka" napisana
w VB + parę .dll i .ocx ,syf na maksa...