我一直在谷歌搜索并没有找到任何代码来帮助我,也许我错过了什么? 我想收到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"); });
这只是一个测试,看看我是否可以收到数据。 有谁知道我如何通过串口接收数据并在文本框中显示它们?
答案 0 :(得分:0)
我不确定您的最终目标,但如果您只想查看接收数据并在文本框中显示,那么标准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并确保已将串行端口添加到表单中。我已经使用标准串行连接测试了代码并且它正在运行。