Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 17-11-2005, 18.00.07   #1
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
[c] multithread e porta seriale - RISOLTO con DUBBIO

Ciao, sto scrivendo un'applicazione (ambiente linux) che permetta la comunicazione tra 2 dispositivi attraverso la porta seriale.
Fino a un paio di giorni fa ero riuscito, grazie alla funzione SELECT a scrivere sulla porta e nel contempo ad avere un loop continuo per l'ascolto della porta.
Dato che il protocollo dei 2 dispositivi prevede che il dispositivo remoto riceva delle stringhe ogni 2 secondi per mantenere attiva la comunicazione, ho pensato di aggiungere un thread concorrente che scrivesse la stringa sulla seriale ogni 2 secondi.
Compilo, lancio l'esecuzione, aspetto che i 2 dispositivi si riconoscano e poi parte il thread concorrente. Purtroppo nn fa qllo che spero: manda semplicemente una serie di caratteri INVIO (o A CAPO, dovrei verificare) finche' l'applicazione crasha con un messaggio di "segmentation fault".
Da ql momento nn sono piu' riuscito a far andare la mia applicazione: anche se tolgo la parte relativa al multithreading, il comportamento e' sempre lo stesso. Anche se provo con versioni vecchie (e sicuramente funzionanti): lancio l'eseguibile, il cursore si muove un po' sullo schermo e dopo un 2-3 secondi segmentation fault
Ho creato un file di testo in cui metto tutto qllo che arriva dalla seriale e ho visto che vengono inviati solo caratteri INVIO.
Ho provato a ricompilare, a riavviare il sistema e lanciare subito l'eseguibile di una vecchia versione: sempre lo stesso errore.
Ho provato a far girare un'altra applicazione con multithread (senza coinvolgere la seriale) e funziona senza problemi. Anche minicom funziona senza problemi, ma la mia applicazione no.

Cosa puo' essere successo? Cosa posso controllare?
___________________________________


Ultima modifica di Gergio : 21-11-2005 alle ore 18.19.36
Gergio non è collegato   Rispondi citando
Vecchio 18-11-2005, 16.51.44   #2
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
aggiornamento

trovato e corretto un errore: la creazione del thread concorrente avviene all'interno di un loop. Prima mancava il controllo che consentisse la creazione di un solo thread, per cui a ogni ciclo (credo) veniva creato un nuovo thread.
Il problema, cmq, persiste.
___________________________________

Gergio non è collegato   Rispondi citando
Vecchio 21-11-2005, 18.21.08   #3
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
risolto

dopo vari tentativi ho provato ad aumentare il buffer associato alla porta seriale ed e' andato tutto a posto.

Mi rimane un dubbio: perche' anche le versioni vecchie del mio programma (e qndi gia' compilate e funzionanti) nn funzionavano piu'?
___________________________________

Gergio non è collegato   Rispondi citando
Vecchio 21-11-2005, 23.21.03   #4
Sergio Neddi
Gold Member
Top Poster
 
L'avatar di Sergio Neddi
 
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
Sergio Neddi promette bene
Potrebbe essere che le impostazioni della seriale (quelle impostate dal sistema) siano cambiate.
___________________________________

Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo!
Sergio Neddi non è collegato   Rispondi citando
Vecchio 22-11-2005, 10.42.58   #5
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
Grazie per la risposta

Nn saprei: in avvio del mio sw salvo le impostazioni correnti della porta, gli applico le mie impostazioni e in chiusura gli riapplico le impostazioni originarie.
D'accordo che se il programma termina con un errore run time nn posso riapplicargli le impostazioni originarie, ma le mie impostazioni in apertura dovrebbero essere correttamente impostate.

Nn so che pensare, ma adesso funziona

Magari adesso provo a giocare un po' con il buffer per vedere se ci capisco qlcosa...
___________________________________

Gergio non è collegato   Rispondi citando
Vecchio 06-12-2005, 16.40.18   #6
danieleb
Newbie
 
Registrato: 06-12-2005
Loc.: Casalmaggiore
Messaggi: 4
danieleb promette bene
A me non interessa il contenuto dell'allegato, solo il nome e il fatto che c'è. Mi serve perchè rimanga traccia del fatto che, insieme al messaggio e-mail, c'era appunto un allegato, indipendentemente dal tipo/contenuto.
danieleb non è collegato   Rispondi citando
Vecchio 06-12-2005, 17.23.33   #7
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
in effetti anche a me nn interessa il contenuto dell'allegato...

___________________________________

Gergio non è collegato   Rispondi citando
Vecchio 06-12-2005, 17.30.00   #8
danieleb
Newbie
 
Registrato: 06-12-2005
Loc.: Casalmaggiore
Messaggi: 4
danieleb promette bene
Ooops!! scusa, ho sbagliato a postare !!!
Comunque ho avuto anch'io a che fare con le porte seriali e, ovviamente, ho avuto problemi, ho saputo anche che su alcuni PC la porta seriale è solo simulata, in realtà si tratta di una porta USB camuffata, inoltre potresti avere problemi a causa di buffer (hardware o software) non correttamente svuotati e/o inizializzati... Perlomeno questi erano i problemi che ho riscontrato dovendo gestire quella porta....
danieleb non è collegato   Rispondi citando
Vecchio 06-12-2005, 17.34.09   #9
Gergio
Gold Member
 
Registrato: 14-06-2001
Loc.: LC
Messaggi: 2.415
Gergio promette bene
la mia era solo una battuta
cmq grazie dei consigli
___________________________________

Gergio non è collegato   Rispondi citando
Vecchio 16-02-2008, 11.53.07   #10
ciocgun
Newbie
 
Registrato: 16-02-2008
Messaggi: 1
ciocgun promette bene
è un po tardi ma mi permetto di segnalarti questi 4 tutorial fatti da un amico
http://www.codicefacile.it/tutorials....php/21/Cenni+ di+programmazione+multi-threading
http://www.codicefacile.it/tutorials....php/22/Cenni+ di+programmazione+multi-threading+-+parte+2
http://www.codicefacile.it/tutorials....php/39/Cenni+ di+programmazione+multi-threading+-+parte+3
http://www.codicefacile.it/tutorials....php/41/Cenni+ di+programmazione+multi-threading+-+parte+4
ciocgun non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[XP PRO]dubbio su utilizzo seriale... cippico Windows 7/Vista/XP/ 2003 12 07-03-2008 20.26.55
porta 4662 kilyan Internet e Reti locali 2 15-12-2006 10.36.29
Nuovo Case, Problema con Porta USB anteriore JuSTeR Hardware e Overclock 6 22-08-2006 17.47.13
Duallink e acces point domanda jannaz Internet e Reti locali 10 09-12-2004 22.07.01
problemi con porta infrarossi linotarga Windows 7/Vista/XP/ 2003 1 11-10-2004 12.57.13

Orario GMT +2. Ora sono le: 00.53.54.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.