rs232上的任何引脚都可用于检测电压作为输入

时间:2012-07-23 04:47:26

标签: c# serial-port

有没有办法可以使用rs232获得电压输入?我现在正在做的是我有2个连接到rs232使用gnd,tx和rx引脚进行通信。我也将DTR连接到开关,当按下开关时,我能够获得电压输出来驱动LED。我现在要做的是,当led指示灯亮起时,我会以某种方式获得输入并更改m编程中的一些内容。有可能吗?提前谢谢。

P.S。我在做C#编程

3 个答案:

答案 0 :(得分:0)

不直接。您的RS323端口使用始终为5伏的数字信号进行通信。您需要在电压源和RS232端口之间使用模数转换器(ADC)。查看sparkfun.com有很多选择。

答案 1 :(得分:0)

是的,有几个输入。首先,输入取决于RS232是DCE还是DTE。最初将此标准放在一起以将终端连接到调制解调器。 DCE是模型,DTE是终端。您将引脚1连接到1.因此Tx可以是接收器或发射器。

PC通常是DTE。考虑到这一点,这些信息现在可能更有意义:http://en.wikipedia.org/wiki/RS-232

电压标称值为+ - 7V。实际的典型范围为+ -3V至+ -15V。被警告负电压是逻辑1.

对于C#,您可以访问所有引脚。查看SerialPort类。

祝你好运

罗布

答案 2 :(得分:0)

是的,这是可能的。我做到了。

只需将能源的 - (负极,接地)连接到RS232 RX引脚(请参阅Internet中的任何位置以确定RX引脚的位置)。当您为此引脚提供电压(作为脉冲)时,您会在端口中看到一些无意义的操作。 OnComm活动出现了'接收'但它没有起始位,没有停止位,它完全没有意义。但是任何监控RS232(COM端口)的程序都会显示端口上发生的事情(例如,在HEX或' [00]'在ascii中)' 00#。 / p>

正如我所说它没有启动和停止位,它的电压不是RS232通信所需的平均电压,所以你必须用这样的子程序检测它(你不能用任何其他方式处理它):

创建一个1ms的计时器。

timer1.enabled = false  ----别忘了禁用它  if mscomm1.inbuffercount> 0然后   -----把你的代码放在这里   -----表示RX上出现电压   -----例如,您可以编码' buttonpresscount = buttonpresscount + 1'  万一 waitfortheactionend:  如果mscomm1.inbuffercount> 0则   ----还有一些毫无意义的电压   ----等到脉冲结束,所以   的DoEvents   转到waitfortheactionstop  万一  ----别忘了再次启用计时器  timer1.enabled = true

我希望这会有所帮助。 Sedat K。