2011-01-26 68 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這個命令用於採取調用呼叫的CLI)到串口。然後我讀取串口的數據。我的問題是我如何在標籤中打印這些加速數據。如何打印串口傳輸數據到標籤

回答

0

如果你只是想顯示返回你可以做的結果是:

label.Text = sp.ReadExisting();

1

當您在沒有調試器的情況下運行此代碼時,BytesToRead將爲0。串行端口設備發送響應需要時間。這應該解決您的問題:

label1.Text = sp.ReadLine(); 

的ReadLine()一直讀取,直到它檢測到響應SerialPort.NewLine。

0

如果你想顯示在十六進制格式輸出端口通過的地方使用此分隔:

_label.Text = string.Join(" ", data.Select(b => string.Format("{0:X2}", b)));