Deze interfacespecificatie beschrijft hoe een apparaat kan communiceren met de PM2+ monitor via een RS-232-interface. Een extern apparaat kan informatie over afstanden, snelheid, tijd en hartslag krijgen uit de PM2+. Dit document is bedoeld om ervaren programmeurs die een programmeertaal beheersen en kennis hebben van RS-232 communicatie te helpen.
Vereisten
Een apparaat dat moet communiceren met een PM2+ monitor die draait met microcode v141 of v138 moet ingesteld zijn op 9600 baud, 8 bit, geen pariteit, met 1 stop bit. Sluit de seriële kabel aan op de bovenste aansluiting achterop de PM2+, precies zoals je zou doen als je e-Row zou gebruiken. Controleer of de seriële communicatie is ingesteld op je apparaat.
Inhoud
Dit document beschrijft eerst de commando’s en data formats die ondersteund worden door de PM2+ monitor. Aan het eind van deze sectie volgt een beschrijving van de status byte. Na deze sectie volgt een voorbeeld van seriële communicatie tussen een PC en de PM2+. In dit document zijn twee voorbeelden van code opgenomen. Het eerste voorbeeld is PALM broncode dat gebruikt wordt in een Palm applicatie. Het tweede voorbeeld is een Windows-routine gecompileerd en gedraaid onder Borland C++ Builder 4.0. De voorbeelden zijn bedoeld ter illustratie van het interfaceprotocol en zijn niet bedoeld als voorbeelden van uitmuntende programmeerkunst. Aan het eind van dit document volgt een beschrijving van de fysische connecties waarin wordt omschreven hoe de PM2+ op een PC moet worden aangesloten. Bij je PM2+ is een seriële kabel meegeleverd, maar je kunt eventueel ook losse kabels bestellen bij Concept2.
Concept2 Interfacespecificatie Ondersteuning
Ondersteuning wordt alleen gegeven via een online forum, website, FAQ of e-mail. Concept2 geeft geen ondersteuning voor de PM2+ interfacespecificatie.
Commando/Datasequentie
De notatie [“0x”] gevolgd door twee cijfers of letters (A-F) duidt op een hexadecimale waarde.
Stuur | Ontvang | Afstand |
---|---|---|
0xB0 | Verstuur deze bytes om afstandsdata te ontvangen van de PM2+.. | |
0x00 | ||
Status Byte DistanceLSB Distance1 Distance2 Distance MSB |
Bekijk status byte info Floating point-weergave van de afstand in meters. |
Stuur | Ontvang | Snelheid |
---|---|---|
0xB1 0x00 |
Verzend deze bytes om snelheidsdata van PM2+ te ontvangen | |
Status Rate PaceLSB Pace1 Pace2 PaceMSB |
Integerweergave van haalsnelheid (halen/minuut) Floating point-weergave in seconde/meter
|
Stuur | Ontvang | Tijd |
---|---|---|
0xB3 0x00 |
Verzend deze bytes om verstreken tijd van PM2+ te ontvangen | |
Status Byte TimeLSB Time1 Time2 TimeMSB |
Floating point-weergave van verstreken tijd in seconden
|
Stuur | Ontvang | Hartslag |
---|---|---|
0xB2 0x00 |
Verzend deze bytes om hartslagdata van PM2+ te ontvangen | |
HrLSB HrMSB |
Integerweergave van hartslag. Heart rate = 576,000/heart period. |
Status Byte | Mask | Eerste byte ontvangen in afstandsquery |
---|---|---|
END_OF_WORKOUT END_OF_STROKE WORK_DISTANCE WORK_TIME LOW_BATTERY |
0X01 0X02 0X04 0X08 0X40 |
Indien aan, workout beëindigd Indien aan, haal beëindigd Indien aan, ergometer geprogrammeerd voor een afstandstraining Indien aan, ergometer geprogrammeerd voor een tijdstraining Indien aan, vervang de batterij |
De enige bits die gecontroleerd moeten worden zijn [END_OF_STROKE, END_OF_WORKOUT] en [WORK_DISTANCE]. De andere bits worden gebruikt bij een wedstrijd, dit wordt niet behandeld in een gepubliceerde specificatie. Erg PACE wordt aan het eind van de haal ververst, dus controleer de [END-OF_STROKE] statusbit om te weten wanneer je deze waarde moet uitlezen. Je kunt pace ook continu uitlezen maar hij wordt maar één keer per haal bijgewerkt. Is de pacewaarde uitgelezen? Dan wordt de [END_OF_STROKE] bit gewist. Aan het eind van de volgende haal krijgt hij weer een waarde. Is de ergometer geprogrammeerd voor een afstandstraining? Ofwel je hebt [WORK_DISTANCE] geselecteerd. Dan moet je de [END_OF_WORKOUT]-bit controleren. Heeft deze bit waarde 1? Dan toont de waarde in het veld Afstand de tijd om de gegeven afstand af te leggen. Dit gebeurt alleen aan het einde van een afstandsworkout. Zie voorbeeld van seriële communicatie. |
Voorbeeld van Communicatie met PM2+
Haal afstand, snelheid en hartslagdata op van PM2+
Stuur | Ontvang | Snelheid |
---|---|---|
0xb0 0x00 |
Query Afstand erg nummer (altijd nul voor één erg) |
|
0xc4 0xcb 0x00 0x2c 0x42 |
erg status: (afstandsworkout) float afstand float afstand float afstand float afstand (43,0 meter afgelegd) |
|
0xb1 0x00 |
Query Haalfrequentie erg nummer |
|
0x2d 0x9a 0x41 0x51 0x3e |
erg haalsnelheid float snelheid float snelheid float snelheid float snelheid (0.2) |
|
0xb2 0x00 |
Query Hartslag erg nummer |
|
0x00 0x00 |
int heart period int heart period (0) |
|
0xb0 0x00 |
Query afstand erg nummer (altijd nul voor één erg) |
|
0xc5 0x40 0xa1 0xc9 0x41 |
erg status: (afstandsworkout) (einde workout) float afstand float afstand float afstand float afstand (25,2*) *Let op: deze waarde geeft de tijd aan die je nog nodig hebt om de afstand af te leggen, in seconden. |
Fysische connecties
De volgende tabel beschrijft de pinnen van de bovenste plug op de achterkant van de PM2+, J2. Pin 1 is de meest rechterpin. Hierbij veronderstellen we het gebruik van de meegeleverde kabel en connectoren (ofwel 9 pins ofwel 25 pins).
PM2+ RJ-11 Pin | PM2+ Signaalbeschrijving | DTE Signaalbeschrijving | RS232 9 Pin (DTE apparaat) |
RS232 25 Pin (DTE apparaat) |
---|---|---|---|---|
1 | +12V (zie noot) | n/c | n/c | |
2 | Aarde | Aarde | 5 | n/c |
3 | Ontvangen Data | Verzonden Data | 3 | 2 |
4 | Verzonden Data | Ontvangen Data | 2 | 3 |
5 | Aarde | Aarde | n/c | 7 |
6 | 12 Volt Return (Zie NB) | n/c | n/c | |
NB: Bij gebruik van een 9 Volts voeding, worden pinnen 1 en 6 van de RJ-11 gebruikt om PM2+-monitoren die op elkaar zijn aangesloten van 12 Volt te voorzien. Normaal gesproken wordt zo’n voeding niet gebruikt en kun je een gewone 4-pins FJ-11 telefoonlijn gebruiken in plaats van de 6 pins kabel die met je PM2+ meegeleverd is. |
Formules
Vermogen (Watt) = 2,8 / snelheid (sec/meter)³
De calorieën worden berekend uit het vermogen (in Watt), met de aanname dat het rendement van de omzetting van menselijke energie naar vliegwielenergie 25% is en dat het een persoon 300 calorieën kost om zijn/haar lichaam 1 keer heen en weer te bewegen (gebaseerd op een lichaamsgewicht van 80 kg).
Kcal/uur = Vermogen (Watt) x (4,0 x 0,8604 Kcal/Watt) + 300 Kcal/uur