Beste mensen,
ik wil een kleine File verzenden naar me PIC 18F452 met hyperterminal en het XMODEM portocol. Volgens het gene wat ik op internet heb gevonden wordt met dit protocol pakketjes van 132 byte verstuurd.een 3 byte header 128 byte's data en 1 byte checksum.
nu lees ik in me PIC het pakketje in door middel van de deze instuctie HRSIN STR DataPC \132. Ik bereken daarna de checksum en is deze goed dan stuur ik een Acknowledge terug voor het volgende pakket.In het begin gaat het zenden/ ontvangen prima maar bij het laatste pakket stuit ik op een probleem. mijn PIC ontvangt een pakketje kliener als 132 byte's waardoor deze op een leeg buffer stuit tijdens het uitlezen met de instuctie HRSIN STR DataPC \132.
vervolgens staat me programma vast op deze regel. maar hoe kan ik dit verkomen?
met vriendlijke groet,
Gerben
Roches
Domoticz en ESP8266, goede combo!!!
Denk dat het toch niet zo makkelijk is als je denkt...
Lees: http://en.wikipedia.org/wiki/XMODEM#Packet_structure
Hieruit blijkt dat inderdaad het laatste blok niet 132 Bytes kan zijn.
Je zult dus per byte moeten ontvangen en als je een timeout krijgt, kijken of het laatste byte een EOT is (26)...
Zelf dus een goede routine schrijven....
Ja beetje dom van me dat ik nog niet aan de timeout had gedacht|:(
dus nu heb ik een timeout label gemaakt waar word bekeken of in het eerste element van het Array en EOT staat. is dit niet het geval dan stuur ik weer een NAK terug om opnieuw het pakket aan te vragen. en dit werk nu prima:)
Bedankt voor de tips heren