Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 08-abr-2005, 13:39   #1 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Pasar de Gwbasic a Visual basic

Hola:
No encuentro por ningún lado la forma de hacer esto (Gwbasic) en visual basic.

Código PHP:
10 CLS:OPEN "com1:9600,n,8,1" FOR RANDOM AS #1
30 A=128:PUERTO=3:GOSUB 10000:REM prepara 8255 para todo salidas
34 
FOR DIRECCION=1 TO 255
35 
PRINT DIRECCION
36 
FOR DATO=255 TO 0 STEP-5
40 PUERTO
=1:A=DATO
50 GOSUB 10000
90 PUERTO
=0:A=DIRECCION
100 GOSUB 10000
110 PUERTO
=0:A=0
120 GOSUB 10000
130 NEXT DATO
140 NEXT DIRECCION
200 GOTO 34
10000 BS
=AND 240
10010 BI
=AND 15
10020 
PRINT #1,CHR$(BS+12);
10030 PRINT #1,CHR$(BS);
10040 PRINT #1,CHR$(BS+12);
10050 PRINT #1,CHR$((BI*16)+12);
10060 PRINT #1,CHR$(BI*16);
10065 PRINT #1,CHR$((BI*16)+12);
10069 PRINT #1,CHR$(12+PUERTO);
10070 PRINT #1,CHR$(4+PUERTO);
10071 PRINT #1,CHR$(12+PUERTO);
10072 IF PUERTO=2 THEN PRINT #1,CHR$(8+PUERTO);:PRINT #1,CHR$(12+PUERTO);
10080 RETURN 
Alguien es capaz de pasarmelo o decirme donde hay un manual para manejar el puerto rs232 ??

Gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
eeeee está desconectado   Responder Citando
Antiguo 09-abr-2005, 03:37   #2 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
No puedes hacerlo directamente: No puedes abrir puertos del sistema (XP supongo), aún menos, porque los tiene protegidos. Debes usar alguna librería externa que haga el trabajo por ti.

Con GWBasic era posible porque MS-DOS sí lo permitía.
MaxExtreme está desconectado   Responder Citando
Antiguo 09-abr-2005, 05:12   #3 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Parece que con visual 6 se puede con el componente MSComm, pero no se nada de visual
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
eeeee está desconectado   Responder Citando
Antiguo 09-abr-2005, 05:21   #4 (permalink)
Eternal Idol está en el buen camino
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.060
En un S.O. de 32 bits como Windows, el acceso a hardware directo no esta permitido en el ring 3 (aplicaciones de usuario), solo se permite en el ring 0 (drivers, kernel).

Lo que podes hacer, y es la manera logica de trabajar en Windows, es utilizar la API del S.O. para abrir el puerto, configurarlo e intercambiar informacion. Todo esto lo podes hacer con las funciones CreateFile, ReadFile, WriteFile y un par mas para configurar el puerto.

Aca esta todo lo que tenes que usar:
http://msdn.microsoft.com/library/en..._resources.asp
Eternal Idol está desconectado   Responder Citando
Antiguo 16-abr-2005, 15:55   #5 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Bueno ya esta funcionando con el componente Mscomm que trae el vb 6.0
para sacar datos lo hago asi:

MSComm1.Output = Chr$(lo que sea)

y para recibir asi:

Buffer = MSComm1.Input (poniendo primero a Buffer como string)

Funciona bien, pero al recibir los datos da error de llamada a procedimiento o argumento no valido si intento visualizar el dato asi:

Label1.Caption = Asc(Buffer)
Por ejemplo el dato recibido es ÿ que equivale a 255, si le digo que me muestre su valor con asc(buffer) da ese error, pero en cambio poniendo manual
Label1.Caption = Asc("ÿ") da como resultado 255
el valor que da la cadena buferr si la leo con label1.caption = buffer es ÿ sin las comillas.

Alguien me puede decir a que se debe esto o como le podria añadir las comillas aparte ?

gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
eeeee está desconectado   Responder Citando
Antiguo 23-abr-2005, 15:33   #6 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Nadie sabe decirme como darle valores a lo recogido por MSComm1.Input ??
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
eeeee está desconectado   Responder Citando
Antiguo 23-abr-2005, 16:44   #7 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Vaya sandeces...

Dim a As String
a = "x"
f(a)

es lo mismo que

f("x")

¿Qué crees, que es problema de comillas?

El problema que tienes es que usas Asc(...), cuando es para un caracter, no para una cadena.

Una variable String es un puntero a una zona de memoria donde empiezan los caracteres. Y otra es un caracter a secas... Supongo que el problema es ese. Intentas convertir lo que recibes (una String) en una función que pide un sólo caracter. Por eso te dice: "Argumento no válido".
MaxExtreme está desconectado   Responder Citando
Antiguo 24-abr-2005, 01:29   #8 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
No creo nada, es más, no se nada de visual basic, esto es de un programa que maneja una tarjeta por el rs232,(ambos hechos por mi) antes lo hice con gwbasic y ahora quiero hacerlo con visual.
En gwbasic era asi: dato$=input$(1,#2): dato=asc(dato$)
El 2 es el puerto com que utiliza la tarjeta.

Solo necesito sacar el valor de buffer en Buffer = MSComm1.Input o mejor dicho el primer caracter de la cadena que llegue a Buffer.

Si alguien lo sabe y qyuiere decirlo que lo diga, por muchas pistas que me den no lo voy a pillar porque no entiendo nada de vb

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com

Última edición por eeeee; 24-abr-2005 a las 01:37.
eeeee está desconectado   Responder Citando
Antiguo 24-abr-2005, 04:38   #9 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Si quieres recoger el primer caracter de la cadena, obtenle con las funciones que existen para ello... Left(cadena,1)

En cualquier caso, he probado Asc(cadena) y recoge ella misma el primer caracter, así que ahí no debería estar el problema.
MaxExtreme está desconectado   Responder Citando
Antiguo 24-abr-2005, 08:39   #10 (permalink)
eeeee ha deshabilitado el karma
 
Avatar de eeeee
 
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Bien, antes de profundizar en el programa estoy haciendo pruebas para ver si funcionan las entradas y salidas.
Así empieza siempre:

Dim InBuffer As String
MSComm1.PortOpen = True
InBuffer = MSComm1.Input

De esta forma da error llamada a procedimiento o argumento no valido
Label1.caption = Asc(InBuffer)

Asi tambien da el mismo error
Label1.caption = Asc(left(InBuffer,1))

De esta forma es la única manera que lee el caracter de la cadena, pero si le quito el bucle for .... next sigue dando el mismo error
For i = 1 To Len(InBuffer)
Label1.Caption = Asc(Mid(InBuffer, i, 1)) 'tambien lo lee con Asc(Left(InBuffer, 1))
next i

(Nota) La cadena InBuffer sólo tiene un caracter
He probado a ponerle Asc(Mid(InBuffer, 1, 1)) y no funciona, sólo con el bucle.

Hay alguna explicación ?

Gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
eeeee está desconectado   Responder Citando
Antiguo 24-abr-2005, 10:47   #11 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Pues si InBuffer tiene sólo 1 caracter, el for solo pasa una vez como i=1. Por lo tanto, hacer el for o hacer esto es lo mismo

Asc(Left(InBuffer,1))

Prueba a revisar que información te está llegando... Mira a ver si es algo sobre el Unicode, etc.
MaxExtreme está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:06.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93