在socat通道中缓冲串行数据

问题描述

我正在尝试通过蓝牙和USB线连接ps4控制器来操作我的机器人,并使用socat通道进行数据传输。

2020/10/02 15:43:41 socat[10007] N PTY is /dev/pts/1
2020/10/02 15:43:41 socat[10007] N PTY is /dev/pts/2
2020/10/02 15:43:41 socat[10007] N starting data transfer loop with FDs [5,5] and [7,7]



with open("/dev/pts/2","rb",buffering=0) as term:
    
   while True:
       if: 
           if os.path.exists("/dev/input/js0"):   #bluetooth path
               pygame.joystick.init()
               controller.init()  
       else:
           str_buffer = read_socat(term)          #usb
           dec = json.loads(str_buffer)

我已将蓝牙放在第一位,然后将USB放在第二位。即 如果没有连接蓝牙,则它通过USB连接。当USB和蓝牙都连接时,只有蓝牙有效。

但是当蓝牙被连接并且我通过usb连接控制器时,存在数据缓冲(从控制器到电机的数据传输存在延迟)。仅对于第二优先级变量(在这种情况下为usb连接)会发生这种情况。 如果我将USB放在第一位,将蓝牙放在第二位,则蓝牙会发生数据缓冲。 第一个优先级变量总是很不错,但是第二个变量有很多数据滞后。 如何消除数据缓冲?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)