C#串口CHART控件绘图时出现的数据干扰问题解决
程序员文章站
2022-06-08 17:29:33
...
本上位机是针对STM32下位机进行开发的,使用c#语言,功能之一就是把下位机数据发送过来绘图。
目前STM32串口看到的比较好的方案有两种: 1.串口通信两端使用共用体(C#本身不支持共用体,仅支持模拟共用体)
2.直接发送字符串:"帧头,数据,数据,数据,数据,数据,帧尾",这也是博主采用的方式。
但在绘制下位机数据时,出现了奇怪的现象:
绘制时出现很多归0的点,这不符合预期。
这个问题研究了很久:也想过很多原因:1.波特率设置过高2.帧头帧尾检测3.数据传输丢包等等,结果一直没调试好。
后来研究C#代码,发现这么几句:
string[] strArray = str.Split(new char[] { ','});//用逗号分隔
int[] intArray = new int[strArray.Length + 6];//BUG修复处,把strArray.Length改为5
for (int i = 0; i < strArray.Length; i++)
{
int.TryParse(strArray[i], out intArray[i]);
}
终于找到了原因,是因为下位机发送的枕头帧尾是字母字符,而在循环里进行了强制转换,结果转换过来肯定是0,产生了干扰。DEBUG:把下位机帧头帧尾改为数字。
结果如下:
干扰消除了!
发个博客记录一下。