IALweb Homepage
Forum Home Forum Home > Programmazione > Programmazione > C/C++ - VISUAL C++
  New Posts New Posts RSS Feed - Codice per comunicazione in seriale su Windows 7
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

Codice per comunicazione in seriale su Windows 7

 Post Reply Post Reply
Author
Message
sepp974 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 12/Lug/2003
Location: torino
Status: Offline
Points: 45
Post Options Post Options   Thanks (0) Thanks(0)   Quote sepp974 Quote  Post ReplyReply Direct Link To This Post Topic: Codice per comunicazione in seriale su Windows 7
    Posted: 30/Lug/2012 at 10:44

Ciao a tutti.

Io ho un programma fatto in Visual C++ (Visual Studio 6), per la comunicazione su seriale (RS232) con dei lettori di codice a barre.

Questo programma ha sempre funzionato su PC sui quali era installato Windows XP (e prima ancora Windows 2000).  Ora devo installarlo su PC con Windows 7 e purtroppo non sempre funziona correttamente. Non sempre la comunicazione su seriale viene avviata. 

Le funzioni che utilizzo sono  CreateFileCloseHandleReadFileWriteFile.

Sapete dirmi perchè? Non è più compatibile con windows 7? L'ho provato su vari computer col nuovo sistema operativo e il comportamento è uguale.

Avete qualche soluzione o idea da suggerirmi?

Grazie mille

Back to Top
Sponsored Links


Back to Top
65.franco View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 19/Apr/2009
Location: Italy
Status: Offline
Points: 4108
Post Options Post Options   Thanks (0) Thanks(0)   Quote 65.franco Quote  Post ReplyReply Direct Link To This Post Posted: 30/Lug/2012 at 12:55
Sicuramente stai passando da 32 a 64bit
Penso proprio che il problema si annida qui.
Hai provato a verificare queste documentazioni ? 
 
Ciaooo ... Wink
 
Franco...
Back to Top
sepp974 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 12/Lug/2003
Location: torino
Status: Offline
Points: 45
Post Options Post Options   Thanks (0) Thanks(0)   Quote sepp974 Quote  Post ReplyReply Direct Link To This Post Posted: 31/Lug/2012 at 11:19
Ciao, grazie per avermi risposto.
Il problema non è il passaggio a 64 bit (windows 7 installato è ancora a 32 bit), ma nella dichiarazione di una variabile che da una parte viene dichiarata NULL e poi viene utilizzata in altro modo.. spero veramente di aver risolto. La curiosità è ora capire come mai ha funzionato per anni su windows xp e ora su win 7 non va più.. sarà davvero legato al sistema operativo?
Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10254
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 31/Lug/2012 at 14:57
Una variabile che viene dichiarata NULL e poi viene utilizzata in altro modo, rischia di non fornire una coerenza nella continuità dell'applicativo.
Inoltre è da tenere presente che la definizione di NULL non assicura la portabilità del codice, fra diversi compilatori e sistemi operativi.
http://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0
http://stackoverflow.com/questions/1674150/null-definition-problem-on-64-bit-system

Edited by willy55 - 31/Lug/2012 at 14:57
Willy
Back to Top
sepp974 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 12/Lug/2003
Location: torino
Status: Offline
Points: 45
Post Options Post Options   Thanks (0) Thanks(0)   Quote sepp974 Quote  Post ReplyReply Direct Link To This Post Posted: 31/Lug/2012 at 16:37
Grazie willy per la delucidazione, ma a questo punto ho un ulteriore dubbio.. negli esempi che hai postato c'è scritto che c'è differenza fra 0 e NULL, il mio codice che ho ereditato da gente che ne capiva tanto più di me è questo (per quanto riguarda CreateFile):

m_hDisCom = CreateFile( szPuerto, GENERIC_READ | GENERIC_WRITE,
0,                    
NULL, 
OPEN_EXISTING,
NULL,
NULL);

Come vedi c'è un uso indiscriminato dello 0 e del NULL..
Io ora, per uniformarlo, l'ho modificato in
m_hDisCom = CreateFile( szPuerto, GENERIC_READ | GENERIC_WRITE,
NULL,                    
NULL, 
OPEN_EXISTING,
NULL,
NULL);

Ho fatto male?
Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10254
Post Options Post Options   Thanks (1) Thanks(1)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 31/Lug/2012 at 23:11

La scelta di utilizzare NULL oppure 0 è stata molto dibattuta fra i programmatori del linguaggio C/C++.
Le eventuali diversità di impiego dipendono da molti aspetti (compilatore, ambiente operativo, modello di memoria, contesto ecc).
Nel C classico era possibile impiegare il "cast" per indicare al compilatore C di trattare una variabile di un tipo diverso in uno specifico contesto.
Ora il C++ che si attiene allo standard, stabilisce che NULL sia definito come 0 o come 0L, in altre parole, NULL è solo un alias per lo zero letterale.
Di massima è possibile utilizzare lo zero come un inizializzatore di puntatore direttamente e non c'è bisogno di sostituire 0 con NULL.
Pertanto, nel tuo caso non dovrebbero esserci differenze al riguardo.
Ritornando alla problematica del titolo, valuta che per operare nella gestione dei file, a livello di sistema,
la procedura deve avere i privilegi da amministratore (come riportato anche nella manualistica della funzione CreateFile),
In ogni caso per cercare di individuare da ove scaturisce l'inconveniente ti consiglio di gestire l'errore che viene generato (con GetLastError).

Per una panoramica fra NULL e zero:
http://www.fredosaurus.com/notes-cpp/pointer-ref/50nullpointer.html
http://en.allexperts.com/q/C-1040/NULL-value-C-C.htm
http://www.devx.com/tips/Tip/25707
http://lwn.net/Articles/93574/
http://bytes.com/topic/c/answers/868405-difference-between-null-zero
http://bytes.com/topic/c/answers/504052-null-vs-0-a
http://bytes.com/topic/c/answers/223220-references-machines-where-null-not-zero
http://stackoverflow.com/questions/5907614/0xdeadbeef-vs-null

Per problematiche che pofrebbero ricadere nell'ambito in oggetto:
http://social.msdn.microsoft.com/Forums/zh/windowsgeneraldevelopmentissues/thread/9b7615b1-e0a9-4188-82c5-06073f21d5e9
http://stackoverflow.com/questions/7665384/createfile-returns-invalid-handle-value-but-getlasterror-is-error-success
http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/3fc22b61-ef25-452d-aa8f-ea21b8e30734
http://social.msdn.microsoft.com/Forums/en/vclanguage/thread/1048cfa7-428d-47c9-a32b-71bf0a56c3ce
http://forums.codeguru.com/showthread.php?269090-CreateFile-requires-quot-administrative-privileges-quot
http://windows7forums.com/windows-vista-programming/11240-c-how-temporarily-gain-admin-rights.html

Willy
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,078 seconds.