none
請教有關 SerialPort 的問題 RRS feed

  • 問題

  • 大家好!! 想請教有關 SerialPort 的問題 

    我由外部單晶片控制連續發送Bytes透過 RS-232 傳回電腦端接收

    電腦端我用 C# 想寫出可以在 TextBox 看到資料,並可以另外儲存成txt檔

    以下為我的程式 :

    ************************************************************
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.IO.Ports;

    namespace Serial_Port
    {
        public partial class Form1 : Form
        {
            private byte[ ] receiveData;

            public Form1( )
            {
                InitializeComponent( );             
            }
          
            private void button1_Click(object sender, EventArgs e)
            {
                SetSerialPort( );  // 設定 SerialPort 

     

                // 可以成功轉換一次 //
                string result;
                receiveData = new byte[100];
                serialPort1.Read(receiveData, 0, 100);
                result = Encoding.Default.GetString(receiveData);   // 感謝this前輩提供的轉換 //
                richTextBox1.Text = result;
                           
                StreamWriter sw = new StreamWriter(@"C:\Test.txt");
                sw.WriteLine(richTextBox1.Text);

                sw.Flush();
                sw.Close();    

             
            }

     

            void SetSerialPort( )
            {
                serialPort1.PortName = "COM7";
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;
                serialPort1.StopBits = System.IO.Ports.StopBits.One;
                serialPort1.Parity = System.IO.Ports.Parity.None;
               
                serialPort1.Open( ); // 開啟 SerialPort
            }           

          
            private void richTextBox1_TextChanged(object sender, EventArgs e)
            {

            }

     

            private void button2_Click(object sender, EventArgs e)
            {
                serialPort1.Close( ); // 關閉 SerialPort
            }

        }
    }

    ****************************************************************************************

    發生兩個問題:

    1.result = receiveData[0].ToString( );  無法存成string  // 已由this前輩所解答

    2.StreamWriter sw = new StreamWriter(@"C:\Test.txt"); 無法寫入txt檔 // 已可使用

    缺點:只能成功轉寫一次

    我還在改進程式,有新方式我在PO上來!!

    在此謝謝this前輩的解答!!

    ****************************************************************************************

    2008年8月29日 上午 11:47

解答

  • HI,

     

    請將:

    result = receiveData[0].ToString( );

     

    改成:

    result = Encoding.Default.GetString(receiveData);

     

    tihs

    2008年8月30日 下午 01:03