|
|

|
Datos acerca del puerto serie de la calculadora, de
como comunicarse entre 2 calcs, sobre el puerto serie del PC, y
como usar comandos para comunicarse entre la calc y el PC use mi
cable interfaz para esta operación.
|
Haga click aquí
|
|
Como conectarse a una grabadora de Cassette, comunicarse
calculadora PC por el puerto paralelo y como ampliar la memoria
de su calculadora |
Haga click aquí
|
Tomada
de la página de Francisco
A. Candelas
COMUNICACIONES
CON EL COMPUTADOR DE BOLSILLO CASIO FX 850P / 880P.
1. Introducción.
Los ordenadores de bolsillo
FX 850P (hasta 40K RAM) y FX 880P (hasta 64K de RAM) pueden enviar y recibir
datos del exterior a través de dos puertos estándar: un
puerto serie duplex (envío y recepción simultánea)
asíncrono RS-232 y un puerto paralelo de salida a impresora.
El fabricante vende una unidad
(FA-6) que se conecta al ordenador a través de un pequeño
conector de 30 pines situado en un lateral de esta, y que suministra los
puertos serie RS-232 y paralelo mediante unos conectores estándar.
Sin embargo, la propia FX 850P incorpora en su interior el hardware y
software para manejar esos puertos, y a estos se puede acceder a través
del conector del lateral, sin emplear la unidad FA-6, tan solo usando
mi interface a un muy bajo precio vea aquí.
Los dos puertos estándar
hacen de este ordenador de bolsillo un equipo muy versatil, capaz de conectarse
con otros equipos como un PC, al igual que hacen otras agendas y equipos
de bolsillo. Además su interprete BASIC incorpora suficientes instrucciones
para sacar todo el provecho de dischos puertos de forma sencilla.
El puerto más utilizado
es el serie, y con el se puede, por ejemplo, enviar programas o datos
del banco de datos desde la FX 850P a un ordenador personal. También
se puede cargar programas o datos almacenados en un ordenador personal
en la FX 850P. Con ello podemos editar los programas en un editor de textos
del PC, lo que resulta normalmente más comodo, o mantener bibliotecas
o copias de seguridad de de programas y datos. Además se puede
utilizar el puerto para otro tipo de comunicaciones dentro de los programas
BASIC. Otra posible opción más sencilla es conectar dos
ordenadores de bolsillo directamente para intercambiar datos o programas.
2. Conector de periféricos.
PIN |
FUNCION |
TIPO |
Puerto |
1 |
Vcc |
Aliment. |
- |
3 |
CD |
Entrada |
RS-232 |
5 |
- |
- |
- |
7 |
- |
- |
- |
9 |
RxD |
Entrada |
RS-232 |
11 |
STB |
Salida |
Paralelo |
13 |
RTS |
Salida |
RS-232 |
15 |
PWR ON |
Salida |
- |
17 |
D4 |
Salida |
Paralelo |
19 |
D5 |
Salida |
Paralelo |
21 |
D6 |
Salida |
Paralelo |
23 |
D7 |
Salida |
Paralelo |
25 |
AD1 |
Salida |
- |
27 |
OE |
Salida |
- |
29 |
CS |
Salida |
Paralelo |
|
PIN |
FUNCION |
TIPO |
Puerto |
2 |
Dsr |
Entrada |
RS-232 |
4 |
CTS |
Salida |
RS-232 |
6 |
BUSY |
Entrada |
Paralelo |
8 |
- |
- |
- |
10 |
Init |
Salida |
Paralelo |
12 |
DSR |
Salida |
RS-232 |
14 |
TxD |
Salida |
RS-232 |
16 |
D3 |
Salida |
Paralelo |
18 |
D2 |
Salida |
Paralelo |
20 |
D1 |
Salida |
Paralelo |
22 |
D0 |
Salida |
Paralelo |
24 |
AD0 |
Salida |
- |
26 |
AD2 |
Salida |
- |
28 |
RD/WE |
Salida |
Paralelo |
30 |
GND |
Aliment. |
- |
|
- Todas las señales
emplean niveles TTL en lógica positiva, es decir, 5V para el
'1' y 0V para el '0'.
- La señal Vcc corresponde
a la alimentación de la FX 850P, y no debe utilizarse para evitar
descargar las baterias de este.
- Cualquier conexión
debe hacerce con la FX 850P apagada, y siempre debería verificarse
antes de encender la unidad que se utilizan los pines correctos.
3. Conexión serie
entre dos FX 850P.
Esta conexión resulta
muy sencilla, ya que no se requiere convertir niveles de tensión.
Para una transmisión básica con tres hilos se debe seguir
este esquema.
4.
Instrucciones de la FX 850P relativas al puerto serie.
Lo primero a conocer es el
llamado descriptor de archivo. Este es una cadena de caracteres
que identifica un archivo, dispositivo o puerto y o otros parámetros
necesarios y esta compuesto de tres partes:
- Nombre de dispositivo.
Identifica al tipo de dispositivo al que se accede. Puede ser CAS0:,
CAS1: o COM0:. Las dos primeros permiten acceder a ficheros
grabados en cinta. El que tiene interés ahora es el tercero,
COM0:, que identifica al puerto serie.
- Parámetros.
Cadena que contiene los valores de ciertos parámetros requeridos
por el dispositivo. Para el puerto serie (COM0:) se emplea una cadena
formada por 9 valores separados por comas que definen el formato de
transmisión asícrona RS-232 empleado. Estos son:
PARAMETRO |
POSIBLES
VALORES |
FUNCION |
Velocidad |
1, 2, 3, 4, 5, 6 |
Velocidad de transmisión
en bits por segundo (bps). 1 se refiere a 150bps, 2 a 300bps, 3
a 600bps, 4 a 1200bps, 5 a 2400bps y 6 a 4800bps. |
Paridad |
N, E, O |
Detección de
error por paridad. N si no se usa detección, E para paridad
par y O para paridad impar. Al emplear detección la FX 850
genera un error de paridad (PO error, cod 31) cuando detecta erroes
en la recepción. |
Bits por carácter |
7, 8 |
Número de bits
en cada dato transmitido. Normalmente se emplean 8. |
Bits de paro |
1, 2 |
Número de bits
de paro o final tras el dato transmitido. Cuando se generan erores
con velocidades altas (4800) conviene emplear 2 bits. |
Usa CTS |
C, N |
Empleada si el dispositivo
en el otro extremo de la conexión requiere ser avisado antes
de tranmitir datos hacia la FX 850. Con C se activará la
línea para dar el aviso. Con N no se utiliza. |
Usa DSR |
D, N |
Cuando se emplea esta
opción (valor D) se requiere que la línea de entrada
DSR esté activa para poder enviar. |
Usa CD |
C, N |
Cuando se emplea (valor
C) se requiere que la línea de entrada CD se active
antes de recibir datos. |
Usa XOn/XOff |
B, N |
El protocolo XOn/XOff
sirve para controlar el flujo de datos. Durante la recepción,
cuando se satura el buffer (en la FX 850P es de 64 bytes) se envía
un carácter especial llamado XOff. El emisor parará
de enviar cuando reciba un XOff, y volverá a transmitir al
recibir un carácter XOn. Con la opción B se activa
el uso de este protocolo, lo que es conveniente al tranmitir programas
largos o grandes bloques de datos. |
Usa SI/SO |
S, N |
Cuando se emplean tramisiones
de 7 bits (ver valor de Bits por carácter), los datos con
valores superiores a 127 se pueden enviar precedidos de un carácter
especial llamado SO. Para volver a enviar datos menores de
128 se envía antes el carácter especial SI. Este modo
se activa con la opción S. |
Por ejemplo, la cadena "2,E,8,1,N,N,N,B,N"
representa que se va a utilizar una transmisión a 300bps (2) con
paridad par (E) de 8 bits por caracter (8) y con dos bits de paro (2),
empleando además el protocolo XOn/XOff (B). No se emplea ninguna
de las señales de control del puerto serie (N). Estos son realmente
los valores por defecto empleados por la FX 850P, es decir, con la omisión
de uno de los valores se tomará el valor correspondiente indicado.
Así, la cadena "6,N" representará una transmisión
a 4800bps sin paridad, siendo el resto de parámetros los mismos
de antes.
- Nombre de archivo.
Solo se requiere al trabajar con ficheros grabados en cinta, por lo
que no se hablará del ellos aquí.
Según lo anterior, se
puede hacer referencia a una trasmisión por el puerto serie mediante
una cadena de descriptor como "COM0:2,E,8,1,N,N,N,B,N".
Los comandos de la FX 850P
que posibilitan las comunicaciones por el puerto serie con lo siguientes:
- OPEN descriptor AS
#1. Se utiliza dentro de un programa para declarar que un archivo
o dispositivo, como puede ser el puerto serie, va a ser utilizado a
continuación.
- PRINT #1, expresión
{, ;} expresión... Se utiliza dentro de un programa y funciona
como el comando PRINT habitual, solo que escribe los datos en el archivo
abierto previamente con OPEN. En el caso del puerto serie, los datos
son enviados por las líneas de este. Cuando no se especifica
el punto y coma al final del PRINT, se envía la pareja de códigos
0Dh y 0Ah (retorno de carro y avance de línea).
- INPUT #1, variable,
variable... Se utiliza dentro de un programa y permite leer datos
de un archivo abierto con OPEN, de igual manera que el comando habitual
INPUT. Usado sobre el puerto serie permite leer los datos ya recibidos
y guardados en un buffer interno de la unidad.
- INPUT$ (expresión,
#1). Devuelve una cadena con el número de carácteres
especificado por expresión procedentes del archivo abierto
anteriormente con OPEN. Funciona como INPUT$(expresión) lo hace
sobre el teclado de la FX 850P.
- EOF (1). Permite
detectar el final de un archivo. La función devuelve 0 (FALSE)
mientras queden datos en un archivo o en el buffer donde se almacenan
los datos recibidos por el puerto serie, y -1 (TRUE) cuando se alcanza
el final del archivo o ya no quedan datos en el buffer de recepción.
- CLOSE. Concluye
la utilización del archivo declarado con OPEN dentro de un programa.
- LOAD descriptor.
Lee o recibe un programa desde un archivo o del puerto serie. Al recibir
el programa, éste se recibe como un archivo ASCII. El comando
debe ejecutarse manualmente dentro del modo BASIC.
- SAVE descriptor.
Escribe o envía un programa hacia un archivo o el puerto serie.
Al enviar por el puerto serie, se envía como un archivo ASCII.
El comando debe ejecutarse manualmente dentro del modo BASIC.
- LOAD# descriptor.
Igual que LOAD, pero para cargar o recibir el contenido del banco de
datos.
- SAVE# descriptor.
Igual que SAVE, pero para guardar o enviar el contenido del banco de
datos.
Para obtener más información
sobre los comandos anteriores se debería consultar el manual de usuario.
5. Intercambiar programas
y datos entre dos FX 850P.
A continuación se expone
la secuencia de acciones para enviar un programa de una FX 850P a otra:
- Encender ambos ordenadores
y pasar al modo BASIC (modo 1).
- En el ordenador origen
situarse en el área del programa que se desea enviar. En el ordenador
destino situarse en el área de programa donde se desea cargar
lo recibido.
- En el ordenador origen
introducir el comando SAVE "COM0:descriptor" donde descritor
es una cadena según lo descrito en el apartado 4 y pulsar EXE.
Por ejemplo SAVE "COM0:6,N,8,1,N,N,N,B,N".
- En el ordenador destino
introducir el comando LOAD "COM0:descriptor" y pulsar EXE. Por
ejemplo LOAD "COM0:6,N,8,1,N,N,N,B,N".
- Si en el ordenador destino
no acaba la ejecución del comando LOAD en unos segundos pulsar
BREAK (en este caso, se puede averiguar cuando finaliza la recepción
viendo si ha dejado de parpadear la pantalla del ordenador receptor,
ya que en las operaciones con los puertos el refresco de la pantalla
es peor).
- Comprobar que en el destino
se ha recibido el programa entero. Si no es así se debe probar
la transmisión con parámetros más restrictivos:
menor velocidad, 2 bits de parada...
Para intercambiar el contenido
del banco de datos se procede igual, pero empleando los comandos SAVE# descriptor
y LOAD# descriptor. En este caso no importa el área de programa
actual, aunque si es necesario estar en modo 1.
Normalmnete no resulta necesario
emplear los tres hilos del esquema del apartado 2. Puede bastar con dos:
la línea de refrencia o GND, y la línea de datos que va
del equipo origen al destino (TxD origen a RxD destino). Esto es así
porque ambos equipos emplean los mismos parámetros y tienen el
mismo tamaño de buffers internos, con lo que probablemente no se
requiera un control de flujo XOn/XOff (aunque se haya especificado -opción
B-) y en ese caso solo existe transmisión en el sentido de los
datos.
6. Guardar y cargar programas
desde un PC u otro ordenador personal.
Para intercambiar programas
BASIC entre la FX 850P y el ordenador personal se emplea una conexión
serie RS-232. .
Además, se requiere
disponer de un programa de terminal o consola en el PC, como puede ser
el Terminal de Windows 3.11 (que funciona bien con Windows 95) o el Hiperterminal
de Windows 95. Personalmente prefiero el primero, que es más simple
y fácil de configurar para actuar como terminal. El segundo está
más pensado para modems. Además se puede usar el programa para
transmitir datos por Windows 95, usando a la vez como editor el programa
CASIO.EXE en modo DOS como editor también el el que es posible ver los
caracteres de la calculadora habiendo instalado previamente la fuente
proporcionada junto al programa
Antes de ver los pasos a seguir
hay que tener claro que los programas BASIC de la FX 850P se transmiten
y reciben como archivos de texto ASCII, y en el ordenador personal también
se editarán y almacenaran como tales. La FX 850P emplea un juego
de carácteres variante del ASCII estándar, y todos los carácteres
alfanuméricos y los carácteres de control más importantes
coinciden con los empleados en un ordenador personal.
Sin embargo, la FX 850 también
tiene otros muchos caracteres propios (que normalmente ocupan posiciones
altas de la tabla), y al recibir y editar un archivo de texto con un programa
BASIC en el ordenador personal estos carácteres se verán
como otros distintos. En cualquier caso, si dichos carácteres no
se alteran, al enviar de nuevo el programa a la FX 850P, los carácteres
se verán correctamente en esta.
Para editar un nuevo programa
BASIC en el ordenador personal se debe utilizar un editor de textos simple,
como el Notepad de Windows, el Wordpad o Word guardando lo escrito como
texto simple, el Edit de MS-DOS, el editopr en DOS CASIO.EXE, o el editor
para Windows 95. En esos archivos de texto un programa se BASIC de la
FX 850P se escribe como siempre: una serie de lineas de comandos numeradas
y acabadas con un retorno de carrro. Es importante tener claro que toda
una misma linea de un programa debe estar estar en una misma linea del
archivo de texto, con un único retorno de carro al final. No hay
que olvidar el retorno de carro al final de la última linea, antes
del final del archivo.
En el archivo de texto con
el programa BASIC se pueden escribir carácteres propios de la FX
850P conociendo su código. Este código lo podemos determinar
con la funcion ASC("carácter") en la FX 850P, o mediante
una de las tablas que vienen al final del manual de usuario. Dichos carácteres
se escriben en el editor con el teclado numérrico; pulsando ALT
y teclenado el códido.
Para enviar un programa de
la FX 850P al ordenador personal hay que seguir estos pasos:
- Conectar al puerto serie
del PC el cable serie RS-232 ). Arrancar el programa de terminal deseado
en el PC.
- Configurar el programa
de terminal con los parámetros de comunicaciones deseados (puerto
serie del PC utilizado, velocidad, paridad, bits de parada y tipo de
control de flujo), como por ejemplo puerto COM2, 4800Bps, No paridad,
1 Bit de parada y control de flujo XOn XOff apartado 4).
En el Terminal deWindows 3.11
esto se hace en el menú "Configuración" opción "Comunicaciones...".
También conviene asegurarse de que está activada la opción
"TTY genérico" dentro de "Emulación de la terminal..." dentro de
"Configuración".
En el Hiperterminal esto se
puede hacer en los diálogos que aparecen tras ejecutar el programa,
o en la opción "Propiedades-Número de teléfono-Configurar"
del menú de "Archivo".
Ambos programas dan opción
de guardar la configuración con la opción "Guardar" del
menú "Archivo".
- Con la FX 850P apagada
realizar la conexión de esta con el circuito adaptador.
- Encender la FX 850P y
pasar a modo BASIC (modo 1).
- En la FX 850P, pasar al
área del programa a enviar.
- Introducir el comando
SAVE descriptor (ver apartado 4) en la FX 850 y pulsar EXE. El
descriptor debe especificar los mismos parámetros que los indicados
al programa de terminal del PC. Siguiendo con el ejemplo, teclerar
SAVE "COM0:6,N,8,1,N,N,N,B,N" y pulsar EXE.
- En la pantalla del programa
de terminal del PC debe aparecer el texto del programa. Si se está
trabajando en Windows (con el Terminal o el Hiperterminal) se podrá
seleccionar y copiar ese texto al Portapapeles para luego pegarlo dentro
del editor de texto (por ejmplo Notepad) para editarlo o guardarlo.
Otra opción mejor es
escoger la opción de "recibir archivo de texto" del programa de
terminal, y dar un nombre de archivo en donde guardar el programa recibido.
Esto debe realizarse antes del paso 5. En el Terminal de Windows 3.11
esto se hace en el menú "Transferencias" en la opción "Recibir
archivo de texto " .
Con el programa BASIC en un archivo
del PC ya se puede hacer una una copia de seguridad en disco, editar el
programa, imprimirlo...
Para realizar el proceso inverso,
enviar un programa del ordenador personal a la FX 850P hay que seguir
estos pasos:
- Pasos 1 a 4 del procedimiento
anterior.
- Pasar en la FX 850 al
área de programa donde se desea cargar el archivo BASIC a recibir.
- Introducir el comando
LOAD descriptor (ver apartado 4) en la FX 850 y pulsar EXE. El
descriptor debe especificar los mismos parámetros que los indicados
al programa de terminal del PC. Siguiendo con el ejemplo, teclerar
LOAD "COM0:6,N,8,1,N,N,N,B,N" y pulsar EXE.
- En la opción para
enviar archivo de texto del programa de rerminal del PC (en el Terminal
de Windows 3.11 esto está menú "Transferencias" en la
opción "Enviar archivo de texto") especificar el archivo con
el programa BASIC a enviar y proceder.
- Si la FX 850 no acaba
la ejecución del comando LOAD en unos segundos pulsar BREAK (se
puede averiguar cuando finaliza la recepción viendo si ha dejado
de parpadear la pantalla de la FX 850P, ya que en las operaciones con
los puertos el refresco de la pantalla es peor). No hay que pulsar BREAK
muy pronto, ya que se puede cortar la carga del programa antes de su
final.
- Comprobar que en la FX
850P se ha recibido el programa entero. Si no es así se debe
probar la transmisión con parámetros más restrictivos:
menor velocidad, 2 bits de parada...
También se puede enviar
y recibir el contenido completo del banco de datos de la FX 850P con los
procedimientos anteriores, solo que utilizando los comandos LOAD#
y SAVE#. Los datos del banco de datos se envían y reciben
también como ficheros de texto ASCII, con un registro del banco de
datos (línea) por cada línea del archivo separada por un retorno.
7. Usando el puerto serie
desde BASIC en la FX 850P.
Se pueden crear programas
que usen el puerto serie para enviar o recibir datos. Para ello están
disponibles los comandos comentados en el apartado 4.
Una forma sencilla de enviar
datos puede ser la mostrada en este programa de ejemplo:
10 CLEAR
20 RESTORE 100
30 desc$="COM0:6,N,8,1,N,N,N,B,N"
40 OPEN desc$ AS #1
50 READ dato$
60 IF dato$="$" THEN 90
70 PRINT #1,a$
80 GOTO 50
90 PRINT #1
95 CLOSE: END
100 "Hola.","Como estas?","$"
El programa enviaría los
datos como varias líneas de texto separadas por retornos de carro
y avance de línea, más un retorno y avance de línea
final. Si comunicasemos el ordenador FX 850P con un PC que tubiese un programa
de terminal configurado con los mismos parámetros especifcados en
el descriptor desc$, en la pantalla del PC aparecería el texto
siguiente:
Un programa para una FX 850 que
fuese capaz de recibir y mostrar esas líneas podría ser como
este:
10 CLEAR:CLS
20 desc$="COM0:6,N,8,1,N,N,N,B,N"
30 OPEN desc$ AS #1
40 INPUT #1,a$
60 IF LEN(a$)=0 THEN 90
70 PRINT a$
80 GOTO 40
90 CLOSE
Para enviar datos numéricos
se pueden convertir estos a cadenas de carácteres formateadas, o
sacar mejor partido de las opciones de los comandos PRINT e INPUT (ver manual
de usuario).
El anterior programa de recepción
queda a la espera de recibir datos. Pero se puede crear un programa que
reciba datos si los hay, a la vez que realiza otras operaciones. Por ejemplo:
10 CLEAR
20 desc$="COM0:6,N,8,1,N,N,N,B,N"
30 OPEN desc$ AS #1
40 buf$=""
50 IF EOF(1) THEN 90
60 a$=INPUT(1,#1)
65 IF ASC(a$)=13 OR ASC(a$)=10 THEN 200
70 buf$=buf$+a$
80 GOTO 50
90 PRINT buf$;
100 'Otras operaciones
190 GOTO 40
200 CLOSE
Este programa lee los carácteres
recibidos uno a uno, y si la transmisión es lo suficientemente lenta
(por ejemplo los carácteres están siendo introducidos por
teclado en un terminal en el otro extremo) el bucle de recepción
del programa (lineas 50 a 80) saltará a la línea 100 cuando
se vacíe el buffer de recepción interno de la FX 850P. En
las líneas 100 y sucesivas se pueden realizar otras tareas cortas,
tras las cuales se regresa de nuevo al bucle de recepción. El programa
acaba al recibir un final de línea.
Francisco A. Candelas Herías.
|
|