Zaprvé, nejdříve kritika:
- I2C na komunikaci mezi 2 zařízeními (procesorovými jednotkami) na cca 10 m je pěkná zhovadilost. Ano, ono to nakonec nějak bude fungovat, třeba sundáš hodiny jak píšeš. Nejspíš. Většinou. Ale není to na to stavěné. Když už, použít nějaký I2C bus buffer na proudové posílení. Ale nechápu proč do toho jít u úplně nového systému, kde si můžeš vybrat co chceš.
- Posílat si přes I2C zprávy v řetězcích oddělených středníkem je další blbost. Ne že by to nakonec nešlo, ale je strašná krávovina
- na embedded zařízeních a speciálně těch s AT Mega a podobně výkonnými procesory nemá funkce sscanf a jí podobné co dělat. A to z více důvodů. Ne že by to nějak nefungovalo, ale žere příliš zdrojů a (podle implementace) může být náročná na paměť na zásobníku. Všechno špatně pro systém s omezenými zdroji.
A teď má doporučení:
1. Komunikace: RS-485 (nemáš peer-2-peer, ale spojuješ více zařízení, takže RS-232 nejde). I2C je pro komunikaci mezi součástkami na jedné desce, případně více deskách, ale v rámci stejného zařízení.
2. Neposílej zprávu, kterou pak musíš složitě parsovat, najednou. Využij nějaký standardní protokol (třeba modbus s otevřenou implementací -
www.modbus.org). A pro každý řetězec si zadefinuj zprávu (kód). Takže když budeš posílat data, pošleš v hlavičce adresu zařízení (na který displej to posíláš), za ní kód zprávy (0: Stav A, 1: Stav B, 2: Stav C, ...), a následně řetězec. U Modbusu budeš mít jasně dané mantinely implementací protokolu. Modbus přes RS-485 je ověřené, stabilní a spolehlivé řešení.
3. Nepoužívej sscanf - pro "malé" procesory v embedded systémech je to žrout zdrojů a zabiják výkonu.
Pokud se i přesto rozhodneš zůstat u I2C, najdi si datasheet nějaké součástky, která I2C používá a inspiruj se tím, jak ho používají. Třeba nějaký LED displej kontrolér (např.
http://www.ti.com/lit/ds/symlink/tpic2810.pdf - podívej se na Slave address, sub-address, data). A doporučím ti osadi nějaký I2C buffer na těch 10 m. Jaký vlastně máš kabel? UTP? Na jaké vodiče jsi zapojil SDA a SCL? Doufám že ne do jednoho páru.