Oppure

Loading
05/11/11 21:06
genni_96
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)


    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
    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 05/11/11 21:08
aaa
05/11/11 21:17
Alex
hai l'arduino uno?
aaa
05/11/11 21:30
nessuno
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à.
06/11/11 8:15
genni_96
Ho l'arduino 2009.
Lo so che non è possibile, ma non c'è un alto modo?
aaa
06/11/11 8:59
nessuno
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à.
06/11/11 9:18
genni_96
ma io vorrei farlo via software, senza modificare l'arduino.
Ultima modifica effettuata da genni_96 06/11/11 9:22
aaa
06/11/11 9:42
nessuno
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à.
06/11/11 9:57
genni_96
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
aaa