问题描述
各位,本人纯菜鸟,刚接触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、参数描述等。然后当使用一个按钮使能串口接收数据之后再将参数值这一项动态的刷新。请教这个应该怎么操作,是否要用到数据库的相关知识?先谢过。