如何将数据发送到程序连接的串口
How data is sent to a serial port which is being connected by a program
我想知道串口不能同时被两个程序使用,我的条形码reader(硬件设备)如何通过串口向我的电脑发送数据,当端口被我的程序打开,并监视新来的数据时。
当然,只有一个进程可以打开端口。在它的另一端是 设备驱动程序 ,它实际上与硬件对话。
那个硬件是一个叫做 UART 的芯片,通用异步接收发送器。它连接到您用来连接设备的电线。通过连接器上的 RxD 引脚传入的任何数据都会被 UART 转换为字节。设备驱动程序响应芯片的中断并将字节从 UART 的接收缓冲区复制到驱动程序的接收缓冲区。准备好被程序使用,它调用 ReadFile() 来清空缓冲区。今天通常是模拟串行端口的 USB 设备驱动程序。
串行端口通信非常原始,没有逻辑连接的概念,也没有商定的协议来标记接收到的数据属于特定连接或消费者。与 UDP 或 TCP 没有任何相似之处,后者是允许共享网络连接的协议。串行端口位于 OSI 模型的最底层,即物理层。因此,驱动程序不允许多个程序打开该端口。这是先到先得。
我想知道串口不能同时被两个程序使用,我的条形码reader(硬件设备)如何通过串口向我的电脑发送数据,当端口被我的程序打开,并监视新来的数据时。
当然,只有一个进程可以打开端口。在它的另一端是 设备驱动程序 ,它实际上与硬件对话。
那个硬件是一个叫做 UART 的芯片,通用异步接收发送器。它连接到您用来连接设备的电线。通过连接器上的 RxD 引脚传入的任何数据都会被 UART 转换为字节。设备驱动程序响应芯片的中断并将字节从 UART 的接收缓冲区复制到驱动程序的接收缓冲区。准备好被程序使用,它调用 ReadFile() 来清空缓冲区。今天通常是模拟串行端口的 USB 设备驱动程序。
串行端口通信非常原始,没有逻辑连接的概念,也没有商定的协议来标记接收到的数据属于特定连接或消费者。与 UDP 或 TCP 没有任何相似之处,后者是允许共享网络连接的协议。串行端口位于 OSI 模型的最底层,即物理层。因此,驱动程序不允许多个程序打开该端口。这是先到先得。