![]() |
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: Gracias |
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. |
Parece que con visual 6 se puede con el componente MSComm, pero no se nada de visual |
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 |
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 |
Nadie sabe decirme como darle valores a lo recogido por MSComm1.Input ?? |
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". |
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 |
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. |
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 ? :pensando: Gracias |
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. |
| La zona horaria es GMT -6. Ahora son las 10:44. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.