private SerialPort SpCom = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);//声明串口 public void listen() { SpCom.DataReceived += SpCom_DataReceived;// //SpCom.DataReceived += new SerialDataReceivedEventHandler(received); } public void SpCom_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] rebuffer = new byte[8]; SpCom.Read(rebuffer, 0, rebuffer.Length); //因为要访问ui资源,所以需要使用invoke方式同步ui。 this.Invoke((EventHandler)(delegate { MessageBox.Show(rebuffer[0].ToString() + "\n" + rebuffer[1].ToString() + "\n" + rebuffer[2].ToString() + "\n" + rebuffer[3].ToString() + "\n" + rebuffer[4].ToString() + "\n" + rebuffer[5].ToString() + "\n" + rebuffer[6].ToString() + "\n" + rebuffer[7].ToString()); })); }以上程序目的是想在进入.Invoke((EventHandler)以后,通过messagebox。show();看到rebuffer里的数值,但是始终没有能弹出messagebox。
如下是我的界面;点开始测试进去之后有串口打开的指令; private void button2_Click(object sender, EventArgs e)
{ byte[] buffer =new byte[8]; if (SpCom.IsOpen)
{
}
else
{
SpCom.Open();
}
SpCom.Write(buffer, 0, 8);
}
如下是我的界面;点开始测试进去之后有串口打开的指令; private void button2_Click(object sender, EventArgs e)
{ byte[] buffer =new byte[8]; if (SpCom.IsOpen)
{
}
else
{
SpCom.Open();
}
SpCom.Write(buffer, 0, 8);
}
解决方案 »
- wpf 控件自动宽度,不能马上得到实际宽度问题
- 如何让WebBrowser控件滚动条永远处于最后一行
- 父窗体继承过来的控件移动问题
- 求方案
- 如何获取C盘下所以.DOC文件呢?
- 如何用C#做软件,显示网站的IP地址?
- 如何在列出一个表的所有字段名和该字段的数据类型?
- virtual Object^ get() sealed = System::Collections::IEnumerator::Current::get;
- udp是否能跨网段传输数据,如果要跨网段传输数据使用什么协议好?
- C#中怎样调用第三方的控件?
- C#获取本机IP
- C#画图软件中如何在FORM上可画图的同时,在左侧PANEL也可画图?
试一下!
int iLEN=serialPort1.BytesToRead;
byte[] b_read = new byte[iLEN];
serialPort1.Read(b_read, 0, iLEN);
{
SpCom.DataReceived += SpCom_DataReceived;
}
public void SpCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] rebuffer = new byte[8];
SpCom.Read(rebuffer, 0, rebuffer.Length);//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.Invoke((EventHandler)(delegate
{
MessageBox.Show(rebuffer[0].ToString() + "\n" );
}));
}
以上程序目的是想在进入.Invoke((EventHandler)以后,通过messagebox。show();看到rebuffer里的数值,但是始终没有能弹出messagebox。
如下是我的界面;点开始测试进去之后有串口打开的指令; private void button2_Click(object sender, EventArgs e)
{ byte[] buffer =new byte[8]; if (SpCom.IsOpen)
{
}
else
{
SpCom.Open();
}
SpCom.Write(buffer, 0, 8);
}
public void listen()
{
SpCom.DataReceived += SpCom_DataReceived;
//SpCom.DataReceived += new SerialDataReceivedEventHandler(received);
}
public void SpCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int iLEN = SpCom.BytesToRead;
byte[] b_read = new byte[iLEN];
SpCom.Read(b_read, 0, iLEN);
this.Invoke((EventHandler)(delegate
{
MessageBox.Show(b_read[0].ToString() + "\n" + b_read[1].ToString() + "\n" + b_read[2].ToString() + "\n" + b_read[3].ToString() + "\n" + b_read[4].ToString() + "\n" + b_read[5].ToString() + "\n");
//依次的拼接出16进制字符串
}));
按照您说的我把代码加了进去没有反应
2、用示波器查看2针波形,能看串口发送的数据。数据用查询的方法能读到,但是无法触发datareceived事件
));