[英]RS232 Serial Pin Read in C in Linux
我有没有可能从COM端口的引脚读取值? Linux下的任何C解决方案都表示赞赏!
我很确定,你不能读/写UART的引脚。 即使在硬件级别,您也必须读/写整个字节。没有位访问或读/写引脚访问。 在接收/发送UART缓冲区中读/写字节。
无论哪种方式,您都不能直接访问缓冲区,代表您的Linux驱动程序将完成这项工作。 您只需在应用程序中使用驱动程序,使用UART,UART提供的linux驱动程序,标准API,如open(),read(),write(),ioctl(),通过它们与UART进行交互设备。
如果您想使用驱动程序,以及此领域的新手,最好的起点将是本书。
这个问题的确切答案取决于所讨论的精确硬件。 我知道我工作的一段代码,基于接收字母'a'作为比特率的指示,它将轮询RX引脚以检测0和1之间的转换以检测比特的“宽度”,然后它将计算串行端口的正确时钟速率,并配置串行端口以匹配另一端的比特率。
“PC”型硬件解决方案将无法读取RX / TX引脚。 在其他硬件中,有可能这样做。 许多嵌入式系统允许将各种引脚配置为输入,输出或“具有功能”(在我们的例子中,RX,TX,CTS,RTS等) - 例如,您可以将RX引脚配置为输入,从而阅读它的状态。 当然,普通的串口驱动程序可能会将这些引脚设置为“有一个功能”[或者期望在内核启动之前运行引导代码以这种方式配置它]。 因此,您必须在自己的某些内核代码中重新配置引脚,最有可能。 请注意,这可能会导致驱动程序对实际串行端口产生意外的副作用 - 当它尝试对串行端口执行操作并且“无法按预期工作”时可能会“烦恼”,因为它“错误配置”。
几乎可以肯定通过IOCTL调用读取(和/或写入)控制引脚的状态,例如CTS,RTS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.