Newsgroup: it.comp.lang.visual-basic
Titolo: Comunicazione seriale.

Ciao a tutti,
la mia applicazione deve inviare dei dati e riceverne da un dispositivo
connesso sulla RS232 ad una velocità fissa di 57600 bps. Per far ciò non si
è utilizzato MSComm perchè nel momento in cui si aprono altri task e si
mandano in esecuzione altri programmi il Sistema operativo non riesce più a
mantenere tale velocità e la comunicazione perde dati. Per questo motivo
l'applicazione si avvale di moduli di classe con delle api che allocano una
parte di memoria e caricano i dati in ingresso e in uscita in opportuni
buffers.
Vorrei sapere:Secondo voi in Windows 2000 usando MSComm  si riesce a
mantenere tale velocità?Se si, perchè?Come potrei fare a capire se è in
grado di farlo?Da ciò dipende l'eventualità di modificare l'applicazione
utilizzando MSComm e semplificare di molto il codice anzichè usare le api.
Grazie,ciao
Ale.
P.S: aiutatemi: sono disperato!!!

Scusa se non ti do la risposta che ti aspettavi, ma non penso che ci sia
bisogno per forza delle API.
Sinceramente non capisco perchč il controllo MSComm non ti soddisfa. Hai
provato a settare i suoi parametri diversamente ? Con il controllo MSComm si
puň gestire una seriale direttamente o gestendo gli eventi su tale porta.
Hai preso in considerazione entrtambi i tipi di gestione ? Se dai qualche
dettaglio in piů su quello che deve fare il programma magari ti posso
aiutare meglio.
Ciao, Claudio.

 aiutare meglio.
ciao Claudio,
potresti darmi molti più dettagli sui 2 modi di gestire la porta di cui
parli?Considera che non sono un esperto di comunicazione e ogni tuo
suggerimento può essermi d'aiuto.
In particolare adesso sto tentando di testare l'MSComm tramite un
programmino in VB che manda e riceve dati sulla COM1.Su questa ho connesso
il cavo con i pin 2 e 3 cortocircuitati in modo da ricevere tutti i dati che
invio.Questo mi serve per testare se a 57600 il VB riesce a trasmettere e
ricevere dati  a questa velocità.
Il codice è il seguente:
Sub Form_Load()
 MSComm1.CommPort = 1
 MSComm1.Settings = "57600,n,8,1"
 On Error Resume Next
 MSComm1.PortOpen = True
 MSComm1.Output = "Ciao Ale!"
   If Err Then
      MsgBox "Impossibile aprire la Com" & MSComm1.CommPort & vbCrLf &
Error$
  End If
 On Error GoTo 0
 MSComm1.InputLen = 0
 Text1.Text = MSComm1.Input
 End Sub
Non capisco però perchè non riesco a visualizzare i caratteri sul controllo
textbox. Dove sto sbagliando?
Fammi sapere,grazie
Ale.

E' semplice, basta fare un copia e incolla dalla guida msdn ..... va bè
copialo da qui:
Private Sub MSComm1_OnComm ()
   Select Case MSComm1.CommEvent
   ' Gestisce ogni evento o errore inserendo
   ' del codice dopo ogni istruzione Case
   ' Errori
      Case comEventBreak      ' Ricevuto un segnale di
                              ' interruzione.
      Case comEventFrame      ' Errore di frame.
      Case comEventOverrun      ' Perdita di dati.
      Case comEventRxOver      ' Overflow buffer di
                              ' ricezione.
      Case comEventRxParity   ' Errore di parità.
      Case comEventTxFull      ' Buffer di trasmissione
                              ' pieno.
      Case comEventDCB         ' Errore imprevisto
                              ' durante il recupero di
                              ' DCB.
   ' Eventi
      Case comEvCD         ' Modifica della linea CD.
      Case comEvCTS         ' Modifica della linea CTS.
      Case comEvDSR         ' Modifica della linea DSR.
      Case comEvRing         ' Modifica dell'indicatore
                           ' del segnale telefonico.
      Case comEvReceive      ' Ricevuto il numero di
                           ' caratteri RThreshold.
      Case comEvSend         ' Il buffer di trasmissione
                           ' include il numero di
                           ' caratteri
                           ' specificato da
                           ' SThreshold.
      Case comEvEof         ' È stato trovato un
                           ' carattere EOF nel flusso
                           ' di input.
   End Select
End Sub
poi fai tutte le tue prove.