C#串口助手源代码(共六个打包下载)
C#串口助手源代码(共六个打包下载)其实我想找一个多线程串口接收的例子,谁有啊 学习下 谢谢 压缩包里面还有压缩包,而且是7z,能否把7z的换成ZIP或RAR的上传吗? 下载学习了 多线程接收,你说的是串口接收和刷新界面分开吗? 收了谢谢楼主的分享 什么叫多线程接收? 天下乌鸦一般黑 发表于 2019-1-7 21:28
多线程接收,你说的是串口接收和刷新界面分开吗?
对,接收解析执行和界面分开执行 hyghyg1234 发表于 2019-1-7 22:03
什么叫多线程接收?
刚回答了 天下乌鸦一般黑 发表于 2019-1-7 21:28
多线程接收,你说的是串口接收和刷新界面分开吗?
乌鸦嫌喜鹊白,喜鹊嫌乌鸦黑 我原来的一个,不晓得算不算是分开的啊,不过好象是分开的,哪天翻翻电脑找上来看看。。
kinsno 发表于 2019-1-8 09:03
我原来的一个,不晓得算不算是分开的啊,不过好象是分开的,哪天翻翻电脑找上来看看。。
...
先谢谢了,只有多线程异步才能解决高速通信问题 kinsno 发表于 2019-1-8 09:03
我原来的一个,不晓得算不算是分开的啊,不过好象是分开的,哪天翻翻电脑找上来看看。。
...
还有在串口接收事件中一次接收大于256字节,比如1024你能做到吗? SCREA 发表于 2019-1-8 07:10
乌鸦嫌喜鹊白,喜鹊嫌乌鸦黑
backgroundWorker可以实现吧 SCREA 发表于 2019-1-8 09:24
还有在串口接收事件中一次接收大于256字节,比如1024你能做到吗?
我做过串口高速刷曲线的例子,不知道你是不是想要的这种。 串口接收事件里面用一个list去接收数据,单独弄一个线程处理list,有数据就解析刷出来。 hyghyg1234 发表于 2019-1-8 09:47
串口接收事件里面用一个list去接收数据,单独弄一个线程处理list,有数据就解析刷出来。 ...
好办法,试试 天下乌鸦一般黑 发表于 2019-1-8 09:45
backgroundWorker可以实现吧
我小白不懂,大师讲明白些 SCREA 发表于 2019-1-8 10:02
我小白不懂,大师讲明白些
同样小白。摸索着给公司做的测试软件,用串口和mschart实现实时绘图,大概8条线40-60hz的绘图频率吧,不太方便发出来,见谅了。
串口这部分参考的
https://blog.csdn.net/dddxxxx/article/details/53219879
backgroundWorker参考类似下面的帖子
http://www.cnblogs.com/sparkdev/p/5906272.html
可能会用到lock操作,防止多线程对同一个缓冲区进行操作,类似下面的帖子
https://www.cnblogs.com/wolf-sun/p/4209521.html
-------------------
多线程处理串口数据和刷新界面,思路是建立一个串口用的接收缓冲区,串口接收到数据只向缓冲区里放数据,建立一个backgroundWorker线程,在DoWork里不停检测这个缓冲区长度,只要长度超过定义的最小帧长度,就解析,解析的数据保存在内存里,解析后串口从缓冲区里删掉,在backgroundWorker的ProgressChanged里不停的刷新界面。 收藏了做参考,感谢楼主分享 本帖最后由 SCREA 于 2019-1-8 20:12 编辑
天下乌鸦一般黑 发表于 2019-1-8 11:16
同样小白。摸索着给公司做的测试软件,用串口和mschart实现实时绘图,大概8条线40-60hz的绘图频率吧,不 ...
谢谢喜鹊
第一次用这个类就难住我了。 明明创建了AAA,但提示就是找不到{:mad:} 本帖最后由 SCREA 于 2019-1-8 21:46 编辑
天下乌鸦一般黑 发表于 2019-1-8 11:16
同样小白。摸索着给公司做的测试软件,用串口和mschart实现实时绘图,大概8条线40-60hz的绘图频率吧,不 ...
async/await 异步方法编程 能搞定,
串口接收事件 中 把数据push 进list
开个线程或异步编程 pop 数据, 解析数据
namespace TestInvoker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(StartSomeWorkFromUIThread));
thread.IsBackground = true;
thread.Start();
//StartSomeWorkFromUIThread();
//label1.Text = "Set value through another thread!";
}
private void StartSomeWorkFromUIThread()
{
if (this.InvokeRequired)
{
BeginInvoke(new EventHandler(RunsOnWorkerThread), null);
}
else
{
RunsOnWorkerThread(this, null);
}
}
private void RunsOnWorkerThread(object sender, EventArgs e)
{
Thread.Sleep(2000);
label1.Text = System.DateTime.Now.ToString();
}
}
} 可以参考开源项目Poderosa、Tera Term 本帖最后由 kinsno 于 2019-2-23 17:26 编辑
SCREA 发表于 2019-1-8 09:22
先谢谢了,只有多线程异步才能解决高速通信问题
好象还真不是。。N年前写的练手代码,今天看了代码,挫的一比,就不上传了。。我自己看了都惭愧。。没帮上楼主。 kinsno 发表于 2019-2-23 17:24
好象还真不是。。N年前写的练手代码,今天看了代码,挫的一比,就不上传了。。我自己看了都惭愧。。没帮 ...
C#多线程编程实战
这本书有意思 SCREA 发表于 2019-2-25 21:10
C#多线程编程实战
这本书有意思
你的问题,从这本书得到答案了吗?
学习下 谢谢 {:smile:}学习了 kinsno 发表于 2019-2-26 12:40
你的问题,从这本书得到答案了吗?
是的。
比如里面有 Concurrent queue 这种安全线程, 再用上 task, await等
谢谢楼主,刚好用来做学习资料。 keyi用吗,看看? 学习谢谢!!!
页:
[1]