今天修改了软件中的串口读写部分,放在安卓屏上测试串口功能,但是发现了一个奇怪的问题:

安卓屏上的串口是公头,

通过母母转换口接在两个公头上时,可以正常通信;

直接接在一个母头上时反而不能通信;

如下图:

串口TXD和RXD的线序导致不能通信的问题_开发


串口TXD和RXD的线序导致不能通信的问题_开发_02


串口TXD和RXD的线序导致不能通信的问题_软件_03


按理说,公头接上母头不就可以进行串口通信了吗?反复进行测试,也进行了多种对比,都是这样,也就是只能和那个带着母母转接头的公头通信,而无法直接和设备上的母头通信。百思不得其解。

最终,找了一位做电子电路的同事求助,一下子就解决了问题,豁然开朗。

原来是串口线序的问题:

先看原来的线序:

串口TXD和RXD的线序导致不能通信的问题_软件_04


原线序,能提供公头对公头(通过母母转换)的通信,那么公头对母头就不行。

所以,如果要实现公头对母头的通信,那么线序就要反过来,同一种线序,二者只能满足其一:

串口TXD和RXD的线序导致不能通信的问题_软件_05

TXD和RXD接线换了位置之后,就能直接和母头通信了。问题解决。


公头接母头就应该能正常通信啊”, 这是典型的外行问出来的问题。

一个串口的问题,把应用软件程序员折腾得够呛,但在电子工程师眼里却是小菜一碟。

总结:电子、硬件的问题,有其专业性,不是应用软件程序员一下子能理解的,需要专门学习和长期积累才能熟悉。