Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Pasar de Gwbasic a Visual basic

Estas en el tema de Pasar de Gwbasic a Visual basic en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2005, 13:39
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 09/04/2005, 03:37
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
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.
  #3 (permalink)  
Antiguo 09/04/2005, 05:12
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #4 (permalink)  
Antiguo 09/04/2005, 05:21
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
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
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 16/04/2005, 15:55
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #6 (permalink)  
Antiguo 23/04/2005, 15:33
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Nadie sabe decirme como darle valores a lo recogido por MSComm1.Input ??
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #7 (permalink)  
Antiguo 23/04/2005, 16:44
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
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".
  #8 (permalink)  
Antiguo 24/04/2005, 01:29
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
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/04/2005 a las 01:37
  #9 (permalink)  
Antiguo 24/04/2005, 04:38
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
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.
  #10 (permalink)  
Antiguo 24/04/2005, 08:39
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
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
  #11 (permalink)  
Antiguo 24/04/2005, 10:47
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.