首页 新闻 搜索 专区 学院

C#使用serialport串口发送和接收,接收不到返回数据

0
悬赏园豆:20 [待解决问题]

自己写的一个串口接收发送的小程序,向串口发送命令是应该有返回信息的
可是写的程序运行没有任何返回信息,求解

开始的时候测试的是串口那段一直有数据向PC端发送,这样程序是可以接收到数据的,可是改为串口端接收到命令再返回数据的这个之后就怎么也收不到数据了,向串口发送数据的方法应该没错吧。

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;

namespace Testcom
{
public partial class Form1 : Form
{
SerialPort sp = new SerialPort();
public Form1()
{
InitializeComponent();
sp.PortName = "COM4";
sp.BaudRate = 115200;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;

sp.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);

sp.Open();
}

//数据接收使用的代理
private delegate void myDelegate(string s);


private void button1_Click(object sender, EventArgs e)
{
string st1 = textBox1.Text;
sp.WriteLine(st1);
textBox1.Text = "";
}

private void SetText(string s)
{

listBox1.Items.Add(s);

}


//串口数据到达时的事件
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//关键 代理
myDelegate md = new myDelegate(SetText);

try
{
if (sp.IsOpen == true)
{
byte[] readBuffer = new byte[sp.ReadBufferSize];
sp.Read(readBuffer, 0, readBuffer.Length);
string readstr = Encoding.UTF8.GetString(readBuffer);

Invoke(md, readstr);
}
}
catch (Exception err)
{
throw err;
}


}

}
}

寂默天才的主页 寂默天才 | 初学一级 | 园豆:184
提问于:2012-03-31 15:06
< >
分享
所有回答(2)
0

設置一下SP。ReceivedBytesThreshold = 1,是否能觸發數據呢?

無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-31 16:06
0

搞一个串口助手,测下。

forhells | 园豆:969 (小虾三级) | 2012-04-01 00:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册