智能车制作

标题: 想用C#写一个上位机 [打印本页]

作者: shenxy0011    时间: 2014-12-4 16:55
标题: 想用C#写一个上位机
我想用C#写CCD的上位机,在使用了PictureBox和TeeChart两种控件之后都觉得实时性好差,不知道是自己处理函数的问题还是控件的选取有问题

所以想问问谁用过这个拉普兰德的上位机是怎么写的

或者各路大神给点思路

作者: zhou1994    时间: 2014-12-4 17:46
实时性差是有多慢?我的经验,绘图双缓冲,接收的地方,处理尽量少,接收到数据,启动新的线程去分析,绘图等等
作者: Okabe    时间: 2014-12-4 18:23
不懂帮顶
作者: shenxy0011    时间: 2014-12-4 19:04
zhou1994 发表于 2014-12-4 17:46
实时性差是有多慢?我的经验,绘图双缓冲,接收的地方,处理尽量少,接收到数据,启动新的线程去分析,绘图 ...

是接受到新数据立即启动新线程?我是开了个线程while(1)循环

作者: shenxy0011    时间: 2014-12-4 19:04
Okabe 发表于 2014-12-4 18:23
不懂帮顶

不能更感谢

作者: 李威风12138    时间: 2014-12-4 19:15
:):):)
作者: zhou1994    时间: 2014-12-4 19:39
标题: RE: 想用C#写一个上位机
shenxy0011 发表于 2014-12-4 19:04
是接受到新数据立即启动新线程?我是开了个线程while(1)循环

怎么还有死循环了,串口接收是一个自动的线程,在触发的时候,把数据接收下来,做一个简单判断,然后丢给一个新线程处理。
作者: 头上两只角    时间: 2014-12-4 20:37
Labview 是个好东西。。。。
作者: shenxy0011    时间: 2014-12-4 22:33
zhou1994 发表于 2014-12-4 19:39
怎么还有死循环了,串口接收是一个自动的线程,在触发的时候,把数据接收下来,做一个简单判断,然后丢给 ...

嗯嗯,刚刚发现了自己程序上的漏洞...本来一次传来了几K个数据,却被我处理成一个数据,所以很慢很慢

不过还想请教大师一下线程的问题...我的线程是初始化了之后一直跑,,还是跑一次杀掉,然后下一次再重新start啊

作者: shenxy0011    时间: 2014-12-4 22:33
头上两只角 发表于 2014-12-4 20:37
Labview 是个好东西。。。。

去年用的LabVIEW,,,今年换换口味

作者: quex    时间: 2014-12-4 22:53
zhou1994 发表于 2014-12-4 19:39
怎么还有死循环了,串口接收是一个自动的线程,在触发的时候,把数据接收下来,做一个简单判断,然后丢给 ...

跨线程不能访问,你真怎么处理的
作者: zhou1994    时间: 2014-12-4 23:34
shenxy0011 发表于 2014-12-4 22:33
嗯嗯,刚刚发现了自己程序上的漏洞...本来一次传来了几K个数据,却被我处理成一个数据,所以很慢很慢

不过 ...

线程跑完了,自动结束。不用你去管。你只要新建,然后开启就好了

作者: zhou1994    时间: 2014-12-4 23:36
quex 发表于 2014-12-4 22:53
跨线程不能访问,你真怎么处理的

夸线程处理。看你的是什么情况。也许你的可以用Invoke解决。或者是在线程中去调用一个函数。用这个函数来传递数据

作者: Quixote    时间: 2014-12-4 23:56
其实用什么都一样,都是线程的故事
作者: Quixote    时间: 2014-12-4 23:57
zhou1994 发表于 2014-12-4 23:34
线程跑完了,自动结束。不用你去管。你只要新建,然后开启就好了

是这句有问题。

作者: zhou1994    时间: 2014-12-4 23:59
Quixote 发表于 2014-12-4 23:57
是这句有问题。

怎么有问题?线程是自己跑完就完了嘛。诸葛怎么看?

作者: Quixote    时间: 2014-12-5 00:03
zhou1994 发表于 2014-12-4 23:59
怎么有问题?线程是自己跑完就完了嘛。诸葛怎么看?

线程是需要自己终结的。我的串口接收部分大致格式如下。
while(1)
{
      if(1 == waitSomethingOccur())
      {
            return;
      }
      if(1 == readFromHandle())
      {
            // 去将数值传递
      }
}

waitSomethingOccur();是线程终结用的函数
虽然程序结束后,线程会自然而然地强制关闭,但这不是一个好的方法。因为有可能他不会被关闭。

作者: quex    时间: 2014-12-5 00:06
zhou1994 发表于 2014-12-4 23:36
夸线程处理。看你的是什么情况。也许你的可以用Invoke解决。或者是在线程中去调用一个函数。用这个函数来 ...

Invoke的话, 在原线程执行,那开辟线程的意义在哪里

作者: zhou1994    时间: 2014-12-5 00:39
标题: RE: 想用C#写一个上位机
Quixote 发表于 2014-12-5 00:03
线程是需要自己终结的。我的串口接收部分大致格式如下。
while(1)
{

这么说的话就能理解。但是对于所有线程的终结,我只在退出程序的时候做,不然你的线程结束标志放在线程末尾,和不放区别在哪里?
作者: zhou1994    时间: 2014-12-5 00:40
标题: RE: 想用C#写一个上位机
quex 发表于 2014-12-5 00:06
Invoke的话, 在原线程执行,那开辟线程的意义在哪里

你说的是夸线程的问题,一般用在对控件的更改。
作者: Quixote    时间: 2014-12-5 01:10
zhou1994 发表于 2014-12-5 00:39
这么说的话就能理解。但是对于所有线程的终结,我只在退出程序的时候做,不然你的线程结束标志放在线程末 ...

线程的结束由另一线程驱动。

作者: 泰庆电子    时间: 2014-12-5 08:07
双缓冲+写内存。
作者: gadwgdsk    时间: 2014-12-5 09:27
不建议新手自己用代码编写,急用可以选择LabView
当然FreeCars2.0也是一个不错的选择
作者: shenxy0011    时间: 2014-12-5 11:34
Quixote 发表于 2014-12-4 23:57
是这句有问题。

求教关于线程的~不知道怎么玩线程啊

作者: shenxy0011    时间: 2014-12-5 11:34
gadwgdsk 发表于 2014-12-5 09:27
不建议新手自己用代码编写,急用可以选择LabView
当然FreeCars2.0也是一个不错的选择

不急~上位机一大堆~主要是想学习学习~FreeCars做的好棒!

作者: shenxy0011    时间: 2014-12-5 11:37
泰庆电子 发表于 2014-12-5 08:07
双缓冲+写内存。

双缓冲是两个数组的意思么,,,写内存又是对什么写呢= =不好意思啊

作者: 南宇    时间: 2014-12-5 11:43
:):)
作者: 小号子    时间: 2014-12-5 12:36
双线程同步,切换
作者: 2997553568    时间: 2014-12-5 12:49
路过。。。。。。。
作者: Quixote    时间: 2014-12-5 15:40
gadwgdsk 发表于 2014-12-5 09:27
不建议新手自己用代码编写,急用可以选择LabView
当然FreeCars2.0也是一个不错的选择

急用不如matlab

作者: Quixote    时间: 2014-12-5 15:41
shenxy0011 发表于 2014-12-5 11:34
求教关于线程的~不知道怎么玩线程啊

用windows自带的函数

作者: 泰庆电子    时间: 2014-12-8 09:30
shenxy0011 发表于 2014-12-5 11:37
双缓冲是两个数组的意思么,,,写内存又是对什么写呢= =不好意思啊

C# 的GDI里面直接打开双缓冲 在属性里面  写内存 是 你自己开辟一个iamge 然后刷入这个image再一起显示出来,这样大大的提高了速度。

作者: zhang050204    时间: 2016-7-7 07:03
怎么看不到程序




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2