Ciao a tutti,
Ho sviluppato nella mia applicazione la comunicazione con un misuratore fiscale, apro un socket su questo e scrivo i vari comandi nel flusso. Ad ogni comando inviato devo però intercettare la risposta da questo per verificarne l'esito, cosa che ho gestito con i wait for.
Esempio di un comando
Fino a qui tutto OK. Il problema è che una volta ogni n scontrini, in maniera del tutto casuale, non si scatena il wait for. L'app arriva ad eseguire il "write" ma quando deve arrivare al wait for l'esecuzione sparisce non si sa dove. In poche parole esce dalla funzione.
Il comando arriva al misuratore e viene eseguito correttamente.
Pensando fosse un problema del misuratore, e che fosse questo a non scrivermi niente (non generando l'evento MioStream_newdata) sono riuscito a fare una gestione con un timer nel quale scateno "MioStream_newdata" manualmente con un callsub. Ho provato questa mia "soluzione" e funzionerebbe (nei casi in cui prevedo io "manualmente" a far si che il misuratore non mi restituisca niente).
Il problema è nei casi "reali", in cui il programma esce dalla funzione al wait for che si scatena mai.
Sapete dirmi da cosa può essere dovuto o come "aggirare" il problema?
Grazie
Ho sviluppato nella mia applicazione la comunicazione con un misuratore fiscale, apro un socket su questo e scrivo i vari comandi nel flusso. Ad ogni comando inviato devo però intercettare la risposta da questo per verificarne l'esito, cosa che ho gestito con i wait for.
Esempio di un comando
B4X:
MioStream.Write("<miocomando>")
Wait For (MioStream) MioStream_newdata(Buffer() As Byte)
Dim Text As String = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
'Text è l'esito ritornato dal misuratore
Fino a qui tutto OK. Il problema è che una volta ogni n scontrini, in maniera del tutto casuale, non si scatena il wait for. L'app arriva ad eseguire il "write" ma quando deve arrivare al wait for l'esecuzione sparisce non si sa dove. In poche parole esce dalla funzione.
Il comando arriva al misuratore e viene eseguito correttamente.
B4X:
MioStream.Write("<miocomando>")
Wait For (MioStream) MioStream_newdata(Buffer() As Byte)
'<--- Non passa mai di qui
Dim Text As String = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
Pensando fosse un problema del misuratore, e che fosse questo a non scrivermi niente (non generando l'evento MioStream_newdata) sono riuscito a fare una gestione con un timer nel quale scateno "MioStream_newdata" manualmente con un callsub. Ho provato questa mia "soluzione" e funzionerebbe (nei casi in cui prevedo io "manualmente" a far si che il misuratore non mi restituisca niente).
Il problema è nei casi "reali", in cui il programma esce dalla funzione al wait for che si scatena mai.
Sapete dirmi da cosa può essere dovuto o come "aggirare" il problema?
Grazie