Calculadoras Programables - Guardar datos en la calculadoras

<<>>
 
Vista:
sin imagen de perfil
Val: 15
Ha mantenido su posición en Calculadoras Programables (en relación al último mes)
Gráfica de Calculadoras Programables

Guardar datos en la calculadoras

Publicado por Meta (8 intervenciones) el 12/07/2020 12:27:43
Hola:

Desde el puerto serie/USB, quiero saber si en este calculadora se puede guardar datos como tramas de bytes en la calculadora.

img_main

Por ahora quiero comunicarlo con el Pc y lka calculadora, más adelante quiero comunicarlo desde calculadora a Arduino, que basicamente es lo mismo.

http://retrowiki.es/viewtopic.php?t=100053601

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 83
Oro
Ha mantenido su posición en Calculadoras Programables (en relación al último mes)
Gráfica de Calculadoras Programables

Guardar datos en la calculadoras

Publicado por foroplus (32 intervenciones) el 13/07/2020 15:57:42
Hola Meta. Un par de cosas sobre tu mensaje.
-¿Qué quieres decir con "tramas de bytes"?.
-En cuanto a la segunda parte de la conexión al Arduino, comentar que bueno, no es lo mismo. Si conectas la calculadora al PC, lo normal es hacerlo con el puerto USB, que aunque tenga protocolo USB 1.1 siempre será muchísimo más rápido que el el SERIE. Podrías hacerlo por puerto serie, pedo dado que la calculadora utiliza lógica electrónica TTL, necesitarás un conversor USB a Serie TTL, con lo que ya necesitas un aparato más. Podrías utilizar el Arduino para hacer esta función como se ve en el artículo del link que adjuntas, pero no tiene sentido pudiéndolo hacer con USB. Además necesitarías un pequeño programa en el Arduino para que te haga la pasarela de los pines TX y RX al puerto serie de la aplicación Arduino del PC.
Sí que le veo sentido a comunicar el Arduino directamente con la calculadora, para almacenar datos y gestionarlos con sensores u otras cosas, es decir, para desarrollos autónomos del ordenador.

En cualquier caso, si quieres los parámetros del puerto serie de la calculadora Casio que pones, son los siguientes:

Puerto serie 3 patillas
Método: Inicio-parada (asíncrona),
Half-dúplex
Velocidad de transmisión (BPS): 115200 bits/segundo (normal)
Velocidad reducida de 9600 bits/segundo
Velocidad 38400 bits/segundo con comandos Send38k/Receive38k

Ahora, OJO porque los parámetros de comunicación serie son diferentes dependiendo de la velocidad:.

<115200 bits/segundo>
Paridad: EVEN
Longitud de bit: 8 bits
Bit de parada:
Envío: 1 bit
Recepción: 1 bit
Paridad incluída (ninguna)1-bit
Control X ON/X OFF: Ninguno

<9600, 38400 bits/segundo>
Paridad: Ninguna
Longitud de bit: 8 bits
Bit de parada:
Envío: 3 bits
Recepción: 2 bits
Paridad incluída (ninguna) 1-bit
Control X ON/X OFF: Ninguno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha mantenido su posición en Calculadoras Programables (en relación al último mes)
Gráfica de Calculadoras Programables

Guardar datos en la calculadoras

Publicado por Meta (8 intervenciones) el 13/07/2020 19:27:24
Buenas:

Esas Calculadoras tienen el USB como dices y el puerto serie. En mi caso se puede conectar que es menos complicado el puerto serie al puerto serie virtual del PC en el cual se conecta Arduino UNO.

Antes lo comunicaba con un RS232 entre medio para la comunicación del puerto serie puro y duro del PC a la calculadora.

No te preocupes por ello.
Aquí lo que se basa es entender el protocolo de comunicación.

Aquí explica algo.

CALCULADORAS CASIO

PROTOCOLOS DE COMUNICACIONES para las series: FX9750G,FX9850G,FX9950G,CFX-9850GB PLUS,CFX-9950GB PLUS. (caso de enviar o recibir un datos de forma aislada, series anteriores a estas, no lo pueden hacer; solo mandan archivios).



Me encontre con una calculadora que presenta comunicacion serial en formato TTL, es de lo mejor. Las aplicaciones, una vez nos apropiemos de su protocolo, son infinitas.

Somos solo dos personas en internet que reportamos aplicaciones de estas caracteristicas:

Alberto Ricci Biti (EL DATALOGGER)

Gustavo Ramirez P. (UN-2000)

Puedes con esta aplicación convertir esta calculadora en una poderosa herramienta para aplicaciones de monitoreo, control y registro de datos, si la combinas con un hardware que pueda comunicarse con ella; sea un PC o una aplicación con microcontrolador.

Pronto publicare en este webb, una aplicación con el pic 16F84 para enviar y recibir datos del mundo real. Te remito a otro sitio con aplicaciones de esta calculadora en busca por alberto ricci bitti (no hay mas en internet que yo sepa, si lo encuestras por favor mandame un correo) Ademas hay muchos sitios de interes de casio para bajar progranas,te indicare como hacer tu cable serial y de mi pagina podras baja el programa FA-122 para transferir programas desde y hacia el PC. Yo usare esta aplicación para implementar un robot sobre la calculadora.

CUANDO SE EJECUTA LA INSTRUCCIÓN RECIVE ( variable ) SE DAN LOS SIGUENTES EVENTOS EN EL PUERTO DE LA CASIO

1 - la calculadora manda 15h

2 - el transmisor debe devolver un 13h

3 - la calculadora manda luego, un frame de 50 bytes (INICIO); donde el primer caracter es 3Ah y el ultimo es el checksum invertido.

de los 49 primeros caracteres (a modo de byte), el byte 12 es el valor que la calculadora le asigna a la variable que es su valor ASCII, el resto son caracteres de control y se deben respetar tal como aca se presentan.

4 - El transmisor debe mandar 06h de respuesta; es el ok o con 22h si hay errores.

5 - la calculadora responde con 06h; si no hay errores, pero si los hay ella manda un 22h, o un cero.

6 - El transmisor manda el FRAME DE RESPUESTA.

7 - La calculadora manda un 06h si no reporta errores, o un 22h si los reporta.

8 - Ahora el transmisor debe mandar los datos en el formato siguiente:(ACA SE MANDA EL FRAME DE DATOS)

a- basicamente aca se mandan 16 bytes (TAMAÑO DEL FRAME de Datos)repartidos asi:

-Los 5 primeros Bytes, los copia de la tabla-3

-luego, los que siguen son los datos en formato BCD, donde el nibble mas significativo del sexto byte es cero apartir de aca se coloca luego la mantiza del numero a transmitir; para esto se usan los bytes desde el seis hasta el trece; el byte numero catorce indica los signos de el dato que el protocolo de la calculadora debe representa asi::

Pone 50h cuando la mantiza y exponente son negativos

Pone 51h cuando solo la mantiza es negativa

Pone 01h cuando los dos son positivos

Pone 00h cuando solo el exponente es negativo

Si el exponente es positivo se representa en BCD; pero si es negativo se representa asi; 69h menos el valor (real) del exponente y este resultado es el valor que se debe enviar; este calculo lo realiza el transmisor.

La representacion tipica es asi:

Var = 3Ah-00h-01h-00h-01h-x1h-x2h-x3h-x4h-x5h-x6h-x7h-x8h-x9h-x10h-x11h-x12h-x13h-(Signos h)-(Exponenteh)-(CHECKSUM INVERTIDOh).

EL CHECKSUM INVERTIDO, se calcula asi; se suman todos los primeros 15 datos (frame de datos), le restamos 3Ah, luego efectuamos con el resultado anterior una XOR con FFh y luego le sumamos 01h y asi se calculan siempre el ultimo Byte en todos los frames; sean estos de 16Bytes como el de datos o como los de 50Bytes.

Done el primer carácter del numero representado se coloca apartir del segundo nibble del sexto Byte.

9 - La calculadora manda 06H si no reporta errores

10 - El transmisor envia el paquete final

Ejemplo:

Si se va a mandar los numeros 123456789. La calculadora los interpreta así 1.23456789 e + 8, Pero los representa así en hex: Apartir del sexto byte en el frame de datos es para los bytes entre el sexto hasta el cheksum es así:

3Ah,00h,01h,00h,01h,01h,23h,45h,67h, 89h, 00h, 00h, 00h, 01h, 08h, (CHEKSUM INVERTIDOh)

Nota: 01h antes del 08h indica que los dos son positivos mantisa y exponente.

Ejemplo: Si se va a mandar los números 5436, La calculadora los interpreta así 5.436 e + 3, Pero los representa así en hex:

Apartir del sexto byte en el frame de datos quedaria asi:

05h-43h-60h-00h-00h-00h-00h-00h-01h-03h-(CHEKSUM INVERTIDOh)

01h antes del 03h indica que los dos son positivos mantisa y exponente. El 03h indica el exponente

Ejemplo: Si se va a mandar los números -546.7896 e-4. La calculadora los interpreta así -5.46789 e -2, Pero los representa así en hex: apartir del sexto byte en el frame de datos es así: 05h-47h-67h- 89h-00h-00h-00h-00h-50h-67h-(CHEKSUM INVERTIDOh)

El 50h, indica que los dos son negativos .el 67h = 69h menos el valor del exponente (02h)

67h=69h - 02h

Segundo caso: la casio transmite un dato, instrucción SEND( variable )

1 - La calculadora envía el numero 15h

2 - El receptor debe enviar un 13h (ok)

3 - La calculadora envía un frame de inicio, con el mismo formato (es el mismo frame de respuesta del caso anterior), el bit doce es el valor de la variable en este frame, cambia un poco por que debe indicar que es de transmisión desde la calculadora, Y el ultimo es un cheksum.

4 - El receptor contesta con 06h si no reporta errores o responde con 22h o 00h si los hay.

5 - La calculadora envía el frame de datos (16 Bytes) es el mismo del caso Receive( ); la calculadora envía los datos apatir del sexto byte pero acá surge algo diferente, el valor del exponente para el caso negativo se calcula así: 9Ah - valor absoluto del exponente negativo = valor a enviar al dispositivo receptor. De resto, todo es igual.

6 - El receptor contesta con 06h si no reporta errores o 22h si los hay o con 00h.

7 - la calculadora envía el frame de fin, que es el mismo de la instrucción Receive( ).

FRAME DE RESPUESTA, INSTRUCCIÓN RECEIBE(A) o DE INICIO EN INSTRUCCIÓN SEND(A) donde antes A tiene un valor de: A=123456789

SEND(A) ; A es la Variable

3A, 56, 41, 4C, 00, 56, 4D, 00, 01, 00

01, 41, FF, FF, FF, FF, FF, FF, FF, 56

61, 72, 69, 61, 62, 6C, 65, 52, 0A, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, D0

D0 es el valor del cheksum invertido

41 = Chr$(A) codigo ascci de A (hex)

FRAME DE DATOS (A=123456789) o tambien asi, A=1.23456789 e+8

3A, 00, 01, 00, 01, 01, 23, 45, 67, 89

00, 00, 00, 01, 08, 9C

FRAME DE FINAL

3A, 45, 4E, 44, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, 56

( 45,4E,44 ) es E,N,D (END en formato ascci),56 es el cheksum invertido

FRAME DE INICIO (INSTRUCCIÓN RECEIBE(A)

3A, 52, 45, 51, 00, 56, 4D, FF, FF, FF

FF, 41, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, FF

FF, FF, FF, FF, FF, FF, FF, FF, FF, 5D

D0 cambia, si cambia 41 = Chr$(A); el nombre de la variable

5D es el cheksum invertido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar