我正在使用linux环境并使用termios.h函数在UART上与其他ECU通信。(电子控制单元,将其视为UART另一端的计算机)。
另一个ECU已经设置了一个条件,即在最后一个请求的停止位(它可以包含一个请求中的多个帧)和新请求的起始位之间,应该有1ms的时间差。
所以基本上我想要在两次写入调用之间有1ms的时间,但我不希望在每次写入调用后都进行不必要的睡眠。
UART中是否有任何设置可以执行此操作?我添加了c ++,因为在通过c ++代码配置UART时,某些类型的标志需要下注设置。
我试过的是锁定互斥锁然后在写完成后启动计时器,当计时器到期时解锁该互斥锁。但我学到的是行为将是未定义的,因为当计时器到期时,它将是一个从未获得互斥锁的单独线程上的逻辑。
写完后我写入beacause后就无法进入睡眠状态,我需要通过返回函数来通知上述图层。