FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Conectar/Desconectar via FW
Posts: 41
Joined: Tue May 13, 2008 01:53 AM
Conectar/Desconectar via FW
Posted: Mon May 19, 2008 08:32 PM

Buenas tardes amigos,

Tengo un cliente que me solicito un programa con el cual pueda controlar diversas máquinas, por ejemplo:

A determinada hora un horno industrial deverá prenderse solo y a determinada hora apagarse, tambien deve tener Buttons para poder cambiar el estado a cualquier momento ON/OFF

Un ejemplo de esto son las impresoras fiscales que con un comando que le enviamos podemos abrir el cajon del dinero. (via serial)

Mi pregunta es si desde FWH puedo controlar la salida de la impresora(LPT1) o por salida serial para producir cambios de estados logicos, 0volts o 5 Volts, luego con un circuito acciono un rele que irá comandar determinada maquina.

Desde ya agradezcos las respuestas o ejemplos que pudan darme.

Daniel

Buenos Aires - Argentina - Viviendo en Porto Alegre - RS - Brasil
daniel_halon@portobakers.com.br
FW 2.7- xHarbour 0.99.71 - PellesC
Posts: 298
Joined: Fri Oct 07, 2005 05:20 AM
Re: Conectar/Desconectar via FW
Posted: Mon May 19, 2008 09:36 PM
Yo hago algo parecido usando Sockets
Quiza por ahi puedas comenzar a hacer algo.

daniel_halon wrote:Buenas tardes amigos,

Tengo un cliente que me solicito un programa con el cual pueda controlar diversas máquinas, por ejemplo:

A determinada hora un horno industrial deverá prenderse solo y a determinada hora apagarse, tambien deve tener Buttons para poder cambiar el estado a cualquier momento ON/OFF

Un ejemplo de esto son las impresoras fiscales que con un comando que le enviamos podemos abrir el cajon del dinero. (via serial)

Mi pregunta es si desde FWH puedo controlar la salida de la impresora(LPT1) o por salida serial para producir cambios de estados logicos, 0volts o 5 Volts, luego con un circuito acciono un rele que irá comandar determinada maquina.

Desde ya agradezcos las respuestas o ejemplos que pudan darme.

Daniel
Vikthor
Posts: 41
Joined: Tue May 13, 2008 01:53 AM
Conectar/Desconectar via FW
Posted: Tue May 20, 2008 12:32 AM
Hola Vikthor,
Gracias por responder
Para ser sincero no tengo idea de lo que es Sockets, podrias explicarme o cederme algun ejemplo para poder comprenderlo?

En C se puede controlar interrupciones, pesquisando en la web encontre esto:
// Envia sinal para a Porta Paralela LPT1: 
#include <stdio.h>
#include <dos.h>
#define LPT1 0x378
int main(void)
{
unsigned char Valor=128; //Em binário: 10000000
while( Valor > 0 )
{ 
outportb(LPT1, Valor); // Envia para a Porta LPT1
printf("\n Pressione uma tecla para ascender o próximo LED...");
getch( ); 
Valor = Valor >> 1; //A cada passagem, o bit 1 é movido para à direita 
}
}


Sera que se puede transportar para FWH?
Buenos Aires - Argentina - Viviendo en Porto Alegre - RS - Brasil
daniel_halon@portobakers.com.br
FW 2.7- xHarbour 0.99.71 - PellesC
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Conectar/Desconectar via FW
Posted: Tue May 20, 2008 11:45 AM

Daniel,

Puedes usar las funciones de FWH:

OutPortByte( nPort, nByte )
OutPortWord( nPort, nValue32 )
Inport( nPort ) --> nValor
InportB( nPort ) --> nValorByte

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 41
Joined: Tue May 13, 2008 01:53 AM
Conectar/Desconectar via FW
Posted: Tue May 20, 2008 03:22 PM

Gracias Antonio, no sabia que FWH tenias estas opciones, voy a tentar

Daniel

Buenos Aires - Argentina - Viviendo en Porto Alegre - RS - Brasil
daniel_halon@portobakers.com.br
FW 2.7- xHarbour 0.99.71 - PellesC
Posts: 41
Joined: Tue May 13, 2008 01:53 AM
Conectar/Desconectar via FW
Posted: Thu May 22, 2008 01:27 AM
Hola Antonio,

Estoy tentando hacer de la manera que me sugeriste, pero al compilar
me da el siguiente error:


xLINK: error: Unresolved external symbol '_HB_FUN_OUTPORTBYTE'.
xLINK: error: Unresolved external symbol '_HB_FUN_INPORTBYTE'.
xLINK: fatal error: 2 unresolved external(s).

Ya tente adicionar la HBComm y nada
posto aqui el codigo:

// *******************************************************************
// Programa Ejercicio 1
//
// Programa para demostrar como un valor decimal en el rango desde 0 a 255
// se vuelca en el puerto LPTn en su forma binaria.
//
// Giancarlo J. Sabattino S.
// gsabattino@cantv.net
// Valencia - Venezuela
////hBorland :=LoadLibrary( "BWCC32.DLL" ),; // Load Borlands Custom Control DLL
// *******************************************************************
#include "Fivewin.Ch"


function Main()
local     oDlg      ,;
          aPorts    :=ScanInstaled(),;
          nPort     ,;
          oCbxPorts ,;
          cCbxPorts ,;
          aCbxPorts :={},;
          nCbxPorts :=1,;
          oGetValor ,;
          bGetValor :={ ||  oGetValor:VarPut( nValor ),;
                            oGetValor:Refresh() },;
          nValor    :=0,;
          oBmpB0    ,;
          lBmpB0    ,;
          oBmpB1    ,;
          lBmpB1    ,;
          oBmpB2    ,;
          lBmpB2    ,;
          oBmpB3    ,;
          lBmpB3    ,;
          oBmpB4    ,;
          lBmpB4    ,;
          oBmpB5    ,;
          lBmpB5    ,;
          oBmpB6    ,;
          lBmpB6    ,;
          oBmpB7    ,;
          lBmpB7    ,;
          cLedOn    :='Led_Verde',;
          cLedOff   :='Led_Verde_Off',;
          bLeds     :={ || OutPortByte( aPorts[ nCbxPorts, 3 ], nValor ),;
                           lBmpB0 :=lIsBit( nValor, 1 ),;
                           oBmpB0:SetBmp( iif( lBmpB0, cLedOn, cLedOff ) ),;
                           lBmpB1 :=lIsBit( nValor, 2 ),;
                           oBmpB1:SetBmp( iif( lBmpB1, cLedOn, cLedOff ) ),;
                           lBmpB2 :=lIsBit( nValor, 3 ),;
                           oBmpB2:SetBmp( iif( lBmpB2, cLedOn, cLedOff ) ),;
                           lBmpB3 :=lIsBit( nValor, 4 ),;
                           oBmpB3:SetBmp( iif( lBmpB3, cLedOn, cLedOff ) ),;
                           lBmpB4 :=lIsBit( nValor, 5 ),;
                           oBmpB4:SetBmp( iif( lBmpB4, cLedOn, cLedOff ) ),;
                           lBmpB5 :=lIsBit( nValor, 6 ),;
                           oBmpB5:SetBmp( iif( lBmpB5, cLedOn, cLedOff ) ),;
                           lBmpB6 :=lIsBit( nValor, 7 ),;
                           oBmpB6:SetBmp( iif( lBmpB6, cLedOn, cLedOff ) ),;
                           lBmpB7 :=lIsBit( nValor, 8 ),;
                           oBmpB7:SetBmp( iif( lBmpB7, cLedOn, cLedOff ) ),;
                           oBmpB0:Refresh(),;
                           oBmpB1:Refresh(),;
                           oBmpB2:Refresh(),;
                           oBmpB3:Refresh(),;
                           oBmpB4:Refresh(),;
                           oBmpB5:Refresh(),;
                           oBmpB6:Refresh(),;
                           oBmpB7:Refresh() },;
          oButtEnd
  hLib      := LoadLib32("inpout32.dll", "BWCC32.DLL")
  Set Resources to "Ejemplo1.dll", "BWCC32.DLL"
if len( aPorts )>0

  for nPort:=1 to len( aPorts )
    aAdd( aCbxPorts, aPorts[ nPort, 1 ]+ '( '+aPorts[ nPort, 2 ]+' )' )
    OutPortByte( aPorts[ nPort, 3 ], 0 )
  next

  Define Dialog       oDlg Resource 'Ejemplo1'

  REDEFINE  COMBOBOX      oCbxPorts VAR cCbxPorts;
            ITEMS         aCbxPorts;
            ID            101 OF oDlg;
            ON CHANGE     ( iif(  nCbxPorts#oCbxPorts:nAt,;
                                  ( nCbxPorts:=oCbxPorts:nAt,;
                                    eval( bLeds ) ),;
                                  NIL ) )
  oCbxPorts:bGotFocus:=bLeds
  oCbxPorts:bLostFocus:={ || oGetValor:SetFocus() }

  REDEFINE  GET           oGetValor VAR nValor Picture '999 ';
            VALID         nValor>=0 .and. nValor<=255;
            SPINNER       ;
            ON CHANGE     ( iif(  nValor<0,;
                                  ( nValor:=255,;
                                    eval( bGetValor ) ),;
                                  iif(  nValor>255,;
                                        ( nValor:=0,;
                                          eval( bGetValor ) ),;
                                        NIL ) ),;
                            eval( bLeds ) );
            ID            111 of oDlg

  REDEFINE  BITMAP        oBmpB0    Id 201 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB1    Id 202 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB2    Id 203 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB3    Id 204 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB4    Id 205 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB5    Id 206 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB6    Id 207 of oDlg;
            ADJUST

  REDEFINE  BITMAP        oBmpB7    Id 208 of oDlg;
            ADJUST

  REDEFINE  BUTTON        oButtEnd  ID  21 of oDlg;
            ACTION        oDlg:End()

  ACTIVATE  DIALOG        oDlg;
            ON INIT       ( oCbxPorts:Select( nCbxPorts ),;
                            eval( bLeds ) )

else
  MsgAlert( 'No hay Adaptadores Paralelo'+CRLF+;
            'instalados en este equipo !!!', 'Error !!!' )
endif

freelibrary( hBorland )
DLL32 Function inportb(nPort AS _INT) ;
      AS _INT PASCAL FROM "Inp32" ;
      LIB "inpout32.dll"
DLL32 Function outportb(nPort AS _INT, nValor AS _INT) ;
      AS _INT PASCAL FROM "Out32" ;
      LIB "inpout32.dll"
return NIL

#include "Support.Prg"
Buenos Aires - Argentina - Viviendo en Porto Alegre - RS - Brasil
daniel_halon@portobakers.com.br
FW 2.7- xHarbour 0.99.71 - PellesC

Continue the discussion