Hola Lorenzo, lo hacia de este modo, con un visor lcd conectado el puerto com1..
..
VisorLCD(cProducto, cCosto)
..
//--------------------------------------------------------------------
Function VisorLCD(vLinea1,vLinea2,vModo)
local cDcb, nBytes, vCade
local nComm, nError, oComx, lVisorLcd, oPrn, cNumEst, vComx, cQCom
DEFAULT vLinea1 := "BIENVENIDOS A"
DEFAULT vLinea2 := _DELEN3(oApp:cMaster)
DEFAULT vModo := 0
Return .f.
vComx := "COM1"
vCade := Space(20)
vLinea1 := SubStr(vLinea1,1,20)
vLinea2 := SubStr(vLinea2,1,20)
If ( nCOMM := OpenComm(vComx,1024,128 )) <> 0
Return .f.
EndIf //MsgAlert(vLinea1+CRLF+vLinea2,vComx)
BuildCommDCB(vComx+":9600,n,8,1", @cDCB)
SetCommState( @cDCB )
FlushComm(nCOMM,1)
FlushComm(nCOMM,0)
WriteComm(nComm,Chr(12)) // inicializar
SysWait(oApp:nDelay) // oApp:nDelay = 1
DO CASE
CASE vModo = 0
WriteComm(nComm,Chr(27)+Chr(17))
CASE vModo = 1
WriteComm(nComm,Chr(27)+Chr(18))
CASE vModo = 2
WriteComm(nComm,Chr(27)+Chr(19))
ENDCASE
SysWait(oApp:nDelay)
WriteComm(nComm,Chr(27)+Chr(81)+Chr(65)+vLinea1+Chr(13))
SysWait(oApp:nDelay)
WriteComm(nComm,Chr(27)+Chr(81)+Chr(66)+vLinea2+Chr(13))
SysWait(oApp:nDelay)
CloseComm(nCOMM )
Return .t.