
|

21-03-2010, 11.58.28
|
 |
Administrator
|
|
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
|
|
Altro up:
Public Dato_Finale As Byte
......> Dato_Finale = Text1.text
pertanto userai questa variabile per leggere il valore di ritorno.
|

21-03-2010, 15.53.16
|
 |
Administrator
|
|
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
|
|
.... forse ci siamo
Ho aggiunto 2 timer (metti l'intervallo a 800 per il momento così vedi il risultato nella finestra Ricezione Integer). Ora, premendo invia, si attiva la procedura dell'evento oncomm inserito in ogni timer. Noterai che inserendo un nuovo valore all'interno di una o tutte le textbox, verrà restituito il nuovo valore nel text Ricezione Integer. A questo punto bisogna solo inserire una procedura if then o select case o else if (dipende da cosa si deve fare) che, nel caso sia inserito il valore di 254 (come mi hai detto) si avrà la reazione di cui hai bisogno. Provalo. I timer sono timer.2, timer3 e timer4.
Ciao
Codice:
Public dato_X As Byte
Public dato_Y As Byte
Public dato_Z As Byte
Public Dati_Ricevuti As String
Public Tutto As String
Private Sub btn_clear_Click()
txt_Rx.Text = ""
Text1.Text = ""
End Sub
Private Sub btn_Com_Click()
MSComm1.CommPort = txt_Com.Text
MSComm1.Settings = "115200,n,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub
Private Sub Command1_Click()
On Error GoTo Errori_Variabili
Timer2.Enabled = True
Errori_Variabili:
If Err.Number = 13 Then
MsgBox "Valori da 0 a 255 !", vbExclamation
End If
Err.Clear
End Sub
Private Sub Form_Load()
End Sub
Private Sub Timer2_Timer()
dato_X = txt_X.Text
MSComm1.Output = Chr$(dato_X)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer3.Enabled = True
Timer2.Enabled = False
End Sub
Private Sub Timer3_Timer()
dato_Y = txt_Y.Text
MSComm1.Output = Chr$(dato_Y)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer4.Enabled = True
Timer3.Enabled = False
End Sub
Private Sub Timer4_Timer()
dato_Z = txt_Z.Text
MSComm1.Output = Chr$(dato_Z)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer2.Enabled = True
Timer4.Enabled = False
End Sub
|

21-03-2010, 16.41.02
|
Robottaro senior
|
|
Data registrazione: 28-01-2010
Residenza: potenza
Età : 28
Messaggi: 50
Potenza reputazione: 43
|
|
Citazione:
Orginalmente inviato da Caronte
.... forse ci siamo
Ho aggiunto 2 timer (metti l'intervallo a 800 per il momento così vedi il risultato nella finestra Ricezione Integer). Ora, premendo invia, si attiva la procedura dell'evento oncomm inserito in ogni timer. Noterai che inserendo un nuovo valore all'interno di una o tutte le textbox, verrà restituito il nuovo valore nel text Ricezione Integer. A questo punto bisogna solo inserire una procedura if then o select case o else if (dipende da cosa si deve fare) che, nel caso sia inserito il valore di 254 (come mi hai detto) si avrà la reazione di cui hai bisogno. Provalo. I timer sono timer.2, timer3 e timer4.
Ciao
Codice:
Public dato_X As Byte
Public dato_Y As Byte
Public dato_Z As Byte
Public Dati_Ricevuti As String
Public Tutto As String
Private Sub btn_clear_Click()
txt_Rx.Text = ""
Text1.Text = ""
End Sub
Private Sub btn_Com_Click()
MSComm1.CommPort = txt_Com.Text
MSComm1.Settings = "115200,n,8,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub
Private Sub Command1_Click()
On Error GoTo Errori_Variabili
Timer2.Enabled = True
Errori_Variabili:
If Err.Number = 13 Then
MsgBox "Valori da 0 a 255 !", vbExclamation
End If
Err.Clear
End Sub
Private Sub Form_Load()
End Sub
Private Sub Timer2_Timer()
dato_X = txt_X.Text
MSComm1.Output = Chr$(dato_X)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer3.Enabled = True
Timer2.Enabled = False
End Sub
Private Sub Timer3_Timer()
dato_Y = txt_Y.Text
MSComm1.Output = Chr$(dato_Y)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer4.Enabled = True
Timer3.Enabled = False
End Sub
Private Sub Timer4_Timer()
dato_Z = txt_Z.Text
MSComm1.Output = Chr$(dato_Z)
Dim Rx$
Rx$ = MSComm1.Input
If Len(Rx$) Then
Tutto = txt_Rx.Text & Rx$
Text1.Text = Asc(Tutto)
End If
Timer2.Enabled = True
Timer4.Enabled = False
End Sub
|
uff... niente da fare... dopo le opportune impostazioni ( azzeramento dei timer al LOAD, inserimento di altri timer, seguendo sempre la stessa tipologia per l'invio dei segnali di sincronizzazione-255,253,.252,251-) la periferica non vuole proprio saperne di rispondere, unica azione notata :
nella textbox di ricezione esce il val 0 ..........
__________________
L'importante è non smettere di fare domande.
non esistodono domande stupide, esistono solo domande fatte BENE o fatte MALE...
|

21-03-2010, 17.38.25
|
 |
Administrator
|
|
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
|
|
Citazione:
nella textbox di ricezione esce il val 0 ..........
|
e invece può essere una bella notizia. Fammici riguardare.
dopo l'apertura della porta inserisci questo:
....
MSComm1.PortOpen = True
If MSComm1.DSRHolding = False Then
MsgBox "Periferica non pronta!"
MSComm1.PortOpen = False
End If
Dovremmo almeno capire se il Pic è pronto a comunicare. Anche perchè, tra i casi di uno 0 in ricezione, può esserci proprio l'assenza di comunicazione (le velocità sono settate tutte giuste, anche quelle di windows?).
Ciao
Antonio
P.s. Direi che è meglio che non quoti tutto il mio post sennò diventa lunghissimo....  se fossi in te toglierei quelle parti e metterei solo gli aggiornamenti sennò faccio fatica a seguire anch'io
Ultima modifica di Caronte : 21-03-2010 alle ore 19.31.22
|

21-03-2010, 22.58.19
|
Robottaro senior
|
|
Data registrazione: 28-01-2010
Residenza: potenza
Età : 28
Messaggi: 50
Potenza reputazione: 43
|
|
Citazione:
Orginalmente inviato da Caronte
....
MSComm1.PortOpen = True
If MSComm1.DSRHolding = False Then
MsgBox "Periferica non pronta!"
MSComm1.PortOpen = False
End If
Dovremmo almeno capire se il Pic è pronto a comunicare. Anche perchè, tra i casi di uno 0 in ricezione, può esserci proprio l'assenza di comunicazione (le velocità sono settate tutte giuste, anche quelle di windows?).
|
indovina un po?!?...
-- "Periferica non pronta!" --
sisi, le velocità sono quelle, sto usando lo standar della porta com baud rate 9600!!... anche la periferica è settata a questa velocità.... non capisco, sta a significare che vuole un altro po di ritardo?!... o cosa?!
aspetta un attimo, stai parlando di questo vero?!...
http://msdn.microsoft.com/en-us/libr...07(VS.60).aspx
ma la mia periferica non controlla anche questo segnale, sto utilizzando una comunicazione full duplex, al fine di azzerare l'handshake e gestirlo via software... cos hai in mente?!...
__________________
L'importante è non smettere di fare domande.
non esistodono domande stupide, esistono solo domande fatte BENE o fatte MALE...
Ultima modifica di luigi91 : 21-03-2010 alle ore 23.08.20
|

21-03-2010, 23.48.02
|
 |
Administrator
|
|
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
|
|
Citazione:
gestirlo via software... cos hai in mente?!...
|
ormai, a quest'ora 2 neuroni su 6..... comunque come ti dicevo, ho in mente di fare un passo per volta, intendo nel codice. L'intervallo non è importante, al momento, è importante farsi mandare indietro dal pic qualsiasi cosa, un carattere, un numero sbagliato, qualsiasi cosa ma togliere lo 0. Se non sbaglio il pic ha un firmware che hai programmato/implementato tu. Ti dico che ho fatto delle altre prove, anche con la Muin e il codice funziona. L'elettronica la diamo per scontata (avrai fatto le tue giuste prove), ma il firmware? Siamo certi che sia giusto? Attenzione, non sto mettendo in dubbio niente, ma, perlomeno io faccio così, cerco di andare per esclusione in questi casi, ricontrollando ogni parte. Pertanto abbiamo tre parti, tra loro condivise, hardware, firmware e software di controllo (cioè VB6). Non ho la competenza per mettere mani sul fuoco, ma il codice che è stato scritto, l'ultima versione, a me legge qualsiasi cosa. Uno zero in risposta effettivamente può anche essere un errore nella modalità di trasmissione. Da lì non si scappa, oncomm ti restituisce tutto quello che avviene sulla com e ribadisco a me ritorna indietro tutto. Una curiosità, quando fai le prove, attivi il codice prima o dopo aver acceso il pic? Ribadisco che non ci capisco niente di pic, ma vedo che sulla Muin, per implementare il firmware, bisogna prima tener premuto il tasto reset e rilasciarlo quando il bootloader sta iniziando la sua ricerca. Magari è una domanda stupida (occhio che il tuo motto dice: non esistodono domande stupide, esistono solo domande fatte BENE o fatte MALE...) ma il duo dispositivo con il pic ha un pulsante di reset? Altra domanda se ho ben capito: se tutto funzionasse, inviando il numero 254 lui ci dovrebbe rispondere 253, giusto?
Beh... spero che la notte ci porti consiglio perchè io sto andando a consigliarmi...
A domani
|

22-03-2010, 21.22.10
|
 |
Administrator
|
|
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
|
|
Orbene, prova a eseguire questo test, via seriale con il pic, e vediamo cosa ci risponde: http://www.settorezero.com/wordpress...serial-tester/
Ciao
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
|
|
Strumenti discussione |
|
Modalità visualizzazioe |
Modalità lineare
|
Regole di scrittura
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Il codice HTML è Disattivato
|
|
|
Tutti gli orari sono GMT. Adesso sono le: 17.50.56.
Realizzazione siti web Cobaltica Foligno
|

|