
12-07-2006
|
|
Miembro
|
|
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Reputación: 22
|
|
|
Pasar de QBASIC A DELPHI
Hola amigos del foro, tengo que levantar la informacion que provee la balanza en mi computadora.
El codigo esta en qbasic. Les agradeceria si me pudieran dar una mano.
PROCESADOR DIGITAL DE PESO BC5400 TRANSMISION DE DATOS A COMPUTADORA
1 Cableado y especificaciones de transmisión:
Norma RS 232C
7 ---------------------- 5 GND Código ASCII
K3 2 ---------------------- 2 RxD COM Velocidad 9.600 baudios
3 ---------------------- 7 RTS (DB 9) Formato 1 start bit
7 data bits
BC 5400 Computadora 2 stop bits
(El cable se provee junto al indicador) Paridad impar
2 Transmisión a pedido:
La llave 1 de S1 debe ajustarse a la posición ON.
El mensaje transmitido será el siguiente:
LF , CR
"BRUTO xxxxxx kg" (xxxxxx : Peso indicado en el display del BC 5400)
LF , CR
"TARA 000000 kg"
LF , CR
"NETO xxxxxx kg"
LF , CR
Rutina de recepción de datos en lenguaje QBASIC:
OPEN "COM1:9600,O,7,2,CS,DS,CD" FOR INPUT AS #1
nn = 0
b$ = ""
cantidad = 0
inicio:
IF EOF(1) THEN GOTO Espera
A$ = INPUT$(1, 1)
b$ = b$ + A$
IF ASC(A$) = 13 THEN nn = nn + 1
IF nn < 4 THEN GOTO inicio
CLOSE 1
PRINT MID$(b$, 9, 6)
END
Espera:
cantidad = cantidad + 1
FOR esp = 1 TO 30000
IF EOF(1) = 0 THEN GOTO inicio
NEXT esp
IF cantidad = 3 THEN CLOSE 1: PRINT "0": END
GOTO inicio
NOTA: La instrucción OPEN "COM..., provoca que la línea RTS cambie de nivel lógico. Esto actúa como pedido de transmisión al cabezal, que enviará la información antes detallada.
Al finalizar la rutina, la instrucción CLOSE provoca que la línea RTS retorne a su nivel inicial.
ACLARACION: En procesadores con número de serie inferior al 82746000 la llave 1 de S1 se encuentra anulada, no interesando la posición en que se encuentra.
3 Transmisión continua:
La llave 1 de S1 debe ajustarse a la posición OFF
En esta condición el equipo transmite en forma permanente el valor del peso, más un caracter de control:
BOT, X , xxxxxx, CR
(02) (peso) (13)
X = Z Si el peso es cero
X = M Si el peso esta en movimiento
X = N Si el peso es negativo
X = P Si el peso es positivo y estable
Rutina de recepción de datos en lenguaje QBASIC:
OPEN "COM1:9600,O,7,2,CS,DS,CD" FOR INPUT AS #1
b$ = ""
inicio:
A$ = INPUT$(1, #1)
IF A$ <> CHR$(02) THEN GOTO inicio
lee:
A$ = INPUT$(1, #1)
IF A$ = CHR$(13) THEN GOTO final
b$ = b$ + A$
GOTO lee
final:
PRINT b$
CLOSE
END
El punto decimal es transmitido solamente si está presente en el display y en la posición que corresponda.
Desde ya muchisimas gracias.
|