我正在使用编解码器,我正在尝试轮询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");
}
}
还有一种简单的方法来显示引脚上的实际电压吗?
答案 0 :(得分:3)
这里真的没什么可以告诉你的,你还不知道。是SerialPort.CDHolding“获取端口的载波检测线的状态。”我首先验证(电气)引脚的状态,然后检查该属性告诉你的内容。我猜这是告诉你正确的状态。
说到串口,我总会仔细检查你的引脚;取决于硬件和连接器,它们可能非常不标准,并且很容易搞砸。
您要求显示引脚上的电压。你的意思是编程吗?不,那是不可能的。那是一条数字输入线;一旦它击中UART,它就是一个数字信号,你无法知道模拟电压。
就像一个额外的花絮一样,这个属性实际上只是一个调用Win32 GetCommModemStatus函数的包装器,如果设置了第7位(十进制128),则返回true。
答案 1 :(得分:2)
您可以使用.PinChanged事件吗?或者您是否只需要按下按钮进行轮询?