Visual Basic - UNA DUDA MAS

Life is soft - evento anual de software empresarial
 
Vista:

UNA DUDA MAS

Publicado por Rubén (9 intervenciones) el 04/09/2001 20:10:52
Hola a todos, estoy realizando un programa de comunicación a través del puerto serie entre el PC y un microcontrolador. El microcontrolador envía un dato al puerto cada segundo.Yo quiero rescatar esos datos del puerto y verlos en un label, pasando antes por una operación matemática. Para hacer esto en visual he colocado un timer que lee del puerto cada segundo, así:
Private Sub Timer2_Timer( )
Dim num As Byte, volt As Single
If MSComm1.InBufferCount Then
num = Asc(MSComm1.Input)
volt = (num*50)/255
Label9.Caption = volt
Label10.Caption = num
End if
End Sub

Empieza a funcionar bien pero a los pocos segundos aparece el error:
Error'5' en tiempo de ejecución.
El argumento o la llamada al procedimiento no son válidos.
Se me para en la línea:
num= Asc(MSComm1.Input)
¿Qué estoy haciendo mal?.
Please, contestarme lo antes posible.

Gracias,Rubén
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:UNA DUDA MAS

Publicado por Leonardo (56 intervenciones) el 04/09/2001 21:11:59
Hola : el error puede estar en que, en algun momento el mscomm.input esta en 0 o "" y no puedes sacar un asc de un valor nulo o en cero, me entiendes.
Sino escribeme a mi email y te lo explico mejor, suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

UNA DUDA MAS

Publicado por rcarolo (1 intervención) el 14/05/2011 17:16:18
El error es porque tenés seteada la propiedad del comm inputmode ne binario eso ace que el valor devuel sea byte, y la funcion asc sol trabaja con string

si queres trabajar en binario tenes que aplicar esta funcion:

Private Function Byte2String(s As String) As String
Dim I As Integer
Dim b As String
Dim c As String

b = ""
For I = 1 To LenB(s)
c = Mid$(Calibrito, AscB(MidB(s, I, 1)) + 1, 1)
b = b & c
If AscB(c) > 0 Then mSensCount = mSensCount + 1
Next I

Byte2String = b

End Function


sino cambia el modo del comm a text y funcionara directamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar