2
私のアプリケーションは、デバイスとの対話型通信にシリアルポートを積極的に使用しています。私が必要とするのは、シリアルポートからデータを送受信するビジュアライザを追加することです(システムトレイのネットワークアクティビティ用に点滅する2つのコンピュータと同様の2つの点滅ライト)。 この機能を正しく実装するには、どのようなアプローチをとるべきですか?シリアルポートアクティビティ(送受信データ用)のビジュアライザ
私のアプリケーションは、デバイスとの対話型通信にシリアルポートを積極的に使用しています。私が必要とするのは、シリアルポートからデータを送受信するビジュアライザを追加することです(システムトレイのネットワークアクティビティ用に点滅する2つのコンピュータと同様の2つの点滅ライト)。 この機能を正しく実装するには、どのようなアプローチをとるべきですか?シリアルポートアクティビティ(送受信データ用)のビジュアライザ
最も簡単な方法は、StatusStripを作成し、これらの指標専用のセクションを追加することです。次に、個々の状態の画像を選択し、アクティビティがあるたびに適切なものを設定します。ここにいくつかの大まかなコードがあります。
private System.Drawing.Image StateImageX { get; set; }
private System.Drawing.Image StateImageY { get; set; }
public delegate void DelegateRefreshControls();
public DelegateRefreshControls RefreshControlHandler;
public Form1()
{
this.InitializeComponent();
this.StateImageX = System.Drawing.Image.FromFile(@"??\ImageX.png");
this.StateImageY = System.Drawing.Image.FromFile(@"??\ImageY.png");
this.RefreshControlHandler += new DelegateRefreshControls(this.RefreshControls);
}
private void Form1_FormClosing (object sender, FormClosingEventArgs e)
{
this.RefreshControlHandler -= new DelegateRefreshControls(this.RefreshControls);
}
private void SerialPort_Activity (object sender, FormClosingEventArgs e)
{
this.Invoke(this.RefreshControlHandler);
}
public void RefreshControls()
{
if (state == x) this.ToolStripStatusLabel.Image = this.StateImageX;
if (state == y) this.ToolStripStatusLabel.Image = this.StateImageY;
}
これまで何をしていますか? http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/はシリアルポートには適していますが、通常は受信データのDataReceivedを待ち受けます。 –