OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2783|回复: 6

C#上位机用三个TextBox分别显示串口的不同数据

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2018-1-17
在线时间
1 小时
发表于 2018-4-1 12:02:04 | 显示全部楼层 |阅读模式
10金钱
要做一个指纹考勤系统上位机程序一共有三个Textbox,我想实现Textbox1显示串口打印信息,Textbox2显示指纹库信息(姓名、ID),Textbox3显示考勤记录

问题是:串口打印信息我只知道Textbox1.AppendText(SP.ReadExisting());这个方法,如果用这个方法的话,串口发送过来的数据全都会显示,没法分开各种不同的信息。
想请问怎么样能实现三个Textbox分别显示串口发来的不同信息。
求教,感谢各位好心大佬!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

211

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2600
金钱
2600
注册时间
2016-7-6
在线时间
546 小时
发表于 2018-4-1 13:03:51 | 显示全部楼层
把串口接收到的数据,放到一个数组里,然后分别把相应的数据给不同的Textbox,这样应该能够实现你的需求吧。
把复杂的事,做简单!
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-4-2 17:10:45 | 显示全部楼层
串口发来的数据,先解析,把不同的数据放到不同数组中,解析完数据后,在把对应的数组显示到对应的Textbox中。
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2018-4-2 17:16:46 | 显示全部楼层
你先把字符串切割,再显示啊
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-4-2 17:25:39 | 显示全部楼层
串口接收委托里,先判断数据长度,不满足则追加数据,满足则进行字符串切割,分别再放入3个文本框,之后清除接收缓冲。
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-4-2 17:26:45 | 显示全部楼层
先把串口收到的数据分类扔进缓存里在呈现
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-4-2 17:35:02 | 显示全部楼层
if (((SerialPort)sender).BytesToRead > 10) lengthpre = ((SerialPort)sender).BytesToRead;
            try
            {
                                byte[] data = new byte[lengthpre];
                int length = ((SerialPort)sender).Read(data, 0, data.Length);
                // string Read = Encoding.Default.GetString(data, 0, length);
                StringBuilder strB = new StringBuilder();

                for (int i = 0; i < length; i++)
                {

                    strB.Append(data[i].ToString("X2"));

                }

                string Read = strB.ToString();
                Readbuffer +=Read;
                if(Read.length>24)
                W_Reveive(Read);//我用的委托处理界面if(InvokeRequired)Invoke(new ShowDataDelegate(W_Reveive), s));
            }





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 22:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表