genni_96 (Normal User)
Pro
Messaggi: 108
Iscritto: 04/06/2010
|
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 |
hHandle = CreateFile(cPort_,
GENERIC_READ | GENERIC_WRITE,
0, 0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
DCB PortDCB;
GetCommState(hHandle, &PortDCB);
PortDCB.fDtrControl = DTR_CONTROL_DISABLE;
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 |
DCB PortDCB;
GetCommState(hHandle, &PortDCB);
PortDCB.fDtrControl = DTR_CONTROL_DISABLE;
SetCommState(hHandle, &PortDCB);
hHandle = CreateFile(cPort_,
GENERIC_READ | GENERIC_WRITE,
0, 0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
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 |
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
hai l'arduino uno?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
genni_96 (Normal User)
Pro
Messaggi: 108
Iscritto: 04/06/2010
|
Ho l'arduino 2009.
Lo so che non è possibile, ma non c'è un alto modo?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
genni_96 (Normal User)
Pro
Messaggi: 108
Iscritto: 04/06/2010
|
ma io vorrei farlo via software, senza modificare l'arduino.
Ultima modifica effettuata da genni_96 il 06/11/2011 alle 10:22 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
genni_96 (Normal User)
Pro
Messaggi: 108
Iscritto: 04/06/2010
|
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
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
... 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à. |
|