Gráficas Agendas Fx-880/850 Conéctate al PC
 
 
 
   

 

  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:

  1. Encender ambos ordenadores y pasar al modo BASIC (modo 1).
  2. 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.
  3. 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".
  4. 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".
  5. 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).
  6. 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:

  1. Conectar al puerto serie del PC el cable serie RS-232 ). Arrancar el programa de terminal deseado en el PC.
  2. 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).

  3. 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".
  4. Con la FX 850P apagada realizar la conexión de esta con el circuito adaptador.
  5. Encender la FX 850P y pasar a modo BASIC (modo 1).
  6. En la FX 850P, pasar al área del programa a enviar.
  7. 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.
  8. 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.

  9. 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:

  1. Pasos 1 a 4 del procedimiento anterior.
  2. Pasar en la FX 850 al área de programa donde se desea cargar el archivo BASIC a recibir.
  3. 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.
  4. 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.
  5. 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.
  6. 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:
    Hola.
    Como estas?

    _

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.