[英]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調試器,
因此,我再次嘗試了一次,這次使用Microsoft Visual Studio 2010 Professional,它沒有問題!
更新:
另外,如果我在Sharp Develop中選擇“無需調試器即可運行”選項,它也可以正常運行而不會掛起,因此對於Sharp Develop調試器來說絕對是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.