Comunicar 2 terminales en una LAN (SOLUCIONADO)

Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby Armando » Mon Aug 31, 2015 9:31 pm

Amigos foreros:

Tengo el reto de comunicar 2 terminales (PC) en una LAN, me explico, necesito
que cuando en una terminal terminen de registrar un nuevo pedido se envíe un
mensaje (ALERT) a una terminal X avisando que ya hay un nuevo pedido.

Alguien que me tire una hebra para saber por donde jalar??

Saludos
Last edited by Armando on Fri Sep 04, 2015 9:44 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN

Postby wilsongamboa » Mon Aug 31, 2015 9:46 pm

Armando buenas tardes
SOLO una idea
Crear una tabla en modo comartico con campos como
id_term
nom_term
mensaje
usuario
Leido

indexada por medio de id_terminal
donde se graba la factura o pedido
abres esa tabla y grabas
un registro con la informacion del terminal donde debe ser leído el nombre de tu terminal escribes el mensaje y en el otro terminal lo abres en base al id_term y lo muestras y eliminas ese registro o lo marcas como leído

Bueno solo es una idea
saludos
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 595
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Comunicar 2 terminales en una LAN

Postby cnavarro » Mon Aug 31, 2015 10:15 pm

Armando wrote:Amigos foreros:

Tengo el reto de comunicar 2 terminales (PC) en una LAN, me explico, necesito
que cuando en una terminal terminen de registrar un nuevo pedido se envíe un
mensaje (ALERT) a una terminal X avisando que ya hay un nuevo pedido.

Alguien que me tire una hebra para saber por donde jalar??

Saludos


Antiguamente se utilizaba los comandos de Sistema Operativo net send y/o el comando msg
Tambien hay utilidades para esta funcionalidad, por ejemplo: http://www.zhornsoftware.co.uk/stickies/
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Comunicar 2 terminales en una LAN

Postby Armando » Mon Aug 31, 2015 10:41 pm

Amigos:

Wilson, gracias por la idea, aunque el problema que tengo es ¿Cómo enviar
el mensaje a la otra terminal?

Cristóbal:

También gracias por el tip, voy a leer más a detalle la idea que me aportas, puede ser!

Recuerdo que alguna vez alguien del foro publico el código para conectar/chatear de PC
a PC, pero ahora que lo necesito no lo encuentro :roll:

Alguien más con más ideas?
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN

Postby Armando » Tue Sep 01, 2015 12:57 am

Wilson:

Dándole vuelta a tu idea, con un pequeño cambio, puede ser la solución.

El cambio sería:

Crear un timer para que la opción del usuario receptor, cada x tiempo, "vea"
si hay algo nuevo en la tabla abra un dialogo con la información necesaria
permitiendo al usuario borrar el mensaje.

Creo que por ahí pueden ir los tiros. :)

Alguna otra idea?

Saludos al foro
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN

Postby armando.lagunas » Tue Sep 01, 2015 11:53 am

mi estimado:

una vez descargue esos ejemplos, los voy a buscar y si los encuentro los publico, eran del foro de clipper hace muchos años.

saludos.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Comunicar 2 terminales en una LAN

Postby karinha » Tue Sep 01, 2015 1:20 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Comunicar 2 terminales en una LAN

Postby Armando » Tue Sep 01, 2015 1:35 pm

Tocayo Lagunas:

Muchas gracias por la intención. Karinha ya puso el link.

Karinha:

Muchas gracias por el link, ahora tengo mas opciones.

Grandioso foro.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN

Postby Armando » Fri Sep 04, 2015 9:44 pm

Amigos:

Pues ya quedó resuelto el problema, la solución fue tomar
la idea de Wilson y con el Timer y algunos otros detalles ha
quedado resuelto mi problema.

Gracias a todos

Saludos foreros
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby wilsongamboa » Fri Sep 04, 2015 9:52 pm

Armando muy bien !!!
Si compartes algo de codigo se agradece
saludos
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 595
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby Armando » Fri Sep 04, 2015 11:03 pm

Wilson:

Que parte del código te interesa?, uso ADO!

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby wilsongamboa » Fri Sep 04, 2015 11:13 pm

La parte visual
y algo del proceso
gracias
Wilson
pd: Muy interesante seria crear una clase en base a tu codigo para separar componentes e ir generando una usable por todos, ya que por ejemplo yo trabajo con adsntx
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 595
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby Armando » Fri Sep 04, 2015 11:29 pm

Wilson y amigos del foro:

La idea es que cuando una PC términal registra una nueva orden de fabricación,
el área de fabricación reciba un aviso inmediatamente.

Siguiendo tu idea, cree una tabla donde se registra número de orden, fecha y
hora de la nueva orden de fabricación.

Code: Select all  Expand view  RUN

            // Agregamos la orden a los avisos
            cCmdSql := "INSERT INTO " +;
                                "Avisos " +;
                            "SET " +;
                                "Avi_Ord = " + STR(oOrd:ORD,7,0) + "," +;
                                "Avi_Rev = " + STR(oOrd:REV,2,0) + "," +;
                                "Avi_Usu = 'Jesus A'," +;
                                "Avi_Fde = '" + DTOS(DATE()) + "'," +;
                                "Avi_Hde = '" + TIME() + "'," +;
                                "Avi_Lei = " + STR(0,1,0)
 


En el PRG main() puse un Timer para que cada x tiempo, en mi caso 5 minutos "vea" si hay
nuevos registros en la tabla AVISOS

Code: Select all  Expand view  RUN

STATIC FUNCTION Tiempo()
    // 60,000 es igual a 1 minuto, se crea y se activa solo una vez
    DEFINE TIMER oTimer OF oWindow INTERVAL 10000 ACTION Revisar()

    oTimer:Activate()
RETURN(NIL)


FUNCTION Revisar()
    LOCAL oRsAvi
    LOCAL oDlg
    LOCAL aGets := ARRAY(03)
    LOCAL oSays
    LOCAL cSays
    LOCAL oFont1
    LOCAL oFont2

    LOCAL nDiaDif   := 0

    LOCAL oAceptar

    IF lVentana
    lVentana    := (.F.)
        oSays       := ARRAY(08)
        cSays       := ARRAY(08)

        TRY
            oRsAvi:=    TOleAuto():New("adodb.recordset")
        CATCH oError
            MsgStop( "No se ha podido crear el RECORDSET de MENSAJES !", oApp:cAplicacion)
            ShowError(oError)
            oRsAvi  :=  NIL
            RETURN(.F.)
        END

        oRsAvi:CursorLocation   := adUseClient
        oRsAvi:LockType         := adLockOptimistic
        oRsAvi:CursorType           := adOpenDynamic
        oRsAvi:Source               := "SELECT " +;
                                                "* " +;
                                            "FROM " +;
                                                "Avisos " +;
                                            "WHERE " +;
                                                "! AVI_LEI"

        oRsAvi:ActiveConnection(oApp:oCon)

        TRY
            oRsAvi:Open()
        CATCH oError
            MsgStop( "No se ha podido abrir el RECORDSET Mensajes !", oApp:cAplicacion)
            ShowError(oError)
            RETURN(.F.)
        END

        IF oRsAvi:BOF() .AND. oRsAvi:EOF()
            RETURN(.T.)
        ELSE
            oRsAvi:MoveFirst()
            DO WHILE ! oRsAvi:EOF()
                nDiaDif := ROUND(DATE() - oRsAvi:Fields("AVI_FDE"):Value,0)

                DO CASE
                    CASE nDiaDif == 0
                        cSays[01]   := "Hoy:"
                    CASE nDiaDif == 1
                        cSays[01]   := "Ayer:"
                    CASE nDiaDif == 2
                        cSays[01]   := "Antier:"
                    OTHER
                        cSays[01]   := "El día:"
                ENDCASE
                cSays[02]   := DATE2TXT(oRsAvi:Fields("AVI_FDE"):Value)
                cSays[03]   := "A las"
                cSays[04]   := TIME()
                cSays[05]   := "Se registró la nueva orden"
                cSays[06]   := TRANSFORM(oRsAvi:Fields("AVI_ORD"):Value,"@Z 9999999")
                cSays[07]   := "Rev:"
                cSays[08]   := TRANSFORM(oRsAvi:Fields("AVI_REV"):Value,"@ 99")

                DEFINE FONT oFont1 NAME "Arial" SIZE 0,-12
                DEFINE FONT oFont2 NAME "Arial" SIZE 0,-20 BOLD
                DEFINE DIALOG oDlg RESOURCE "SndMsg" OF oWindow COLORS CLR_WHITE,RGB(060,097,145)

                REDEFINE SAY oSays[01] VAR cSays[01] ID 101 OF oDlg FONT oFont1;
                        COLORS CLR_WHITE,RGB(060,097,145)
                REDEFINE SAY oSays[02] VAR cSays[02] ID 102 OF oDlg FONT oFont2;
                        COLORS CLR_WHITE,RGB(060,097,145)
                REDEFINE SAY oSays[03] VAR cSays[03] ID 103 OF oDlg FONT oFont1;
                        COLORS CLR_WHITE,RGB(060,097,145)
                REDEFINE SAY oSays[04] VAR cSays[04] ID 104 OF oDlg FONT oFont2;
                        COLORS CLR_WHITE,RGB(060,097,145)
                REDEFINE SAY oSays[05] VAR cSays[05] ID 105 OF oDlg FONT oFont1;
                        COLORS CLR_WHITE,RGB(060,097,145)

                    REDEFINE GET aGets[01] VAR oRsAvi:Fields("AVI_ORD"):Value ID 106 OF oDlg UPDATE;
                        WHEN (.T.) .AND. (.F.) FONT oFont2;
                        PICTURE "@K 999999"
                REDEFINE SAY oSays[07] VAR cSays[07] ID 107 OF oDlg FONT oFont1;
                        COLORS CLR_WHITE,RGB(060,097,145)

                    REDEFINE GET aGets[02] VAR oRsAvi:Fields("AVI_REV"):Value ID 108 OF oDlg UPDATE;
                        WHEN (.T.) .AND. (.F.) FONT oFont2;
                        PICTURE "@K 99"

                    REDEFINE BUTTON oAceptar ID 901 OF oDlg UPDATE;
                        ACTION (UpdAvi(oRsAvi),oDlg:END())

                ACTIVATE DIALOG oDlg ON INIT SetWindowPos( oDlg:hWnd, -1, 0, 0, 0, 0, 3 )
                oRsAvi:MoveNext()
            ENDDO
            lVentana    := (.T.)
        ENDIF
    ENDIF
RETURN(NIL)


/*
* --------------------------------------------------------------------------*
* --------------------------------------------------------------------------*
*/

FUNCTION UpdAvi(oRsAvi)
    LOCAL cCmdSql   := ""

    cCmdSql := "UPDATE " +;
                        "Avisos " +;
                    "SET " +;
                        "AVI_LEI = ! AVI_LEI,"+;
                        "AVI_FDL = '" + DTOS(DATE()) + "'," +;
                        "AVI_HDL = '" + TIME() + "' " +;
                    "WHERE " +;
                        "AVI_ORD = " + STR(oRsAvi:Fields("AVI_ORD"):Value,7,0) + " " +;
                    "AND " +;
                        "AVI_REV = " + STR(oRsAvi:Fields("AVI_REV"):Value,2,0)
    TRY
        oApp:oCon:Execute(cCmdSql)
    CATCH oError
        MsgInfo("No pude ejecutar el comando " + cCmdSql,oApp:cAplicacion)
        RETURN(.F.)
    END
RETURN(.T.)
 


Si hay registros nuevos son mostrados en un diálogo ON TOP y espera respuesta del usuario
del área de producción, cuando el usuario da clic sobre el botón ENTERADO se actualiza la
tabla con fecha y hora en que se dio clic. Es muy simple.

Esta es la imagen
[img]
http://postimg.org/image/6cegtrckp/[/img]
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Comunicar 2 terminales en una LAN (SOLUCIONADO)

Postby wilsongamboa » Sat Sep 05, 2015 1:32 am

Armando
Muchas gracias
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
 
Posts: 595
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 47 guests