晒个用C#做的串口收发的小工具
晒个用C#做的串口收发的小工具,还是有些小bug,请多多指教,个人感觉C#比VC++好上手用的版本是Microsoft Visual C# 2008 Express Edition
点击此处下载 ourdev_390773.rar(文件大小:52K) (原文件名:ComTool.rar)
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_390774.JPG
(原文件名:{82BD7EA3-918C-4BEE-8E07-62B44C759947}.JPG) 多谢楼主共享,这段时间正好要研究一下。net的串口通信 C#的,不错,看看。 哈哈 很崇拜阿莫 谢谢鼓励 指出一下楼主程序的问题:
1、
整个程序没有异常处理,当出现异常时,立即奔溃。
2、
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string read = serialPort.ReadExisting();
textBoxRec.Text += read;
}
这段代码中的textBoxRec.Text += read;这种做法是不安全的,应为他们俩不是一个线程的上的,调试的时候会抛出异样D,一试便知。正确的做法因该是使用委托事件。
解决方案:
public delegate void myDelegate();
public void refe()
{
string read = serialPort.ReadExisting();
textBoxRec.Text += read;
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
BeginInvoke(new myDelegate(refe));
} 感谢 【5楼】 eeyrw
1、确实没有做异常处理,因为只花了一天的时候写,想尽快的体验C#,所以.....,会完善的^_^
2、textBoxRec.Text += read;这样只是能显示出字符,没有做显示16进制数
eeyrw看得很认真,学习。。。。 2、textBoxRec.Text += read;这样只是能显示出字符,没有做显示16进制数
我说得并不是这个问题,而是这样做是不安全的,在调试的时候会抛出异样的。不相信可以试一下。 可以显示在“接收区”啊
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_390854.jpg
(原文件名:{F86651B7-524F-4E0A-96C1-362CB0AF59C5}.jpg) 对D,但是在调试的时候就不一样了~ 喔
刚在调试的过程中明白你的意思了 mark C#的托管很麻烦! dddddddddddddddddddddd,正在学习,谢谢 bj 最近也在学习C#做上位机,学习了。
页:
[1]