2011-01-26 2 views
0
private void cliButton_Click(object sender, EventArgs e) 
    { 
     sp = new SerialPort(); 
     sp.PortName = "COM14"; 
     sp.BaudRate = 19200; 
     sp.Parity = Parity.None; 
     sp.DataBits = 8; 
     sp.StopBits = StopBits.One; 
     sp.Handshake = Handshake.RequestToSend; 
     sp.DtrEnable = true; 
     sp.RtsEnable = true; 

     sp.Open(); 

     if (!sp.IsOpen) 
     { 
      MessageBox.Show("Serial port is not opened"); 
      return; 
     } 
     sp.WriteLine("AT" + Environment.NewLine); 
     sp.WriteLine("AT+CLIP=1" + Environment.NewLine); 
     byte [] data= new byte [sp.BytesToRead]; 
     sp.Read(data, 0, data.Length); 


    } 

ここは私のコードです。 シリアルポート経由で携帯電話と通信するのに使います。 ここでは、ATコマンドを送信しています(AT + CLIP = 1このコマンドは、incomming呼び出しのCLIを取るために使用します)。それから私はシリアルポートのデータを読んだ。私の問題は、この読み込まれたデータをラベルに印刷するにはどうすればいいですか?シリアルポートのデータをlableに出力する方法

答えて

0

あなただけが行うことができます返された結果を表示したい場合は、次の

label.Text = sp.ReadExisting();

1

デバッガーなしでこのコードを実行すると、BytesToReadは0になります。シリアルポートデバイスが応答を送信するには時間がかかります。それは応答でSerialPort.NewLineを検出するまで読み続ける)

label1.Text = sp.ReadLine(); 

ReadLineメソッド(:これはあなたの問題を解決するべきです。

0

あなたはスペースを使用することによって、この分離進形式でポート出力を表示する場合:

_label.Text = string.Join(" ", data.Select(b => string.Format("{0:X2}", b))); 
関連する問題