FTDI i C (11 / 12 steg)
Steg 11: RX
Vi är äntligen vidare setup funktioner, får vi funktionerna vi är verkligen är intresserad. Detta är rx(). Det kallas när du vill få användare från RX bufferten. Det finns två buffertar, förresten. Det finns bufferten på FTDI, som rymmer 20 tecken (tror jag). Men sedan finns det bufferten på din PC, som är i stort sett begränsad till mängden minne datorn har.
RX-funktionen The vi är äntligen vidare setup funktioner! Nu, för funktioner är vi verkligen är intresserade. Detta är rx(). Det kallas när du vill användaren från RX bufferten. Det finns två RX buffertar, förresten. Det finns bufferten på FTDI, som rymmer 20 tecken (tror jag). Men sedan finns det bufferten på din PC, som är i stort sett begränsad till mängden minne datorn har. Och kom ihåg, detta är C. Om du anger datorns RxBuffer begränsas till 256 tecken och du få karaktär 257, kommer det inte att klaga. Snarare har du helt enkelt en buffertöverskridning och helvete försöker felsöka den. När funktionen D2XX FT_Read har kallats, töms PC bufferten. Därför kommer får de data du vill ha till anropande rx() vid lämplig tidpunkt.
De flesta av våra variabler som deklarerats till stöd för denna modul används i funktionerna rx() och tx().
- RxBytes rymmer hur många byte som väntar på att läsas.
- RawRXBuffer är den faktiska dator RX buffert. Återigen, vi satt denna buffert för 2048 tecken, men om du får teckennummer 2049 kommer det inte att klaga. Du måste helt enkelt en buffertöverskridning. Cue-ondskefull musik.
- BytesReceived är hur många byte som har tagits emot för att läsas.
- 3: funktionen rx() har en utskrift till skärm valen. Mening, om vi få data och anropa funktionen rx() av passerar det en sann, det kommer att skriva ut de uppgifter som mottagits till skärmen.
- 6: vi får status för enheter. Detta kommer att berätta hur många byte som väntar på att läsa (RxBytes).
- 8: är ett enkelt sätt att konvertera våra mottagna data till en sträng, för lätt parsning.
- 10: om vi faktiskt fick några bytes, kan göra något med dem.
- 13: faktiskt laddar den mottagna datan till våra RawRxBuffer. Det blir också hur många byte har lästs eftersom de förra FT_GetStatus ring.
- 15: om vi fick något byte och vi ville skriva ut, Tja, så låt oss skriva ut dem.
- 19: detta är en viktig plats. Här är där du vill placera koden för att kopiera data från RawRxBuffer, till ett mer permanent hem.
- 20: om vi fick några uppgifter, returnerar sant.
- 27: om vi inte fick några data, returnera false
Du vill anropa funktionen rx() som så,
RX(true);
Detta skulle skriva ut oavsett data finns i rx bufferten till skärmen.