- Code: Select all Expand view
- *--------------------*
function Client()
oSocket := TSocket():New( nPort )
oSocket:bRead = { | oSocket | OnRead( oSocket ) } // oSocket:GetData() } //
// Never use a MsgInfo() here because it hangs Windows!!!
oSocket:bConnect = { || OnConnected() }
oSocket:bClose = { || MsgInfo( "Server has closed!" ) }
oSocket:Connect( cSvrIP ) // use the server IP address here
return nil
*-------------------*
Function OnConnected
local n := 0
local AddChr
local StartAck2, EndAck, EndTrnOk
lRun := !lRun
if !empty(PMSChkPBX)
// save to logfile()
// SaveLog( 'PMS : '+PMSSTrnMsn )
if SendData( PMSSTrnMsn ) > 0
if !empty(PMSAcknow)
StartAck2 := ''
WaitPeriod(5000) // Loop for 5 seconds
do while (StartAck2 <> PMSAcknow) .and. WaitPeriod() // Wait for PMS Acknowledge Chr
StartAck2 := oSocket:OnRead() // read Chr from comm port
if right(StartAck2,len(PMSSTrnMsn)) = PMSSTrnMsn
StartAck2 := right(StartAck2,len(PMSSTrnMsn))
exit
end
if StartAck2 = PMSETrnMsn
exit
end
end
end
AddChr := BCC(PMSChkPBX)
do while n <= 2
SendData( PMSChkPBX+AddChr )
// SaveLog( 'PMS : '+PMSChkPBX+AddChr )
// oSocket:SendData( PMSChkPBX+AddChr )
MsgWait('Please wait for connection : '+str(n+1,2),,1)
if lConnect
exit
end
n++
end
// if not reply for 3 times, END Socket()
if n > 2
oSocket:End()
end
EndAck := ''
EndTrnOk := .t.
if !empty(PMSAcknow)
EndTrnOk := .f.
WaitPeriod(nDelay)
do while (EndAck <> PMSAcknow) .and. WaitPeriod()
EndAck := oSocket:OnRead() // read Chr from IP
end
if (EndAck = PMSAcknow) // .or. (right(EndThai,len(PMSAcknow)) = PMSAcknow) // PMS Acknowledge for End of Text
EndTrnOk := .T.
end
if EndTrnOk // Start send End Trn
if !empty( PMSETrnMsn )
SendData( PMSETrnMsn )
end
end
end
end
// PABX Respond
if EndTrnOk
StartAck2 := ''
WaitPeriod(3000) // Loop for 5 seconds
do while (right(StartAck2,len(PMSSTrnMsn)) <> PMSSTrnMsn) .and. WaitPeriod() // Wait for PMS Acknowledge Chr
StartAck2 := oSocket:OnRead() // read Chr from comm port
end
if StartAck2 = PMSSTrnMsn
if SendData( PMSAcknow ) > 0 // Send Acknowledge Chr
PABXText := PMSAcknow
end
// wait for Data Link Recovery L70070
StartAck2 := ''
WaitPeriod(3000) // Loop for 5 seconds
do while left(right(StartAck2,2),1) <> Chr(3) .and. WaitPeriod() // Wait for PMS Acknowledge Chr
StartAck2 := oSocket:OnRead() // read Chr from comm port
// if ChrIn = Chr(3) .and. 'L1450' $ StartAck2
if StartAck2=STX+SA+UA+'L70070 '+ETX
exit
end
end
if subs(StartAck2,1,8) == subs(PMSChkPBX,1,8)
SendData( PMSAcknow ) > 0 // Send Acknowledge Chr
// wait for EOT
StartAck2 := ''
WaitPeriod(3000) // Loop for 5 seconds
do while (StartAck2 <> PMSETrnMsn) .and. WaitPeriod() // Wait for PMS Acknowledge Chr
StartAck2 := oSocket:OnRead() // read Chr from comm port
end
end
end
end
end
if 'L1450' $ PABXText
else
PABXText := ''
end
end
lRun := !lRun
return nil
// (MEMVAR->lRun := .T., oWnd:SetMsg("Connected!") )
*-------------------------*
function OnRead( oSocket )
local cAnswer := oSocket:GetData()
if !empty(cAnswer)
SaveLog( 'NEC: '+cAnswer )
end
return cAnswer
Any help will be appreicate.
Regards,
Dutch