Jazyka C a znak NULL problém

N

ndru_w

Guest
Ahoj, ja som premýšľal, či mi môžeš pomôcť s mojím problémom. Mám externé zariadenie, ktoré vysiela niektoré údaje UART. Čítam ho na pole znakov. A bohužiaľ toto zariadenie vysiela NULL znaky vnútri dáta (zariadenie je proste niečo ako poučenie NOP, ale v C je to tak nie je: () a kvôli tomu som stratila všetky dáta po znaku NULL, ktorý nemožno zmeniť. zariadenia, takže sa pýtam, či je nejaký možnosť zmeniť výklad NULL v jazyku C? S pozdravom
 
Myslím, že budete musieť napísať vlastnú string / pole rutiny a tiež prijímať / posielať bit programu. Ak správy sú pevnej dĺžky, potom nie je problém. Ak je správa naformátovaná, potom všetko, čo potrebujete, je oddeľovač (NULL char obvykle), ktorý uzatvára jednu správu.
 
[Quote = ndru_w] Ahoj, ja som premýšľal, či mi môžeš pomôcť s mojím problémom. Mám externé zariadenie, ktoré vysiela niektoré údaje UART. Čítam ho na pole znakov. A bohužiaľ toto zariadenie vysiela NULL znaky vnútri dáta (zariadenie je proste niečo ako poučenie NOP, ale v C je to tak nie je: () a kvôli tomu som stratila všetky dáta po znaku NULL, ktorý nemožno zmeniť. zariadenia, takže sa pýtam, či je nejaký možnosť zmeniť výklad NULL v jazyku C? S pozdravom [/quote] Ahoj, ndru_w, existuje niekoľko spôsobov, ako si to v poriadku. Jedným z možných spôsobov, ako ich získať všetky dáta a zistiť, koľko znakov bolo prijaté raz, ak to počet znakov, po ruke, môžete napríklad nahradiť výskyty NULL char s inou char, ktoré chcete Príklad: .. String dostal: "ABCD EDFG IHK "Výmena NULL ->'_':" ABCD_EDFG_I_H_K" Dúfam, že vám pomôže, Rodrigo
 
Vďaka, ale to nie je tak jednoduché, pretože keď som čítanie dát (ja viem, koľko bytov dát mám a čítam všetky tieto údaje), všetko za NULL je vynechaný. Takže nemôžem robiť nejakú náhradu, pretože napr keď budem mať "HEL (NULL) LO" Mám vo svojom poli len Hel.
 
Mali by ste sa s týmito údajmi ako binárne dáta a nie ako reťazec znakov ASCII. Po obdržaní dát, potom to analyzovať.
 
Ak viete, ako dlho bude správa potom si môžete prečítať znakoch a potom plnku do poľa. niečo takéto:
Code:
 for (i = 0; i
 

Welcome to EDABoard.com

Sponsor

Back
Top