SAVE NETI_0_Message$ ¿funcionará?

Subforo oficial del Sinclair QL: realiza aquí las consultas relativas a tu QL.

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Mié Mar 17, 2010 5:46 pm

Hola, el problema que tengo es que estoy intentando guardar una cadena en la red local QLan para que otro ql la cargue, pero me da error... ¿será porque no esta conectado a otro QL o por que el comoando esta mal? Lo que yo uso es:

LET message$ = ""
INPUT message$
SAVE NETO_0_message$

¿esta bien? Si no lo esta alguien me puede decir como hacerlo bien? ¿para cargarlo seria load neti_0_message$?, ¿o esta mal también?
AYUDA!!!!
:( :( :(
Última edición por jorgepil_97 el Sab Mar 20, 2010 10:55 am, editado 1 vez en total.

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Sab Mar 20, 2010 10:53 am

Hola, he estado preguntando y mi tio me ha dicho que tengo que guardarlo en la red como una cadena de bits o algo asi y que el mensaje acabe en un caracter determinado para que luego el programa lo pueda reconocer. ¿alguien me puede decir como hacerlo?. Y otra cosa, ¿los emuladores de QL tienen opción de "conectarse" entre si a pesar de que esten en un mismo ordenador?, me refiero a tener dos abiertos y que se puedan enviar cosas, es para probar mi programa ya que mi QL de verdad esta aislado...
Por favor, ayudadme!!!!

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por afx » Sab Mar 20, 2010 11:52 am

Hace algún tiempo escribí una entrada (http://sinclairqles.wordpress.com/2010/01/02/divirtiendonos-con-la-red-local-del-sinclair-ql/) en QBlog (http://sinclairqles.wordpress.com) sobre comunicaciones en red de QL's, pero en ese artículo hace uso de las facilidades del Toolkit II y no del uso de los puertos neti y neto de QDOS. (Tal vez debas empezar por leer ese artículo).

Justo ahora también estaba empezando a escribir una entrada para QBlog donde relato mis experiencias para transferir ficheros desde un QL real a un PC empleando el cable serie. Espero acabarlo pronto.

Para QDOS estándar (un QL sin TKII), si quieres ver un ejemplo concreto, en esta dirección http://programandala.net/es.programa.barcos_ql hay un pequeño programa de Marcos Cruz donde puedes verlo. Es el típico juego de barcos para dos QL's conectados en red. Mira en esa Web, hay unos cuantos programas interesantes para comunicación entre QL's y QL-Spectrum.

Las instrucciones que se utilizan en esos programas para enviar y recibir información por los puertos de red, tiene la forma siguiente:

LBYTES "neti_"&numEst$,buffer
SBYTES "neto_"&numEst$,buffer,numBytes

numEst$ es el número de estación, numBytes es el número de bytes que quieres transmitir y la variable buffer es una especie de puntero a una zona de memoria, que puedes definir así:

buffer = RESPR(100)

si quieres reservar 100 bytes para esa zona de comunicación.

Si la estación fuera la número 2 de la red, las instrucciones siguientes son equivalentes.

LBYTES neti_2,buffer
SBYTES neto_2,buffer,numBytes

Ojo, primero tendrás definir en cada estación cual es nu número con el comando NET (NET 1, NET 2, ...)

Luego con PEEK`s o POKE's puedes leer la información de esa zona.

Según los manuales de QDOS, también se pueden usar las instrucciones OPEN, CLOSE, INPUT, PRINT, ... estándar, pero yo nunca lo he probado.

Saludos.

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Dom Mar 21, 2010 11:13 am

Hola, muchas gracias
Ya lo he probado y he hecho el código, pero me da un error...
el código es este:

Código: Seleccionar todo

260 rep slmessage
270  let message$ = ""
280  input message$
290  print nick$;" > ";message$
300  let message = code(messaage$)
310  let nick = code(nick$)
320  let buffer = respr(100)
330  sbytes neto_0,buffer,nick
340  sbytes neto_0,buffer,message
350  pause 500
360  lbytes neto_0,buffer
370  print nick$;" > ";message$
380 end rep slmessage

Hay algo mal o es que me da error al no poder enviar??

EDITO: =================================================================================================================================
He estado haciendo pruebas y al enviar me dice: "en linea 360 parámetro incorrecto", por lo que en principio no tiene problemas al enviar, solo al cargar, cosa que me hace suponer aun más que sea causa de no estar conectado...
pero de todas maneras si veis algún error no os corteis :wink:

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por afx » Lun Mar 22, 2010 8:38 pm

Si, a simple vista tienes varios errores.
1) No debes usar el número de estación 0 (neto_0) ya que este número está reservado para hacer broadcast en la red. Debes usar como número de estación un número entre 1 y 64. Recuerda que previo a la ejecución del programa hay que definir en cada QL cual es su número de estación (con el comado NET).
2) No estás guardando nada en buffer (debes emplear peek y poke para poner y sacar bytes en zonas de memoria, en el código que pones, la zona a la que apunta buffer no tienes nada significativo).
3) Con la sentencia CODE no estás almacenando la longitud de la cadena (que creo que es lo que intentas hacer), el último parámetro la sentencia SBYTES, debe ser el número de bytes a volcar (CODE sólo devuelve el código ASCII del primer carácter de la cadena).
4) En la línea 360, con lbytes creo que deberías usar neti en lugar de neto.

Mira el código del programa que te comenté, allí hay ejemplos.

Si no, intenta emplear INPUT# y PRINT# a un canal abierto contra las conexiones de red, tal vez eso sea más simple.

Saludos.

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Lun Mar 22, 2010 9:06 pm

De acuerdo, mañana haré pruebas y te digo como me ha ido. ( y si que pretendía almacenar la longitud de la cadena :roll: )
Otra cosa ¿ Los emuladores de QL permiten "conectarse entre si"? (me refiero a tener dos emuladores abiertos a la vez y poder conectarlos).
Y ya por ultimo, ¿La red entre spectrum y QL funciona?, o paso de intentar conectarlos...
:mrgreen: Estoy muy verde en todo esto... :mrgreen:

(bueno, el miercoles xdxd)

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Mié Mar 24, 2010 8:26 pm

Hola, he estado probando pero me ha surgido un problema... ¿como puedo saber en que dirección de memoria se guarda la variable message$ para cargarla con sbytes y enviarla?
Gracias por todo.

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Vie Mar 26, 2010 8:58 pm

¿nadie lo sabe?...

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por afx » Vie Mar 26, 2010 10:18 pm

Algunas respuestas a tus preguntas.

La red entre QL y Spectrum debería funcionar. Algunos foreros lo han conseguido. Yo hace un par de meses me compre una Interface-1 para el Spectrum con el objetivo de probar la red con mis QL's, pero aún no he tenido tiempo de probarlo.

Sobre lo que preguntas de la dirección de memoria de message$ no lo se, pero se puede mover el contenido a una zona conocida de memoria que hayas reservado previamente. El ejemplo de código que te comenté en post anteriores muestra cómo hacerlo, en tu caso podría ser algo parecido a esto:

Código: Seleccionar todo

100  INPUT message$
110  buffer = respr(100)
120  FOR i=1 TO LEN(message$)
130    POKE buffer+i,CODE(message$(i))
140  END FOR i
150  SBYTES "neto_"&numEstacion$,buffer,LEN(message$)


Saludos.

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Sab Mar 27, 2010 11:01 am

¡¡Muchísimas gracias!!, por lo que dices del ejemplo que me enseñaste, yo es que entre tanto código me pierdo :D . Yo estoy esperando a que acabe una subasta de una interface 1 por ebay y empezaré a hacer pruebas.
Bueno, y ahora a programar!!

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Dom Mar 28, 2010 9:20 pm

Hola, ya he acabado el programa:
te lo paso en un mp para que o pruebes si quieres es que como yo solo tengo un ql...
muchs gracias por tu ayuda!!!

Avatar de Usuario
jorgepil_97
rst 0
Mensajes: 32
Registrado: Dom Feb 28, 2010 7:58 pm
Ubicación: Valencia

Re: SAVE NETI_0_Message$ ¿funcionará?

Mensaje por jorgepil_97 » Vie Abr 02, 2010 6:49 pm

:x :x :x :x :x :x :x :x :x :x no funcionaaaaaa :x :x :x :x :x :x :x :x :x
Puse el código que me diste y me dice: expresión erronea...
Intenté arreglarlo únicamente con poke buffer,code (message$)/len(message$)/message$ y en las tres formas me lo acepta lo que pasa es que el sbytes ya no me lo reconoce... ¿por que?
:x :x

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados