C# 串口接收数据单片机发回总是8位8位接收,如何将他们整合一起? 50
我串口设置为9600,8,1,none,none,发现如果用串口接收虚拟串口发出的数据,则是全部一瞬间收到,但是,如果是用单片机发送数据的话。就发现每次只能接收到8个字节...
我串口设置为 9600,8,1,none,none,
发现如果用串口接收虚拟串口发出的数据,则是全部一瞬间收到,但是,如果是用单片机发送数据的话。就发现每次只能接收到8个字节丢调用一次serialPort_DataReceived事件,结果。每次都只能收到8个字节,
程序如下
public delegate void _SafetrTextCall(string text);
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int DateLenth = serialPort.BytesToRead;
int i = 0;
string datanum = null;
StringBuilder sb = new StringBuilder();
while (i < DateLenth)
{
byte[] bt = new byte[1024];
int len = serialPort.Read(bt, 0, 1024);
sb.Append(Encoding.ASCII.GetString(bt, 0, len));
i += len;
}
datanum = sb.ToString();
safetrText(datanum);
}
string k=null;
#region safetrText
/// <summary>
/// /// </summary>
/// <param name="text">接收到的数据</param>
private void safetrText(string text)
{
try
{
if (this.InvokeRequired)
{
_SafetrTextCall call =
delegate(string s)
{
if (s != null)
{
k = k + s;
this.textBox1.Text = k;
this.textBox2.Text = (k.Length).ToString();
}
};
this.Invoke(call, text);
}
}
catch
{
return;
}
}
#endregion
用以上方法可以将整个数据都接收起来并显示。可是我总是觉得有些问题,希望各位大大能给点好建议
以上是接收字符串的写法。如何接收字节(byte)数组,也是一个难题。还有个问题是可有人知道如何接收到的字节连接起来?
我需要得到的是字节数组各位如果都是只知道字符串的就不要回答了。
例如 serialPort.ReadExisting();serialPort.ReadLine()等等就不用说了
为啥要接收字节呢。因为单片机发回来的数据是字符串和字节混一起发送的 展开
发现如果用串口接收虚拟串口发出的数据,则是全部一瞬间收到,但是,如果是用单片机发送数据的话。就发现每次只能接收到8个字节丢调用一次serialPort_DataReceived事件,结果。每次都只能收到8个字节,
程序如下
public delegate void _SafetrTextCall(string text);
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int DateLenth = serialPort.BytesToRead;
int i = 0;
string datanum = null;
StringBuilder sb = new StringBuilder();
while (i < DateLenth)
{
byte[] bt = new byte[1024];
int len = serialPort.Read(bt, 0, 1024);
sb.Append(Encoding.ASCII.GetString(bt, 0, len));
i += len;
}
datanum = sb.ToString();
safetrText(datanum);
}
string k=null;
#region safetrText
/// <summary>
/// /// </summary>
/// <param name="text">接收到的数据</param>
private void safetrText(string text)
{
try
{
if (this.InvokeRequired)
{
_SafetrTextCall call =
delegate(string s)
{
if (s != null)
{
k = k + s;
this.textBox1.Text = k;
this.textBox2.Text = (k.Length).ToString();
}
};
this.Invoke(call, text);
}
}
catch
{
return;
}
}
#endregion
用以上方法可以将整个数据都接收起来并显示。可是我总是觉得有些问题,希望各位大大能给点好建议
以上是接收字符串的写法。如何接收字节(byte)数组,也是一个难题。还有个问题是可有人知道如何接收到的字节连接起来?
我需要得到的是字节数组各位如果都是只知道字符串的就不要回答了。
例如 serialPort.ReadExisting();serialPort.ReadLine()等等就不用说了
为啥要接收字节呢。因为单片机发回来的数据是字符串和字节混一起发送的 展开
2个回答
展开全部
我没看你的程序只想提醒你,接受字符串也可以转化成任何类型的的数据,包括数组等等!关键是单片机发回的数据的格式够用就可以了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-12
展开全部
涉及到 通信协议的 问题
其实,后续的 数据 处理 是编程问题
其实,后续的 数据 处理 是编程问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询