spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Informatica > P. in Visual Basic

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 27-10-2011, 10.24.35
Frengo75 Frengo75 non è collegato
Nuovo robottaro
 
Data registrazione: 10-02-2008
Residenza: Vicenza
Messaggi: 29
Potenza reputazione: 0
Frengo75 E' sulla buona strada
Predefinito Problema invio codici ASCII via seriale VB 2010 Express

Salve a tutti,

Sto cercando di usare la porta seriale con VB 2010 express, di cui sono un neofita, ed ho questo problema: se invio dei codici ASCII da 0 a 127 tutto ok, se provo quelli da 128 a 255 l'uscita (controllata con l'oscilloscopio) è sempre la stessa, come se si potessero usare solo i primi 7 bit, anche se nelle impostazioni della porta la lunghezza del dato è settata a 8 bit.
Vi posto la parte di codice che non va

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SendSerialData(Chr(192))
End Sub
Sub SendSerialData(ByVal data As String)
' Send strings to a serial port.
Using com1 As IO.Ports.SerialPort =
My.Computer.Ports.OpenSerialPort("COM1")
com1.Write(data)
End Using
End Sub

Grazie in anticipo
Rispondi citando
  #2  
Vecchio 27-10-2011, 12.04.27
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 53
Messaggi: 2,665
Potenza reputazione: 298
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Mi tengo ben lontano dal VB ma sei sicuro che passare un chr ad una funzione che si aspetta una String non faccia danni?
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #3  
Vecchio 27-10-2011, 17.39.59
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 48
Messaggi: 2,962
Potenza reputazione: 327
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito

Vb 8 e successivi 'vedono' male comunque l'utilizzo di chr.
Indipendentemente da questo la sintassi che usi per l'invio è errata.

Il comando write ha una sintassi specifica:

Cito dalle MSDN di Microsoft:

Citazione:
Write(Byte(), Int32, Int32) Scrive sulla porta un numero specificato di byte sulla porta seriale utilizzando i dati da un buffer di output a partire dall'offset specificato.
In sintesi e se non ho travisato, devi inviate numeri compresi tra 0 e 255: BYTE

Quindi la sintassi prevede comunque:

SerialPort.write(buffer,count,offset)

Dove:

SerialPort è ovviamente la tua porta seriale (che tu, almeno da quello che vedo, invochi dagli eventi. Puoi anche utilizzare l'oggetto che trovi nella casella degli strumenti)

buffer = sono i byte che devi inviare e NECESSARIAMENTE devi indicare

offset (integer) = dove parte l'array

count (integer) = e dove si conclude

Quindi (premettendo che tu abbia già impostato TUTTI i parametri della seriale) dovrebbe essere questo (non ho con me il mio pc e vado a memoria) prova questo:

Codice:
    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click

        Dim Valore(1) As Byte

        Valore(1) = Asc("192")
  
        Dim offset As Integer = 0
        Dim count As Integer = 1
        Try
            serialport.Write(Valore, offset, count)

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub
Ora devo andare a casa () leggiti bene anche la procedura try

Ciao

Antonio
Rispondi citando
  #4  
Vecchio 29-10-2011, 08.14.37
Frengo75 Frengo75 non è collegato
Nuovo robottaro
 
Data registrazione: 10-02-2008
Residenza: Vicenza
Messaggi: 29
Potenza reputazione: 0
Frengo75 E' sulla buona strada
Predefinito

Grazie ragazzi,

in realtà mi sto avventurando in una convesione di un programma
da QB45 a VB, nel codice sono presenti delle comunicazioni verso un micro mediante un protocollo che prevede dei caratteri speciali di inizio e fine stringa (AC e CA rispettivamente). In QB la cosa è semplice, si fa Print #1, Chr$(&HAC). Pensavo che anche VB "digerisse" bene questo comando, ma mi sbagliavo. Farò altre prove sulla base dei vostri suggerimenti!

Ciao

Franco
Rispondi citando
  #5  
Vecchio 29-10-2011, 14.41.48
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 48
Messaggi: 2,962
Potenza reputazione: 327
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito

Citazione:
In QB la cosa è semplice, si fa Print #1, Chr$(&HAC)
.... già.... Anche e fino a Visual Basic 6, tramite l'oggetto MScomm, facevi la stessa cosa. Con una riga inviavi un intero array, proprio con chr$! Il problema dopo diventava dimensionare il buffer. Ecco, per quello, se volevi fare una cosa fatta bene, ti servivano una ventina di righe(e sono buono...) per gestire gli errori! Comunque, sono d'accordo con Sergio: w il C! Adesso quando devo programmare uso sempre VB10 ma in C, o meglio, C++ (ad esclusione delle interfaccie grafiche). L'unico problema è impararlo in maniera decente!

In bocca al lupo!

Ciao

Antonio
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

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

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
VB 2010 Express: Come Salvare un Form come Modello Data-Max P. in Visual Basic 1 10-10-2012 14.32.06
Pic e invio temperatura i,robot Informatica 13 31-03-2010 22.03.26
Seriale in Visual Basic express 2008 gyppe P. in Visual Basic 4 27-12-2009 08.44.04
codici ir deusexmachina Elettronica 3 08-01-2008 17.56.53
Codici memorie MarkNitro Elettronica 1 26-06-2003 11.15.05


Tutti gli orari sono GMT. Adesso sono le: 16.57.49.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB