C#编程中上位机与下位机怎么实时通信

wulongdeai 2016-03-22 10:22:26
最近用C#做了一个上位机界面,想要在上位机界面上实时显示出Arduino单片机通过传感器采集的数据,求大神指点,我是一名非软件专业的学生,基本属于大白,求大神详解!!!
...全文
3025 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天凤凰601 2016-03-24
  • 打赏
  • 举报
回复
我编的上位机软件是用TCP/IP通讯的,然后监听取数据,存到数据库……
兵工厂三剑客 2016-03-24
  • 打赏
  • 举报
回复
引用 4 楼 wulongdeai 的回复:
[quote=引用 2 楼 SCGH_Fx 的回复:] 单片机都有串口,把你单片机上的TX和RX俩个引脚通过USB转串口芯片,常用的有PL2303(10块钱左右),通过它将计算机的串口与单片机的串口连接起来,就可以通信了。 C#开发的上位机的话,当然就用SerialPort类了。
现在实现基本的通信了,但是我想把采集的数据在不同的textbox里面显示出来,该怎样做啊 [/quote] private delegate void invokeDelegate(string text); /// <summary> /// 接收串口信息 /// </summary> public void ReceiveDataThread() { while (SerialPortIsOpen) { try { receivetext = sp.ReadExisting(); if (receivetext != null && receivetext != "") { /* if (Flag) { SendReceiveDataQueue.Enqueue(receivetext.Replace("\0", " ")); } */ this.BeginInvoke(new invokeDelegate(UpdataReceiveTextBox), receivetext.Replace("\0", " ")); } Thread.Sleep(20); } catch { } } } /// <summary> /// 更新串口信息显示区 /// </summary> /// <param name="text1"></param> public void UpdataReceiveTextBox(string text1) { ReceiveTextBox.AppendText(text1); ReceiveTextBox.Select(ReceiveTextBox.TextLength, 0); ReceiveTextBox.ScrollToCaret(); } thread_receiveserialportdata = new Thread(new ThreadStart(ReceiveDataThread)); thread_receiveserialportdata.Start();
雪狼孤竹 2016-03-24
  • 打赏
  • 举报
回复
都取到数据了,就是对照协议,每个字节都代表什么,把具体的数据从字节数组中取出来,放到它该放的位置就可以了。
南天空 2016-03-24
  • 打赏
  • 举报
回复
解析this.txGet.text里的数据啊,你取到的数据肯定是有规律的,第几位到第几位是经度,第几位是维度,心跳,温度什么的一样的道理,你解析一下存到一个数据类里面,往外取不久可以了
wulongdeai 2016-03-24
  • 打赏
  • 举报
回复
求大神帮忙啊!!!
wulongdeai 2016-03-24
  • 打赏
  • 举报
回复
引用 7 楼 guonan198811 的回复:
采集的数据,一般是二进制或者是十六进制的字符串,如果通讯协议中没有解析的话,你要把收到的字符串处理一下,翻译成你要的数据。存储在一个数据类中,界面上直接从数据类中去取数据显示就可以了。
我现在已经可以将数据采集显示在一个textbox里,但不知道该怎么将不同数据显示在不同textbox里面 代码是这样的 上位机界面
wulongdeai 2016-03-24
  • 打赏
  • 举报
回复
引用 6 楼 diaodiaop 的回复:
arduino啊 直接c#读取就行了
我下位机用的就是Arduino,读取数据后不知道如何显示在不同textbox中啊
南天空 2016-03-24
  • 打赏
  • 举报
回复
采集的数据,一般是二进制或者是十六进制的字符串,如果通讯协议中没有解析的话,你要把收到的字符串处理一下,翻译成你要的数据。存储在一个数据类中,界面上直接从数据类中去取数据显示就可以了。
by_封爱 版主 2016-03-24
  • 打赏
  • 举报
回复
arduino啊 直接c#读取就行了
血战31天 2016-03-24
  • 打赏
  • 举报
回复
我以前做的是plc数据采集,把数据存到数据库,再使用c#显示
wulongdeai 2016-03-23
  • 打赏
  • 举报
回复
引用 2 楼 SCGH_Fx 的回复:
单片机都有串口,把你单片机上的TX和RX俩个引脚通过USB转串口芯片,常用的有PL2303(10块钱左右),通过它将计算机的串口与单片机的串口连接起来,就可以通信了。 C#开发的上位机的话,当然就用SerialPort类了。
现在实现基本的通信了,但是我想把采集的数据在不同的textbox里面显示出来,该怎样做啊
wulongdeai 2016-03-23
  • 打赏
  • 举报
回复
现在实现基本的通信了,但是我想把采集的数据在不同的textbox里面显示出来,该怎样做啊
兵工厂三剑客 2016-03-23
  • 打赏
  • 举报
回复
单片机都有串口,把你单片机上的TX和RX俩个引脚通过USB转串口芯片,常用的有PL2303(10块钱左右),通过它将计算机的串口与单片机的串口连接起来,就可以通信了。 C#开发的上位机的话,当然就用SerialPort类了。
threenewbee 2016-03-22
  • 打赏
  • 举报
回复
看下你的硬件接口,一般是com通讯,C#用serialport通讯。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧