Serial port 向串行端口发送固定电压

Serial port 向串行端口发送固定电压,serial-port,Serial Port,我需要监视门是否打开。我有一个传感器,只要车门关闭,它就会继续产生+5V直流电,但一旦车门打开,它就会下降到0V 我现在需要将传感器的输出线连接到PC的串行端口,并编写一个程序,持续轮询端口 我的想法是,各种串行io参数,如波特率等,在我的情况下并不重要。对于我读取的每个字节,我希望在门关闭时该值为255个逻辑1。否则,我将假定门已打开。这种逻辑有什么缺陷吗 我通过了。看来我只需要将电线连接到引脚2 RX。然而,为了让串行端口接收逻辑1,似乎电压需要介于-3V和-12V之间。由于我的传感器产生的

我需要监视门是否打开。我有一个传感器,只要车门关闭,它就会继续产生+5V直流电,但一旦车门打开,它就会下降到0V

我现在需要将传感器的输出线连接到PC的串行端口,并编写一个程序,持续轮询端口

我的想法是,各种串行io参数,如波特率等,在我的情况下并不重要。对于我读取的每个字节,我希望在门关闭时该值为255个逻辑1。否则,我将假定门已打开。这种逻辑有什么缺陷吗

我通过了。看来我只需要将电线连接到引脚2 RX。然而,为了让串行端口接收逻辑1,似乎电压需要介于-3V和-12V之间。由于我的传感器产生的电压为正,我想我会将传感器导线连接到引脚5 GND,而将引脚2连接到接地。实际上,我把电压倒过来了。这样行吗

如果这个逻辑有缺陷,我可能不得不买一个电压逆变器


最后,我被告知不应该将任何东西连接到主板串行端口上的引脚5。显然,它是硬连接到底盘接地。这是真的吗?注意。

如评论中所述,恒定高不会产生255字节。 我将通过将GND连接到GND并将+5 Vdc连接到CTS引脚来实现这一点,可以查询其高/低状态。
但这只是一个黑客,你真的应该使用一些微控制器。

你的帖子可能与本网站无关,因为这不是一个编程问题。你也做了很多错误的假设,误解了你所做的很少的研究。至少你需要一个RS232的转换器逻辑,而不是一个电压转换器。谢谢你的帮助。这个问题有两个部分。在编程过程中,我需要担心波特率等,还是继续一个字节接一个字节地读取?此外,当我所有的都是高电平或低电平时,为什么我需要一个转换器?RS-232使用帧,即每个字符的开始位和停止位。恒定电压永远不会检测为输入帧/字符。如果您可以生成适当的电压水平和极性,那么您可能可以在RxD输入上使用空闲标记状态与中断空间状态。RS-232将正负电压用于信号电平,通常为+12v和-12v。零电压不用作信号电平。这是RS-232的基本知识。谢谢你的帮助。原来我的问题有一个简单的解决方案。我需要做的就是将输入连接到DSR引脚。一个简单的ioctl调用可以获得DSR pin的状态。结果证明我的问题有一个简单的解决方案。-如果您注意到您提供的链接,您可能已经找到了答案。将+5 Vdc连接到CTS引脚。。。但这只是一个黑客…-这是一个行不通的黑客。RS-232范围低端的恒定电压不传递任何信息。@sawdust CTS不是数据管脚,它是一个只能查询其高/低状态的管脚,通常用于流量控制。这正是我要找的。非常感谢你的帮助。你帮我找对了方向。事实证明,我可以使用CTS或DSR引脚。一个简单的ioctl调用就可以获得所需的状态。问候。@IdanK-我完全了解调制解调器握手和流量控制引脚。但你只提到一个1电压状态。再一次:零伏不是一个有效的RS-232信号电平。我想把这归功于一个真正有效的黑客。是的,零电压不是有效的RS-232电压电平,但您会发现标准UART将+5V转换为CTS=On。而0V将转换为CTS=Off。这里是要点:您的UART需要给您一个打开或关闭的状态,没有未定义的。因此,任何低于CTS=On的+3V阈值的值通常被解释为CTS=Off,并且可以使用类似ioctl的函数进行评估。