我一直在谷歌上搜索,没有找到任何代码来帮助我,也许我漏掉了什么?我想接收RS485命令。现在我只是在收垃圾。下面是我当前的代码,尽管我认为它不会有帮助:
//C# CODE
byte[] arr = new byte[serialPort1.BytesToRead];
serialPort1.Read(arr, 0, serialPort1.BytesToRead);
String s = "";
foreach (byte b in arr)
{
s += b.ToString() + " ";
}
/*String s = serialPort1.ReadByte().ToString();
while (serialPort1.BytesToRead > 0)
{
s += " " + serialPort1.ReadByte().ToString();
Thread.Sleep(10);
}*/
//String s = serialPort1.ReadLine().ToString();
richTextBox1.Invoke((MethodInvoker)delegate { richTextBox1.AppendText(s + "\n"); });这只是一个测试,看我是否能接收到数据。有人知道我如何通过串口接收数据并在文本框中显示这些数据吗?
发布于 2013-05-25 04:52:37
我不确定您的最终目标,但是如果您只希望接收数据并将其显示在文本框中,那么与标准的RS232串行通信没有任何区别,这应该可以做到。此示例中文本框的名称为txtOutput。
首先:
public Form1()
{
InitializeComponent();
serialPort1.PortName=("COM1");
serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
serialPort1.Open();
}串行口
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
SetText(serialPort1.ReadLine());
}
catch (Exception ex)
{
SetText(ex.ToString());
}
}代表:
delegate void SetTextCallback(string text);附于文本框:
private void SetText(string text)
{
if (this.txtOutput.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.BeginInvoke(d, new object[] { text });
}
else
{
txtOutput.AppendText(text + "\r\n");
}}请记住使用bauds设置串行port1,并确保已将串行端口添加到表单中。我已经用标准的串行连接测试了代码,它正在工作。
https://stackoverflow.com/questions/16743815
复制相似问题