C#未将对象引用应用到对象的实例

hc05 2014-12-05 10:55:50
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;
using System.Collections;
using System.Data.OleDb;

namespace COM_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

sp.DataReceived +=new SerialDataReceivedEventHandler(sp_DataReceived);//这句出现错误
CheckForIllegalCrossThreadCalls = false;

}
SerialPort sp = null;
private void button1_Click(object sender, EventArgs e)
{
sp = new SerialPort();
sp.PortName = "COM1";//串口编号            
sp.BaudRate = 9600;//波特率             
sp.StopBits = StopBits.One;//             
sp.DataBits = 8;// 
sp.Parity = Parity.Even;//设置串口属性            
sp.Open();//打开串口
}


private void button2_Click(object sender, EventArgs e)
{
sp.WriteLine(textBox1.Text);//往串口写数据 
}

private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
string str;
str = sp.ReadLine();
richTextBox1.Text += str;

}
catch (Exception err)
{
MessageBox.Show(err.Message);
}

}




private void button4_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.FileName = "接收数据";
saveFileDialog1.Filter = "txt files (*.txt)|*.txt";
if (richTextBox1.Text != null)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.TextTextOleObjs);
}
}
}

}
}
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hc05 2014-12-05
  • 打赏
  • 举报
回复
谢谢啦!太厉害了,我都改了一上午了,太感谢了
exception92 2014-12-05
  • 打赏
  • 举报
回复

 SerialPort sp = null;     // 这行代码可以删掉    
 private void button1_Click(object sender, EventArgs e)
        {
                        sp = new SerialPort();    // 这行代码可以删掉  
            sp.PortName = "COM1";//串口编号            
            sp.BaudRate = 9600;//波特率             
            sp.StopBits = StopBits.One;//             
            sp.DataBits = 8;// 
            sp.Parity = Parity.Even;//设置串口属性            
            sp.Open();//打开串口
        }
exception92 2014-12-05
  • 打赏
  • 举报
回复
引用 2 楼 u014641356 的回复:
sp.DataReceived +=new SerialDataReceivedEventHandler(sp_DataReceived);//这句出现错误 不知道该怎么该
这样:

 SerialPort sp = null;
 public Form1()
        {
            InitializeComponent();
            sp = new SerialPort();
            sp.DataReceived +=new SerialDataReceivedEventHandler(sp_DataReceived);//这句出现错误
             CheckForIllegalCrossThreadCalls = false;
        }
sp 必须在声明之后使用。
hc05 2014-12-05
  • 打赏
  • 举报
回复
sp.DataReceived +=new SerialDataReceivedEventHandler(sp_DataReceived);//这句出现错误 不知道该怎么该
exception92 2014-12-05
  • 打赏
  • 举报
回复
那句代码报的错误??一般情况是 对象为null,而不是一个实例。

110,534

社区成员

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

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

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