Conectar/Desconectar via FW

Conectar/Desconectar via FW

Postby daniel_halon » Mon May 19, 2008 8: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
daniel_halon
 
Posts: 41
Joined: Tue May 13, 2008 1:53 am
Location: Porto Alegre - Brazil

Re: Conectar/Desconectar via FW

Postby Vikthor » Mon May 19, 2008 9: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
User avatar
Vikthor
 
Posts: 271
Joined: Fri Oct 07, 2005 5:20 am
Location: México

Postby daniel_halon » 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:
Code: Select all  Expand view
// 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
daniel_halon
 
Posts: 41
Joined: Tue May 13, 2008 1:53 am
Location: Porto Alegre - Brazil

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby daniel_halon » Tue May 20, 2008 3: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
daniel_halon
 
Posts: 41
Joined: Tue May 13, 2008 1:53 am
Location: Porto Alegre - Brazil

Postby daniel_halon » Thu May 22, 2008 1: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
// *******************************************************************
Code: Select all  Expand view
#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
daniel_halon
 
Posts: 41
Joined: Tue May 13, 2008 1:53 am
Location: Porto Alegre - Brazil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 53 guests