簡體   English   中英

SerialPort.Read方法掛起

[英]SerialPort.Read method hanging

已經構建了一個簡單的SerialPort客戶端和服務器來測試對COM端口的寫入和讀取。 問題是當我嘗試閱讀時,它掛起了。 我知道串行端口通信本身運行良好,因為我從終端服務器進行傳輸,並在超級終端客戶端應用程序上接收回數據。 這是我的服務器的代碼:

public partial class Form1 : Form
{
    SerialPort Port = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);

    public Form1()
    {
        InitializeComponent();
    }

    private void btnSendText_Click(object sender, EventArgs e)
    {
        Port.Open();
        Port.Write(txtSendText.Text + "!%");
        Port.Close();
    }
}

這是我的客戶的代碼:

    private System.IO.Ports.SerialPort port = new System.IO.Ports.SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
    public Form1()
    {
        InitializeComponent();
        this.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.port_DataReceived);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        CheckForIllegalCrossThreadCalls = false;
        if (port.IsOpen == false)
            port.Open();
    }

    private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        textBox1.Text = (port.ReadTo("!%"));
        if (port.ReadExisting().Length == 0)
        {
            listBox1.Items.Add(textBox1.Text);
            textBox1.Text = "";
        }
    }

一直在調試器中使用各種不同類型的SerialPort讀取重載進行故障排除,但是它仍然掛在port.ReadTo(...)上。 有沒有人有什么建議? TIA。

謝謝所有張貼的人。 原來,我在使用SharpDevelop_4.4.1.9729來構建和調試應用程序。 當我閱讀這篇文章時,我開始懷疑開源IDE調試器,

http://social.msdn.microsoft.com/Forums/vstudio/zh-CN/ed9605b6-3c97-4b53-949a-f56f9da58306/serialport-hang?forum=netfxbcl

因此,我再次嘗試了一次,這次使用Microsoft Visual Studio 2010 Professional,它沒有問題!

更新:

另外,如果我在Sharp Develop中選擇“無需調試器即可運行”選項,它也可以正常運行而不會掛起,因此對於Sharp Develop調試器來說絕對是一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM