0

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

PS我在做C#编程

4

3 回答 3

0

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

于 2012-07-23T04:52:45.090 回答
0

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

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

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

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

祝你好运

于 2012-07-23T04:54:15.713 回答
0

对的,这是可能的。我做的。

只需将电源的 -(减号,接地)连接到 RS232 RX 引脚(请参阅 Internet 中的任何位置以确定 RX 引脚的位置)。当您向该引脚提供电压(作为脉冲)时,您会在端口中看到一些无意义的操作。有一个 OnComm 事件显示为“接收”,但它没有开始位,没有停止位,完全没有意义。但是任何监视 RS232(COM 端口)的程序都会显示端口上发生了某些事情(例如 HEX 中的“00”或 ascii 中的“[00]”)。

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

创建一个 1ms 的计时器。

timer1.enabled = false ----如果 mscomm1.inbuffercount > 0 则别忘了禁用它 -----把你的代码放在这里 -----这意味着电压已经出现在 RX -----例如你可以编码'buttonpresscount=buttonpresscount+1' end if waitfortheactionend: if mscomm1.inbuffercount >0 then ----还有一些无意义的电压----等到脉冲结束,所以如果-- --不要忘记再次启用定时器 timer1.enabled = true

我希望这会有所帮助。赛达特 K.

于 2016-05-25T21:59:50.257 回答