我想知道由于串口不能同时被两个程序使用,我的条码阅读器(硬件设备)如何通过串口将数据发送到我的电脑,而端口正在打开通过我的程序,并监控新来的数据。
答案 0 :(得分:1)
当然,只有一个进程可以打开端口。在它的另一端是设备驱动程序,它实际上与硬件对话。
该硬件是一种称为UART的通用异步接收发送器芯片。它连接到用于连接设备的电线。通过连接器上的RxD引脚输入的任何数据都会被UART转换为字节。器件驱动器响应芯片的中断,并将UART接收缓冲器中的字节复制到驱动器的接收缓冲器中。准备好被程序使用,它调用ReadFile()来清空缓冲区。今天,它通常是一个模拟串行端口的USB设备驱动程序。
串行端口通信非常原始,没有逻辑连接的概念,也没有商定的协议将接收的数据标记为属于特定的连接或消费者。没有类似于UDP或TCP,允许共享网络连接的协议。串行端口站点位于OSI模型的最底层,即物理层。因此,驱动程序不允许多个程序打开端口。这是先到先得。