Portál AbcLinuxu, 25. dubna 2024 10:18


Dotaz: Sériový přenos na jednom počítači

14.1.2005 16:53 tomKl
Sériový přenos na jednom počítači
Přečteno: 191×
Odpovědět | Admin
zdravím,

píšu program na přenos dat po sériovém kabelu pod linuxem. Protože momentálně nemám k dispozici dva počítače, chtěl bych to vyzkoušet na jednom, který má dva sériové porty. Abych ověřit kabel a porty, napsal jsem jednoduchý prográmek, který pošle jeden znak na ttyS0 a přečte ho z ttyS1. Otevření portů a zápis proběhne v pohodě (numb_send = 1), ale při čtení to vrátí -1 a v buf jsou nějaký nesmysly. Nastavení portů by mělo být v pořádku. Musí se nastavit ještě něco jiného, nebo špatně používám read?


Díky za rady

Nastavení portů
ttyS0: Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 Baud_base: 115200,
close_delay: 50, divisor: 0, closing_wait: 3000
ttyS1: Line 1, UART: 16550A, Port: 0x02f8, IRQ: 3 Baud_base: 115200,
close_delay: 50, divisor: 0, closing_wait: 3000

int main(void) {
int fd1, fd2; int numb_send,numb_rec; char c = 'a'; char buf[5];
fd1 = open("/dev/ttyS0", O_RDWR | O_NOCTTY|O_NONBLOCK);
if (fd1 < 0) exit(-1);
fd2 = open("/dev/ttyS1", O_RDWR | O_NOCTTY|O_NONBLOCK);
if (fd2 < 0) exit(-1);
numb_send = write(fd1,&c,1);
numb_rec = read(fd2,buf,sizeof(buf));
printf("sent: %d\n received: %d\n",numb_send,numb_rec);
printf("%s\n",buf);
close(fd1);
close(fd2); }
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.1.2005 17:15 Michal Kubeček
Rozbalit Rozbalit vše Re: Sériový přenos na jednom počítači
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je návratová hodnota záporná, není důležité, co je v buff (tam bude nejspíš to, co jste tam měl), ale co je v errno

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.