if you want to use UART, I think you may try to use VISA. I’m using this.
pi4 can use 5 UART, but you shuld change the /boot/config.txt.
****config.txt, add the follow text.
#******PS: I just use uart2 and uart5, you can add what you want unless it doesn't exist.
the uart in GPIO
GPIO14 = TXD0 -> ttyAMA0
GPIO15 = RXD0 -> ttyAMA0
GPIO0 = TXD2 -> ttyAMA1
GPIO1 = RXD2 -> ttyAMA1
GPIO4 = TXD3 -> ttyAMA2
GPIO5 = RXD3 -> ttyAMA2
GPIO8 = TXD4 -> ttyAMA3
GPIO9 = RXD4 -> ttyAMA3
GPIO12 = TXD5 -> ttyAMA4
GPIO13 = RXD5 -> ttyAMA4
Here is something you need notice：
while you change the config.txt, the VISA name(format: ASRL<Number>::INSTR,Number from 0 to n-1,n is the max number of uart you used) is change ,too. And the Number is not equal with above ttyAMA<Number>. You can use VISA-Find Sourse to list the source.
Thank you DevinChan for your idea.
This is exactly what I did, I got rid of LINX and used visa in LV side and custom code in the arduino for this project.
Thanks to the contributors