0

我正在使用编解码器并尝试轮询 RS232 串行引脚 1(CD 高/低)的状态。我认为我拥有的代码是正确的,但我在猜测自己,并希望有人可以确认或纠正我。

根据编解码器的数据表,当通话处于活动状态时,引脚 1 应为高电平。我怀疑我做错了什么,因为在通话中我得到了假(低)的回报。这是一个 Windows 窗体应用程序,我正在使用 System.IO.Ports

 private void button4_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }
            bool test = serialPort1.CDHolding;
              if (test == false)
              {
              MessageBox.Show("Pin low");
              }
              else
               {
                MessageBox.Show("Pin high");
               }
    }

还有一种简单的方法可以显示引脚上的实际电压吗?

4

2 回答 2

3

这里真的没有太多我们可以告诉你你还不知道的事情。是SerialPort.CDHolding “获取端口的载波检测线的状态。” 我将首先(以电子方式)验证引脚的状态,然后根据该属性告诉您的内容进行检查。我猜它告诉你正确的状态。

说到串口,我总是会仔细检查你的引脚;根据硬件和连接器的不同,它们可能非常不标准,而且很容易搞砸。

您询问是否显示引脚上的电压。你的意思是程序化?不,那是不可能的。那是数字输入线;一旦它到达 UART,它就是一个数字信号,你无法知道模拟电压。

就像一个额外的花絮一样,这个属性实际上只是一个调用 Win32 GetCommModemStatus函数的包装器,如果设置了第 7 位(十进制 128),则返回 true。

于 2012-06-25T22:23:34.977 回答
2

您可以改用 .PinChanged 事件吗?还是您只需要在按下按钮时进行轮询?

于 2012-06-25T22:25:31.563 回答