【C# 上位机】C#上位机之多编辑框输出
来源:互联网 发布:crm软件系统功能 编辑:程序博客网 时间:2024/06/05 19:46
背景:*基于zigbee的农业温室大棚
功能:接收多个zigbee终端结点传输到串口的数据,并将数据进行分析,调用不同的编辑框进行输出
本博文类似上篇:”串口通信之多个编辑框输出“ 可参考上篇思路
首先,每个zigbee的数据必须打包,且定长,如:12个字节
comm.ReceivedBytesThreshold = 11;//这里我设置了触发字节数是11. 可以自己设置。
##意思就是,每当接收缓冲区接收到完整的11个字节大小数据的时候,就会触发DataReceived()函数。
##这样很巧妙的解决的数据显示错乱的问题,使每个zigbee终端的数据按照自己的设想显示在不同的编辑框中
## C#写上位机 比用C++的MFC 简便很多,会用FMC的串口通信,C#上手很快的。
直接上关键代码吧:
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)//####
{
int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
received_count += n;//增加接收计数
comm.Read(buf, 0, n);//读取缓冲数据
builder.Clear();//清除字符串构造器的内容
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.Invoke((EventHandler)(delegate
{
//判断是否是显示为16禁止
if (checkBoxHexView.Checked)
{
//依次的拼接出16进制字符串
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
}
else
{
//直接按ASCII规则转换成字符串
builder.Append(Encoding.ASCII.GetString(buf));
}
//
//######## 数据包 分析
//
byte h=0;
String str1 = builder.ToString(); // 通过分析缓冲区接收到的数据包的首字符,
if (str1[0] == '*')
{ h = 0; }
else if (str1[0] == '&')
{ h = 1; }
else if (str1[0] == '#')
{ h = 2; }
else if (str1[0] == '!')
{ h = 3; }
switch(h)
{
case 0: this.txGet2.AppendText(str1);//这里就是把 首字符是 * 的数据包中的数据加到编辑框txGet2中(下面一样的方式)
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:\DATA_CHECK\C#_Humidity.txt", true))//参数true 为追加
{
string time= DateTime.Now.ToString();
file.WriteLine(time+" 湿度: "+str1);// 直接追加文件末尾,换行
}
break;
case 1: this.txGet.AppendText(str1);
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:\DATA_CHECK\C#_smoke.txt", true))
{
string time1 = DateTime.Now.ToString();
file.WriteLine(time1+" 烟雾: "+str1);// 直接追加文件末尾,换行
}
break;
case 2:
this.txGet_temp.AppendText(str1+" ");
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:\DATA_CHECK\C#_temp.txt", true))
{
string time2 = DateTime.Now.ToString();
file.WriteLine(time2 + " 温度: " + str1);// 直接追加文件末尾,换行
}
break;
case 3:
this.txGet_light.AppendText(str1+" ");
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:\DATA_CHECK\C#_light.txt", true))
{
string time3 = DateTime.Now.ToString();
file.WriteLine(time3 + " 光照: " + str1);// 直接追加文件末尾,换行
}
break;
}
//追加的形式添加到文本框末端,并滚动到最后。
//修改接收计数
labelGetCount.Text = "Get:" + received_count.ToString();//窗口 计算接收到 的数据字节个数 方便判定数据的完整性
}));
received_count = 0;
}
下面是效果图(下面版权声明纯属娱乐下,哈哈)
- 【C# 上位机】C#上位机之多编辑框输出
- C#上位机
- c#上位机实验
- 上位机-串口通信-C#
- c# MODBUS协议 上位机
- c# MODBUS协议 上位机
- c# MODBUS协议 上位机
- c# MODBUS协议 上位机
- C# winform上位机 摘要
- 电子纸上位机C#
- C# MODBUS协议上位机
- C#串口上位机源代码
- c# MODBUS协议 上位机 (转载)
- USBHID类与C#上位机连接
- MPU6050 实时图表上位机 C#
- C#上位机开发连接三菱PLC
- C#上位机初学应用笔记
- C#编写UDP组播上位机
- ASP.NET MVC分页
- 远处的梦想
- 慧都控件网 2015-05-26 05:02:00 阅读(6098) 评论(0) 在上一篇程序员最喜爱的12个Android应用开发框架(一)中,我们为大家介绍了前6个Android应用开发框
- HDU 3681Prison Break(BFS+二分+状态压缩DP)
- jquery 生成表格,拆分,合并
- 【C# 上位机】C#上位机之多编辑框输出
- 优化mysql limit offset
- hihocdoer 1086 : Browser Caching
- Android AccessibilityService(辅助服务)学习
- java总结
- iOS UITextField实用实现手机账号344格式 —— HERO博客
- 【学习ios之路:UI系列】ios中常见的几种控件.(UISlider,UISwitch,UIStepper,UISegmentedControl)
- Android 关于“NetworkOnMainThreadException”解决办法
- hibernate一对一对应关系