Lasse Madsen wrote:
> Hej jeg har et spørgsmål om optimering af kode ...
>
> Jeg sender kommandoen AT(CR)(LF) ud på seriel porten og forventer at modtage
> enten OK(CR)(LF) eller ERROR(CR)(LF)
> og min funktion gsm_at() skal så retunere enten 1 for OK 0 for ERROR eller
> noget andet for time out... (softwaren må ikke låse)
>
> Jeg har en seriel port med en modtage buffer på 255 bytes (det er en
> cirkulær buffer) og bruger i dag denne kode til det men der findes
> garanteret en super smartere måde at gøre det på og den vil jeg gerne se for
> jeg syntes denne er lidt amatør agtig
>
Man kunne overveje at bruge memset til at nullstille bufferen.
Man kan også overveje at bruge strncmp isf. if( ... && ... )
Man kunne også overveje at lave at_a og at_b om til
unsigned char's, hvis disse er 8 bit og lave rx_buffer
på 256 chars, så wrapper at_a og at_b selv om.
Man kunne også overveje kun at checke på modtagne karakterer og
ikke loope bufferen over igen og igen.
Hvis man kun forventer "OK" eller "ERROR" kunne man sætte sig til
vente på disse og smide alt andet over bord.
Man bør måske også overveje om telefonen kunne finde på at svarre
Ok.
--
What's in a name?
That which we call a rose by any other name would smell as sweet.
- Juliet