Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Modificare le impostazioni della porta COM prima di aprirla
Forum - C/C++ - Modificare le impostazioni della porta COM prima di aprirla

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 22:06
Sabato, 05/11/2011
Ho bisogno di disabilitare l'auto reset dell'arduino quando apro la porta seriale. Su internet ho trovato vari metodi, ma vorrei farlo via software.
Ho quasi risolto scrivendo questo codice dopo aver aperto la porta con la funzione CreateFile (su windows)

Codice sorgente - presumibilmente Plain Text

  1. hHandle = CreateFile(cPort_,
  2.                         GENERIC_READ | GENERIC_WRITE,
  3.                         0, 0,
  4.                         OPEN_EXISTING,
  5.                         FILE_ATTRIBUTE_NORMAL,
  6.                         0);
  7.  
  8.     DCB PortDCB;
  9.     GetCommState(hHandle, &PortDCB);
  10.  
  11.     PortDCB.fDtrControl = DTR_CONTROL_DISABLE;
  12.  
  13.     SetCommState(hHandle, &PortDCB);



il problema è che funziona solo se chiamo SetCommState() dopo aver aperto la porta, ma io ho bisogno di farlo prima.
Così l'arduino si resetta solo la prima volta che apro la porta, ma vorrei che non lo facesse, perciò ho scritto il codice in questo modo
Codice sorgente - presumibilmente Plain Text

  1. DCB PortDCB;
  2.     GetCommState(hHandle, &PortDCB);
  3.  
  4.     PortDCB.fDtrControl = DTR_CONTROL_DISABLE;
  5.  
  6.     SetCommState(hHandle, &PortDCB);
  7.  
  8.     hHandle = CreateFile(cPort_,
  9.                         GENERIC_READ | GENERIC_WRITE,
  10.                         0, 0,
  11.                         OPEN_EXISTING,
  12.                         FILE_ATTRIBUTE_NORMAL,
  13.                         0);


ma non funziona. Come posso modificare lo stato della porta seriale prima di aprirla, senza causare il reset dell'arduino??

Ultima modifica effettuata da genni_96 il 05/11/2011 alle 22:08
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 22:17
Sabato, 05/11/2011
hai l'arduino uno?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:30
Sabato, 05/11/2011
No ... non puoi chiamare prima la funzione che si attende l'handle ottenuto dalla CreateFile.




Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 9:15
Domenica, 06/11/2011
Ho l'arduino 2009.
Lo so che non è possibile, ma non c'è un alto modo?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:59
Domenica, 06/11/2011
Dal web ...

" La Duemilanove contiene una traccia che può essere disattivata per disabilitare l'auto-reset. Le parti che si trovano su entrambi i lati della traccia possono essere saldati insieme per riattivarlo. La sua etichetta è "RESET-EN". "


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 10:18
Domenica, 06/11/2011
ma io vorrei farlo via software, senza modificare l'arduino.

Ultima modifica effettuata da genni_96 il 06/11/2011 alle 10:22
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:42
Domenica, 06/11/2011
Da software si fa con il codice che hai mostrato all'inizio ...

Chiarisci meglio il problema perché comincio ad avere dubbi ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 10:57
Domenica, 06/11/2011
Scusa se non mi sono spiegato bene.
Il problema è che chiamando la SetCommState dopo aver aperto la porta le impostazioni vengono applicate dopo, quindi la prima volta l'arduino si resetterà, ed è quello che voglio evitare

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:02
Domenica, 06/11/2011
... e l'unico modo è disabilitare questa funzionalità dall'hardware ...

Mi sembra che non ci siano altre possibilità ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo