View previous topic :: View next topic |
Author |
Message |
Ic3M4n Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/108089865444d4c570e38bb.gif)
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Wed Apr 18, 2007 6:22 pm Post subject: (solved) programmare porte seriali |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Apr 18, 2007 6:30 pm Post subject: |
|
|
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
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Ic3M4n Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/108089865444d4c570e38bb.gif)
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Wed Apr 18, 2007 7:22 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Apr 18, 2007 7:47 pm Post subject: |
|
|
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
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Ic3M4n Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/108089865444d4c570e38bb.gif)
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Wed Apr 18, 2007 8:05 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
Onip Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/14414636074b138f3ed54ce.png)
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Wed Apr 18, 2007 8:15 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
falko Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
![](images/avatars/10060342648d0acb0637e7.gif)
Joined: 03 Dec 2004 Posts: 242 Location: Rovereto (TN) Italy
|
Posted: Wed Apr 18, 2007 9:14 pm Post subject: |
|
|
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
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 |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Thu Apr 19, 2007 5:39 pm Post subject: |
|
|
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! 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
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
knefas l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
![](images/avatars/3685057594013c4d84f889.jpg)
Joined: 21 Dec 2003 Posts: 828
|
Posted: Thu Apr 19, 2007 5:59 pm Post subject: |
|
|
Io uso minicom, mai avuto successo inviando via bash a /dev/ttyxx. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Ic3M4n Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/108089865444d4c570e38bb.gif)
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Fri Apr 20, 2007 1:30 am Post subject: |
|
|
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. ![Confused :?](images/smiles/icon_confused.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
djinnZ Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/3978748614ef08bfa7f764.jpg)
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Fri Apr 20, 2007 5:23 pm Post subject: |
|
|
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
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist ![Wink :wink:](images/smiles/icon_wink.gif) |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Frez Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
![](images/avatars/1134918543455750fce65a0.jpg)
Joined: 29 Aug 2003 Posts: 166
|
Posted: Sun Apr 22, 2007 12:11 am Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
Ic3M4n Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/108089865444d4c570e38bb.gif)
Joined: 02 Nov 2004 Posts: 3489 Location: Bergamo.
|
Posted: Wed May 09, 2007 12:16 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
lucapost Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
![](images/avatars/17095691174866151fd78ae.gif)
Joined: 24 Nov 2005 Posts: 1419 Location: <ud|me|ts> - Italy
|
Posted: Mon Dec 07, 2009 11:23 am Post subject: |
|
|
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 ![Razz :P](images/smiles/icon_razz.gif) _________________ LP |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mrfree Veteran
![Veteran Veteran](/images/ranks/rank_rect_5_vet.gif)
![](images/avatars/gallery/Monkey Island/Monkey_Island_-_Guybrush.gif)
Joined: 15 Mar 2003 Posts: 1303 Location: Europe.Italy.Sulmona
|
Posted: Wed Dec 09, 2009 2:03 pm Post subject: |
|
|
Grande Ic3M4n, servirà anche a me come soluzione ![Wink ;)](images/smiles/icon_wink.gif) _________________ Please EU, pimp my country!
ICE: /etc/init.d/iptables panic |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|