2014-10-10 77 views
-1

即時編寫一個從串口讀取輸入的程序。它確實收到了一些東西,但它沒有理由地打破了路線。從串口獲取輸入(RS-232)

右輸入

這項權利INOUT應該

Sending...Sending...Sending...Sending...Sending... 

在不改變線路。

實際輸入

Sending... 
Se 
ndin 
g... 
S 
endi 
ng.. 
. 
Send 
ing. 
.. 
Se 
ndin 
g... 

代碼

public void Serial() 
    { 
     try 
     { 
      SerialPort serial = new SerialPort(this.comboBox1.Text); 

      serial.BaudRate = 9600; 
      serial.Parity = Parity.None; 
      serial.StopBits = StopBits.One; 
      serial.DataBits = 8; 
      serial.Handshake = Handshake.None; 

      serial.DataReceived += new SerialDataReceivedEventHandler(SerialDataReceivedHandler); 

      serial.Open(); 
     } 
     catch 
     { 

     } 
    } 

    public void SerialDataReceivedHandler(object sender, SerialDataReceivedEventArgs e) 
    { 
     SerialPort sp = (SerialPort)sender; 
     string dataIn = sp.ReadExisting(); 
     if (log_time == true) 
     { 
      this.richTextBox1.AppendText(time + dataIn); 
     } 
     else 
     { 
      this.richTextBox1.AppendText(dataIn + "\n"); 
     } 

    } 

this.combobox1.Text工作正常,使用IM嘗試,因爲如果不是,如果串口wasnt上的程序會崩潰!

林初始化串口上的另一空隙與Serial();

我怎樣才能得到正確的輸入?

回答

0

在你的else子句中,你不應該在this.richTextBox1中附加「\ n」。這是新行的特殊性。如果你想正確的輸入,需要像this.richTextBox1.AppendText(dataIn + "...");

+0

不工作.... – 2014-10-10 16:42:38