串口读取数据如何以表格形式实时显示

问题描述

各位,本人纯菜鸟,刚接触C#没几天,想要用串口读取下位机数据并在上位机上以表格形式显示,类似下图所示的。在网上看了看,有的说是要用datagridview还要连接数据库,但是不太明确实施的步骤。请教各位指点一下思路,比如应该用什么控件,先干什么,后干什么等等,先谢过。

解决方案

解决方案二:
1.连接串口采集数据2.将采集到的数据整理存储到datatable3.将datatable绑定到datagridview
解决方案三:
首先你得会串口最简单的也要通过DataReceived把需要的数据读取完整...这是第一点..其次解析出来的byte[]得按照你的硬件协议来解析.比如10个字节第一个代表XX第二个代表OO以此类推..然后你要实例化一个结果集比如List<T>或者是datatable之类的"容器"把你上面找到的记录装到这个容器中(可能有多条记录)最后拖一个datagridview把设置他的DataSource是上面的结果集就行了.不最要注意下串口的DataReceived不是UI线程..所以要datagridview.Invoke(newAction(()=>{datagridview.DataSource=XXOO;}));

解决方案四:
引用1楼caoqinghua的回复:

1.连接串口采集数据2.将采集到的数据整理存储到datatable3.将datatable绑定到datagridview

感谢指点
解决方案五:
引用2楼diaodiaop的回复:

首先你得会串口最简单的也要通过DataReceived把需要的数据读取完整...这是第一点..其次解析出来的byte[]得按照你的硬件协议来解析.比如10个字节第一个代表XX第二个代表OO以此类推..然后你要实例化一个结果集比如List<T>或者是datatable之类的"容器"把你上面找到的记录装到这个容器中(可能有多条记录)最后拖一个datagridview把设置他的DataSource是上面的结果集就行了.不最要注意下串口的DataReceived不是UI线程..所以要datagridview.Invoke(newAction(()=>{datagridview.DataSource=XXOO;}));

我已经能接收串口数据了,正是用的DataReceived。后边的步骤正是我困惑的,我先按照你说的试试,有问题再请教
解决方案六:
引用1楼caoqinghua的回复:

1.连接串口采集数据2.将采集到的数据整理存储到datatable3.将datatable绑定到datagridview

请教第二步具体如何实现,尤其是在vs中可视化界面下如何建立datatable并将数据存储到其中?本人初学,很多基础的东西还不太会,有没有相关的资料或者例程推荐的?
解决方案七:
假设你的通讯协议解析之后有以下几个字段itemID,itemValue是多条记录的.假设有一组数据(01-00-02-05-03-08)3条记录itemID分别是010203值分别是000508你就要构造出来以下的datatableitemIDitemValue010002050308那你实例化的时候就应该这样(手写可能有误)datatabledt=newdatatable();dt.colums.add("itemID",typeof(string));dt.colums.add("itemname",typeof(string));

这样一个符合你协议的结果集的容器就有了.然后你要循环你的"数据"(01-00-02-05-03-08)for(inti=0;i<data.length/2;i++){//因为2个字节是一组,所以要循环一半就够了.dt.rows.add("","");//第一次0100第二次0205第三次0308}

然后在执行DataSource绑定足以
解决方案八:
引用6楼diaodiaop的回复:

假设你的通讯协议解析之后有以下几个字段itemID,itemValue是多条记录的.假设有一组数据(01-00-02-05-03-08)3条记录itemID分别是010203值分别是000508你就要构造出来以下的datatableitemIDitemValue010002050308那你实例化的时候就应该这样(手写可能有误)datatabledt=newdatatable();dt.colums.add("itemID",typeof(string));dt.colums.add("itemname",typeof(string));

这样一个符合你协议的结果集的容器就有了.然后你要循环你的"数据"(01-00-02-05-03-08)for(inti=0;i<data.length/2;i++){//因为2个字节是一组,所以要循环一半就够了.dt.rows.add("","");//第一次0100第二次0205第三次0308}

然后在执行DataSource绑定足以

感谢这么详细的指导,按照你的步骤我基本上已经能够将数据以表格的形式显示。我现在还有个想法,就是在我1楼提到的那个表格中,除了参数值到时候需要动态刷新之外,其他几项一旦确定就不用再变,所以我想能够第一次通过串口通讯得到这5项数据后(参数值可以设置一个默认值),能够生成一个类似数据库或者项目文件的东西,并且这个东西在未连接串口通讯的时候可以在表格中打开并且符合这个表格的格式,使操作者能够查看参数的ID、参数描述等。然后当使用一个按钮使能串口接收数据之后再将参数值这一项动态的刷新。请教这个应该怎么操作,是否要用到数据库的相关知识?先谢过。

时间: 2024-10-24 18:49:04

串口读取数据如何以表格形式实时显示的相关文章

串口通信 读取报错-自编程序从串口读取数据,会出现串口错误,超级终端能读取成功

问题描述 自编程序从串口读取数据,会出现串口错误,超级终端能读取成功 我一个程序从COM1口读取数据,出现串口错误,我用电脑自带超级终端读取的话是可以成功读取我另一边发送的数据的,也稳定,然后我再启动我的程序进行读取,这时候也能成功读取,当我再重新启动程序的时候却又报错了,求大神解答 解决方案 我用PCI外接的串口就没有这种问题,之前一直就是用的COM1,也是好的,用了几个月忽然出现了这种问题

怎么画固定的表格,读取数据填入表格中

问题描述 像这样一个表,怎么在winform里设计好,然后取出数据自动填入到表里,再打印呢 解决方案 解决方案二:用FastReport画解决方案三:周围的按钮自己拖进去改名字,中间的窗体可以使用,下载PdfViewer,添加PdfViewerControl到VSToolbox,然后就可以吧窗体拽过去了.表的话可以提前做成PDF,然后用窗体读取数据,再填入.打印的话,参考.解决方案四:初学者,各位能说的稍具体点吗解决方案五:搜索"C#RDLC"

串口通信-java控制收银机“客显”实时显示单价总额等所对应的数字

问题描述 java控制收银机"客显"实时显示单价总额等所对应的数字 小弟是新手,刚进公司,接手一个用java写的超市收银系统小项目,其他问题都解决了,就差这个客显了,很恼火啊! 目前我试过三种方法:1.用dos命令行,输入esc pos命令,或许是我不会用这个命令,数字倒是显示出来了,但是格式不对,小数也不能显示,更别说显示找零单价总额这些字样了:2.用java的串口通信技术,我电脑是笔记本,所以只能用vspd建几个虚拟串口,串口是建好了,但是从网上大牛摘取的代码却检测不到这几个串口,

导入-Java从excel读取数据时,能够自己选择excel文件,不用在代码中将文件目录写死!

问题描述 Java从excel读取数据时,能够自己选择excel文件,不用在代码中将文件目录写死! 项目是进行单机版和网络版的数据对比,需要将单机版导出来的数据(excel表格,固定格式)导入网络版进行对比,网络版在导入数据时能提示选择导入的excel文件,不用在Java代码中将要读取数据的excel表格的目录写死.谢谢您的帮助! 解决方案 JAVA读取EXCEL用的比较多的是POI类库,参考Java对Excel(0307)进行上传.解析.验证.入库,或者你搜索一下java poi,有很多文章的

Ajax读取数据之分页显示篇实现代码_AJAX相关

我觉得还是有必要把我的ajax分页呈现给大家.我先讲一下这个ajax分页的实现核心,然后我们再看实例效果.所谓的ajax分页与传统的数据分页,在服务端的代码基本上是一样的.我们主要做的是使用ajax在不刷新的情况下,将请求的页码,和每页要显示的条数发送给服务端的处理网页.大家点击这个网址就可以看到要请求的数据:"ajax_page.asp?action=read&pagecount=3 & current_page=1" 在这段URL里,pagecount代表每页要显示

跪求帮忙!-c# 485串口 读取 继电保护器电流

问题描述 c# 485串口 读取 继电保护器电流 现在项目需要读取"继电保护器"里的电流.电压.电功等信息, 采样c#串口读取(协议是103规约),谁做过相应的例子, 解决方案 从串口读取数据,然后根据协议来解析就行了, 解决方案二: public partial class Form1 : Form { private System.IO.Ports.SerialPort serialPort1; string InputData = String.Empty; delegate v

Ajax读取数据之分页显示篇实现代码

我觉得还是有必要把我的ajax分页呈现给大家.我先讲一下这个ajax分页的实现核心,然后我们再看实例效果.所谓的ajax分页与传统的数据分页,在服务端的代码基本上是一样的.我们主要做的是使用ajax在不刷新的情况下,将请求的页码,和每页要显示的条数发送给服务端的处理网页.大家点击这个网址就可以看到要请求的数据:"ajax_page.asp?action=read&pagecount=3 & current_page=1" 在这段URL里,pagecount代表每页要显示

关于串口接受数据并实时绘制波形的疑问

问题描述 关于串口接受数据并实时绘制波形的疑问 想用单片机采集心电数据,并通过串口将数据实时传输给上位机并显示心电波形,用VC++编写界面. 问题1:假设单片机设置采样率为250Hz,串口通信需要时间,1s内通过串口助手接受的数据小于250个,这是不是不能保证数据的实时性呢? 问题2:数据传输间隔比较短,来一个数据就画一次图,波形是不是变化很快?看了网上的例子,通过定时器定时取串口接收的数据并画图,画的数据不是该时刻串口接收数据,而且不是所有串口接收的数据都能画出来,这样是不是就会造成波形失真呢

列表-mysql比较大的数据怎么比较快速的以表格形式列举出来

问题描述 mysql比较大的数据怎么比较快速的以表格形式列举出来 弄的iis日志,比较大.使用ctrllist一条条读取速度显得非常慢.有什么比较合适的方法,可以快速的将数据库内容以表格的形式列举出来么. 解决方案 主要是数据库的连接方式,如果用odbc或者jdbc的话,稍慢一些,ado的话,速度能快一些,使用ctrllist不要加载全部数据,采用分页来显示,速度能快不少