0

コーデックを使用していて、RS232シリアルピン1の状態(CDハイ/ロー)をポーリングしようとしています。私が持っているコードは正しいと思いますが、私は自分自身を推測していて、誰かが私を確認または修正できることを望んでいました。

コーデックのデータシートによると、コールがアクティブな場合、ピン1はHighである必要があります。通話中にfalse(low)が返されるため、何か間違ったことをしたのではないかと思います。これは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「ポートのCarrierDetectラインの状態を取得します。」最初にピンの状態を(電気的に)確認し、次にこのプロパティが示す内容と照らし合わせて確認します。私はそれがあなたに正しい状態を伝えていると思います。

シリアルポートに関しては、私はいつもあなたのピン配置を再確認します。ハードウェアとコネクタによっては、それらは信じられないほど非標準であり、混乱しやすいものです。

ピンの電圧を表示することについて質問します。プログラム的に意味しますか?いいえ、それは不可能です。それはデジタル入力ラインです。UARTに到達すると、それはデジタル信号であり、アナログ電圧を知ることはできません。

追加の一口と同じように、このプロパティは実際にはWin32 GetCommModemStatus関数を呼び出す単なるラッパーであり、ビット7(10進数の128)が設定されている場合はtrueを返します。

于 2012-06-25T22:23:34.977 に答える
2

代わりに.PinChangedイベントを使用できますか?または、ボタンを押すだけでポーリングする必要がありますか?

于 2012-06-25T22:25:31.563 に答える