Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
(solved) programmare porte seriali
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Wed Apr 18, 2007 6:22 pm    Post subject: (solved) programmare porte seriali Reply with quote

ciao a tutti, ho un piccolo problema con la programmazione delle porte seriali, mi spiego meglio: ho un bus dati collegato alla com0 e devo leggere e inviare dei dati tramite questa. Il problema nasce dal fatto che con una vecchia knoppix con kernel 2.6.7 riuscivo tramite il terminale ad inviare dei dati e questi venivano interpretati correttamente, adesso invece questa cosa non riesco più a farla. Ho fatto qualche ricerca tramite google e mi sono scontrato con oltre 20 anni di storia di collegamenti seriali, programmi differenti e metodi di invio dei dati anch'essi differenti arrivando al punto che non so come quali parti siano ancora attuali e quali si riferiscano ad implementazioni non più utilizzate. qualcuno di voi può darmi una mano o inviarmi sulla giusta via per capire come inviare correttamente i dati?

Last edited by Ic3M4n on Wed May 09, 2007 12:17 pm; edited 1 time in total
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Apr 18, 2007 6:30 pm    Post subject: Reply with quote

8O Non ci ho capito niente.
In che senso non funziona?
è un programma che ti crea problemi o è un script dell'applicazione terminale?

cmq non sono 20 ma 30 anni.

la modalità qual'è?
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Wed Apr 18, 2007 7:22 pm    Post subject: Reply with quote

oltre 20 anni = anche 30 ;)

mi spiego meglio:
redirigendo una stringa di inizializzazione formattata correttamente con la knoppix vecchia riuscivo a comandare un plc collegato alla seriale del pc, ora ci ho riprovato e non funziona, i procedimenti sono gli stessi, le uniche differenze che mi balzano all'occhio sono la codifica dei caratteri, prima iso8859.1 ora unicode, anche se i caratteri sono dei semplici ascii e la versione del kernel ora un 2.6.19 e prima un 2.6.7

io volevo scrivere un piccoo programmino per permettere di inviare queste stringhe di comandi e leggere le risposte fornite dal plc solo che non riesco ad ottenere alcun risultato.

Dato che la documentazione presente è immensa ma anche molto datata a volte volevo sapere se qualcuno può darmi qualche dritta per orientarmi.
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Wed Apr 18, 2007 7:47 pm    Post subject: Reply with quote

Ancora non hai detto come. Mi pare di capire che stai tentando una pipe su una seriale cosa che in genere non funziona mai bene (e c'è il problema della codifica di sicuro). In ogni caso hai usato setserial per impostare la porta? Se ti colleghi con minicom che succede?
Da quando hanno cambiato il driver nel kernel ho trovato qualche piccolo problema con la stampante seriale ed ora uso solo il pnp (disabilitando gli altri).
L'esempio più facile è nel serial programming howto e non dovrebbe essere cambiato nulla rispetto a quello. La documentazione è datata perchè le seriali sono quelle e non è cambiato nulla.
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Wed Apr 18, 2007 8:05 pm    Post subject: Reply with quote

esempio, non ricordo attualmente la stringa, non l'ho a portata di mano:
Code:
echo "*0100EE" >> /dev/ttyS0
un tempo eseguiva l'operazione sul plc ed avevo una risposta.
adesso non più. L'idea era di aprire il file /dev/ttyS0 in un programma e leggere e scrivere quello che mi serve. Solo che in un tutorial leggo che per leggere si utilizza /dev/tty0 e per scrivere /dev/cua0 (che logicamente non ho) e quindi mi viene il dubbio che un po' di documentazione sia oltremodo datata.

minicom e cose del genere non li ho mai provati. non ho ancora avuto tempo per approfondire.
Back to top
View user's profile Send private message
Onip
Advocate
Advocate


Joined: 02 Sep 2004
Posts: 2912
Location: Parma (Italy)

PostPosted: Wed Apr 18, 2007 8:15 pm    Post subject: Reply with quote

Io ho trovato utile net-dialup/gtkterm, mooolto simile all'HyperTerminal di windows.
_________________
Linux Registered User n. 373835

Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum
Back to top
View user's profile Send private message
falko
Apprentice
Apprentice


Joined: 03 Dec 2004
Posts: 242
Location: Rovereto (TN) Italy

PostPosted: Wed Apr 18, 2007 9:14 pm    Post subject: Reply with quote

Io avevo scaricato un esempio scritto in C al seguente link
http://www.comptechdoc.org/os/linux/programming/c/linux_pgcserial.html
non ho mai avuto tempo di provarlo.... se lo fai tu te ne sarei grato :wink: :wink: :wink:
Comuque, per curiosità che tipo di PLC stai usando?
In questo momento sto facendo proprio un progetto per PLC, pù precisamente PLC siemens
_________________
Io non sarò mai nessuno ma... nessuno sarà mai come me. (Jim Morrison)

A ciacere no se sgonfa done

Gentoo on: Lenovo R500
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Thu Apr 19, 2007 5:39 pm    Post subject: Reply with quote

Ic3M4n wrote:
esempio, non ricordo attualmente la stringa, non l'ho a portata di mano:
Code:
echo "*0100EE" >> /dev/ttyS0
un tempo eseguiva l'operazione sul plc ed avevo una risposta.


mi pareva! :wink: la pipe sulle seriali non ha mai funzionato bene.
Al più potresti pensare di adattare un dialer a tal proposito. In pratica l'echo ... funziona ma una volta terminato il file viene chiuso e ti perdi la risposta, più o meno, se il plc (nel mio caso era un modem) rileva che non c'è nulla ad attendere la risposta può anche essere che si resetti a zero.
In più ti conviene pensare di usare un comando
Code:
echo -e "*0100EE\n\r"
.

Ic3M4n wrote:
adesso non più. L'idea era di aprire il file /dev/ttyS0 in un programma e leggere e scrivere quello che mi serve. Solo che in un tutorial leggo che per leggere si utilizza /dev/tty0 e per scrivere /dev/cua0 (che logicamente non ho) e quindi mi viene il dubbio che un po' di documentazione sia oltremodo datata.


In questo si, la doc è un tantino datata. Adesso si usa solo ttyS0 sia per l'input che per l'output. Dai uno sguardo qui per cominciare se il c non è problema, da linea di comando avevo trovato un modo (volevo crearmi un mio programma per gestire la dannata centralina telefonica ma sono passati quasi dieci anni quindi dispero di trovare qualcosa).

Per prima cosa però installa minicom/gtkterm/seyon o che altro per fare delle prove a manina e verificare che la connessione funzioni poi inizi a pasticciare sulla programmazione.
Ti ripeto che ho notato qualche problemino di convivenza tra SERIAL_8250_PCI e SERIAL_8250_PNP (nel caso usi un adattatore usb potrebbe anche essere lì il prblema).
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
knefas
l33t
l33t


Joined: 21 Dec 2003
Posts: 828

PostPosted: Thu Apr 19, 2007 5:59 pm    Post subject: Reply with quote

Io uso minicom, mai avuto successo inviando via bash a /dev/ttyxx.
Back to top
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Fri Apr 20, 2007 1:30 am    Post subject: Reply with quote

ok, ho emerso gtkterm e finalmente sono riuscito a tornare al punto di partenza, ovvero ad ottenere quanto ottenevo prima con la knoppix.
adesso mi informo per bene su quanto riguarda la configurazione della com. Ringrazio tutti per la disponibilità.

PS: il PLC è di una marca sconosciuta, sono riuscito ad ottenere un po' di codici tramite un'opzione di debug e nulla più quindi non posso rispondere alla domanda di falko. diciamo che attualmente è tutta curiosità personale riguardo ad un'applicativo che utilizzo tutti i giorni senza sapere come funziona ed in puro spirito hacking voglio scoprire cosa effettivamente fa.

PS2: non centra nulla con il thread ma questo è il mio 3millesimo post in questa comunità. WOW! oops, no non si può più dire. :?
Back to top
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Fri Apr 20, 2007 5:23 pm    Post subject: Reply with quote

Mi sono ricordato che cortocircuitando o il pin di paper out o il select a ground (verificare attentamente sono ricordi molto remoti di quando avevo tanti capelli lunghi e pesavo una decina di chili in più, senza pancetta) mi pare che si possa ovviare al problema della chiusura del device ad ogni operazione di scrittura o lettura via bash (ovviamente dipende molto dal dispositivo).
Altrimenti se termios.h ti torna complicato c'è il perl, il ruby o il tcl che hanno le proprie librerie specifiche.
_________________
scita et risus abundant in ore stultorum sed etiam semper severi insani sunt:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
Frez
Apprentice
Apprentice


Joined: 29 Aug 2003
Posts: 166

PostPosted: Sun Apr 22, 2007 12:11 am    Post subject: Reply with quote

oppure c'è l'accoppiata python + pyserial che è una figata :)

e se ti piace lavorare da shell, lo chef consiglia ipython
_________________
There is one more thing ... it's been emotional
Back to top
View user's profile Send private message
Ic3M4n
Advocate
Advocate


Joined: 02 Nov 2004
Posts: 3489
Location: Bergamo.

PostPosted: Wed May 09, 2007 12:16 pm    Post subject: Reply with quote

allora: ringrazio tutti per le valide alternative, alla fine ho optato per una cosa leggermente differente in quanto mi trovavo molta pappa già pronta e non avevo voglia di dover reinventare la ruota.
spiego quanto ho fatto:
con gtkterm ho trovato i settaggi corretti da dover utilizzare, parità, timeout, etc etc.
il linguaggio di programmazione che devo utilizzare è java, dopo una ricerca in internet ho scoperto che ci sono un paio di progetti che rendono disponibili le risorse relative alla com, uno specialmente fornito da sun ed un'implementazione esterna di alcune classi che nel pacchetto sun fanno schifo. Ovvero io ho letto un "il supporto da parte di java alle seriali fa schifo" e quindi mi sono cercato un'altra soluzione che vi spiego:
Code:
 eix ser2net
* net-misc/ser2net
     Available versions:  2.3 {tcpd}
     Homepage:            http://sourceforge.net/projects/ser2net
     Description:         Serial To Network Proxy

Ovvero trasmette le informazioni dalla seriale ad un socket e viceversa. La connessione verso un socket in java è una vaccata da fare e quindi ho risolto il mio problema dialogando direttamente con ser2net che ripassa le informazioni tramite la seriale. Cosa ancora più importante, ser2net può viaggiare su un pc ed il mio programma in java su un'altro senza problemi.
Back to top
View user's profile Send private message
lucapost
Veteran
Veteran


Joined: 24 Nov 2005
Posts: 1419
Location: <ud|me|ts> - Italy

PostPosted: Mon Dec 07, 2009 11:23 am    Post subject: Reply with quote

l'altro giorno mi sono esaltato un pò quando con screen e la combinazione C-a H sono riuscito facilemente a ricavare un log dalla porta seriale :P
_________________
LP
Back to top
View user's profile Send private message
mrfree
Veteran
Veteran


Joined: 15 Mar 2003
Posts: 1303
Location: Europe.Italy.Sulmona

PostPosted: Wed Dec 09, 2009 2:03 pm    Post subject: Reply with quote

Grande Ic3M4n, servirà anche a me come soluzione ;)
_________________
Please EU, pimp my country!

ICE: /etc/init.d/iptables panic
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum