Pulse-Eight / libcec

USB CEC Adapter communication Library http://libcec.pulse-eight.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Please flush stdout of cec-client after you got the remote data

Cosmotan01 opened this issue · comments

Hi,
i have write a program in Lazarus on Rpi4, i start cec-client with TProcess and for longer cec-client output
almost 90% of my tv remote its working good .

Such cec-output like this works, and i can retrieve the pressed button :
TRAFFIC: [ 57918] >> 01:44:25
DEBUG: [ 57918] SetCurrentButton 5 (25) D:0ms cur:1c70850
DEBUG: [ 57918] key pressed: 5 (25) current(ff) duration(0)
DEBUG: [ 57918] Changed key 5 (25) D:0ms cur:ff
DEBUG: [ 57918] key pressed: 5 (25, 0)
DEBUG: [ 57918] CheckKeypressTimeout T:103999.584
DEBUG: [ 57918] Key 5: idle (duration:0) (25) timeout:-1280316024ms (rel:500,rep:0,prs:500,rel:0)

But this will not work (i thing because the stdout buffer wait for more data/strings):
TRAFFIC: [ 29624] >> 01:42:03
DEBUG: [ 29624] >> TV (0) -> Recorder 1 (1): deck control (42)

Can you add a parameter to cec-client that will force a stdout flush after no new data is coming from the remote, maybe like --flush-stdout=50 (ms) so if cec-client receive the second example and no new data is coming withing 50 ms, its flush the output buffer and TProcess will get the data.

I have write a little test program that sends either the first sample or the second sample to stdout , and i have the same behavior like with cec-client, i added a Flush(stdout); and then the second sample was working to.

In Bash both samples works good, but in Lazarus the 2nd is a problem.

Cheers

P.S.: I can send you the source of my lazarus program if needed.