Много е просто. На едното пишеш сърверна част - как се отваря и слуша на сокет под линукс питай гугълчо. На другата страна отваряш клиент. А в двете как ще си разменят съобщенията и какво ще правят си го пишеш и измисляш протокола. Имам вече реализирани подобни неща но едва ли ще ти свършат работа, доста са специализирани за програматор става дума.
Ето мястото от където съм стартирал http://www.linuxhowtos.org/C_C++/socket.htm . Успех в начинанието.
Не забравяй и чексуми за да се валидират фреймовете ан 'удължителя' както и блокиране на други клиенти RS-a не е за многозадачна работа, само между 2 устройства е.
никва връзка с истината...
за да удължиш ethernet през сериен порт трабва да слезеш по ниско. Кви сокети кви пет лева.
Всъщност задачата се състои в две под задачи:
1) Да се направи драйвер, който да позволи адресацията на серийния порт като Ethernet устройство:
http://www.xml.com/ldd/chapter/book/ch14.html( Всяка дума под "Connecting to the Kernel" трябва да е изчетена и разбрана )
2) Трябва да се имплементира алгоритъм за достъп до физическата среда. Според мен интерфейсът трябва да си има свой си драйвер, който да давя някакво ABI. Готиното в цялата работа е, че ако имаш примерно RS232 връзката ти не е peer-to-peer както е в ethernet-а и алгротъма би трябвало да е доста прост. Ако обаче си решила да се правиш на гъзе, може да се имплементира нещо като достъпа в LAN мрежа:
http://fmi.wikidot.com/km7Според мен задачата не би трябвало да отнеме повече от 500 реда код
(може и някакъв свой си де... ама тоя е изпипан)
Даже хората са дали пример за пренос на данни:
int snull_tx(struct sk_buff *skb, struct net_device *dev)
{
int len;
char *data;
struct snull_priv *priv = (struct snull_priv *) dev->priv;
len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
data = skb->data;
dev->trans_start = jiffies; /* save the timestamp */
/* Remember the skb, so we can free it at interrupt time */
priv->skb = skb;
/* actual delivery of data is device specific, and not shown here */
snull_hw_tx(data, len, dev);
return 0; /* Our simple device cannot fail */
}
Магията се случва в snull_hw_tx. Това трябва да имплементираш ти, понеже както съм сигурен имаш дълбоки познания с EP9302.
П.П не съм програмист и никога не съм писал на C ( освен неща като Hello World ), но съм останал с впечатлението, че май разбирам нещичко от OS