Newsgroup: it.comp.os.linux.development
Titolo: simulare seriali

ciao a tutti,
ho un applicativo (#1) già pronto che si connette ad un tot di 
dispositivi che operano tramite seriale, e non sono nelle condizioni di 
poterlo modificare. Io vorrei realizzare un simulatore software, e al 
posto di /dev/tty... vorrei creare una sorta di "file" su cui poter 
intercettare le richieste del programma #1 e rispondere come farebbe un 
dispositivo fisico. E' possibile farlo, considerando la non 
modificabilità dell'applicativo #1? se sì, cosa devo guardare?
-- 
SF


cambiare il device file con una fifo e fare un programma che si attacca
all'altra estremita'?
Inviato da X-Privat.Org - Registrazione gratuita 
http://www.x-privat.org/join.php

Ottavio Campana ha scritto:



Credo sia la soluzione se il programma usa solo open(2), read(2), write(2),
select(2), ma se usa ioctl(2) per settare velocita' parita' ecc o per
leggerne i valori si deve scrivere un character-device (se ne puo'
modificare uno di quelli che appaiono il esempi con Kernel Hacker Guide).
Oppure intercettare la ioctl con ptrace???? (mah! Meglio il device!)
Ciao
Roberto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 modificabilità dell'applicativo #1? se sì, cosa devo guardare?
Puoi usare gli pseudo-terminali. Lo slave viene visto come un normale
TTY. Il programma di debug usa /dev/ptmx per aprire uno o più PTY, il
programma #1 utilizza i device sotto /dev/pts come normali TTY.
Per i dettagli vedi ptmx(4).
Luca
-- 
Home: 
http://kronoz.cjb.net
Se non puoi convincerli, confondili.

 all'altra estremita'?
questo č esattamente quello che avevo provato a fare io, ma senza 
successo. Riesco a ricevere le interrogazioni dall'applicativo, ma 
quando gli rispondo con valori simulati questi non vengono ricevuti 
(nonostante il fatto che write non restituisca nessun errore).
Come avete scritto nel post seguente, potrebbe dipendere dal fatto che 
vengono eseguite chiamate a ioctl sul lato applicativo?
-- 
SF

 
cavolo, sembra proprio quello che serve a me! purtroppo non posso 
modificare il programma #1 e questi, a sua volta, utilizza /dev/tty###. 
Che sia possibile fregarlo utilizzando qualche link?
-- 
SF

 Che sia possibile fregarlo utilizzando qualche link?
Direi proprio di sì, nel pegiore dei casi puoi usare il programma in un
chroot in cui ti crei i device che vuoi senza rischiare di incasinare il
sistema.
-- 
Lorenzo `paulatz' Paulatto
Trieste
``Grandissima mi par l'inezia di coloro che vorrebbero che Iddio avesse
fatto l'universo più proporzionato alla piccola capacità del lor discorso.''
     --Galileo Galilei (Opere VII)

 
problema: per creare il link mi serve il nome del file a cui è associato 
l'entry in /dev/pts/, fortuna vuole che esista una funzione chiamata 
ptsname che fa proprio al caso mio, definita in stdlib.h.
Il problema è che ottengo, in compilazione, un bel messaggio tipo:
'ptsname': undeclared (first use this function)
ho notato che questa funzione viene dichiarata solamente se è definito 
__USE_XOPEN, ma anche impostanto -D__USE_XOPEN come parametro del 
compilatore (g++) ottengo lo stesso errore! come può essere?
-- 
SF

 
risolto definendo il macro _GNU_SOURCE.
-- 
SF