Fórum témák

» Több friss téma
Cikkek » PIC 18F4550 USB útmutató II
PIC 18F4550 USB útmutató II
Szerző: Gory, idő: Jún 8, 2007, Olvasva: 25873, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   5 / 7

mUSBUSARTIsTxTrfReady

Ez a makró arra való, hogy megnézzük, hogy CDC class kész-e adatfogadásra.
Tipikus használata: if(mUSBUSARTIsTxTrfReady()) 

Megjegyzés:

Ne hívjuk a függvényt blokkoló módon (később lesz róla szó pl., while(!mUSBUSARTIsTxTrfReady())

Szintaxis:

BOOL mUSBUSARTIsTxTrfReady(void)

Előfeltétel:

-

Input:

-

Output:

BOOL

Ha a firmware driver kész fogadni az új adatot hogy kiküldje az USB-re, akkor a visszatérési érték ‘1’, egyébként  ‘0’.

Mellékhatás:

-

Példa:

void example_1(void)
{
if(mUSBUSARTIsTxTrfReady())
putrsUSBUSART(“Microchip”);
}//end example_1

getsUSBUSART

  Az USB-n beérkezett adatokat teszi a paraméterként megadott területre. Ez egy nem blokkoló függvény, azaz ha nincs olvasnivaló adat, akkor nem vár amíg érkezik valami, hanem visszatér 0-val.

Megjegyzés:

Ha a ténylegesen beérkezett bájtok száma nagyobb a várt bájtok számánál, akkor a buffer területre csak a várt számú bájtot teszi át. Ha pedig kevesebb bájtot kapunk, mint amennyit vártunk, akkor a ténylegesen beérkezett bájtokat teszi a bufferbe. 

Szintaxis:

byte getsUSBUSART(char *buffer, byte len) 

Előfeltétel:

A len argumentum értéke legfeljebb csak a vételre beállított endpoint által fogadható bájtok értéke lehet. Ez az érték a CDC_BULK_OUT_EP_SIZE változóban az usbcfg.h fájlban.

CDC_BULK_OUT_EP_SIZE lehet  8, 16, 32 vagy 64 bytes.

A buffer argumentum által mutatott terület legalább akkora kell hogy legyen mint a len argumentumban meg van adva.

Input:

buffer

Pointer a beérkezett bájtok helyére.

len

Várt bájtok száma. 

Output:

byte

A buffer területre ténylegesen bemásolt bájtok száma 

Mellékhatás:

A cdc_rx_len publikus változó értéke felülíródik az aktuálisan a bufferterületre másolt bájtok. (A cdc_rx_len változó értékét az mCDCGetRxLength() makróval is megkaphatjuk.)

Példa:

char input_buffer[64];
void example_1(void)
{
byte index, count, total_sum;
if(getsUSBUSART(input_buffer, 8)
{
count = mCDCGetRxLength();
total_sum = 0;
for(index = 0; index < count; index++)
total_sum += input_buffer[index];
}//end if
}//end example_1

void example_2(void)
{
if(getsUSBUSART(input_buffer, CDC_BULK_OUT_EP_SIZE)
{
// Do something…
}//end if
}//end example_2

 

mCDCGetRxLength

Arra használjuk, hogy kinyerjük a legutolsó getsUSBUSART függvényhívás által buffer területre másolt bájtok számát.

Szintaxis:

byte mCDCGetRxLength(void) 

Előfeltétel:

-

Input:

-

Output:

byte

A kérdéses bájtok száma.

Mellékhatás:

-

Példa:

char input_buffer[64];
void example_1(void)
{
if(getsUSBUSART(input_buffer, 2)
{
// Do something with input_buffer[0]
if(mCDCGetRxLength() == 2)
// Do something with input_buffer[1]
}//end if
}//end example_1


A cikk még nem ért véget, lapozz!
Következő: »»   5 / 7
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem