我用SerialPort定义串口,在DataReceive事件中处理接收到的数据时只能收到8个字节.不知道这是为什么.
如:发送abcdefghijk 结果好像是触发了两次DataReceive事件 最后收到的数据是 ijk
想了好长时间还是不明白,请各位大侠帮忙!
using System.IO;
using System.IO.Ports;
namespace 串口练习
{
public partial class Form1 : Form
{
delegate void setText(string text);
SerialPort serial1 = new SerialPort();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serial1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(in_data);
serial1.PortName = "COM1";
serial1.BaudRate = 9600;
serial1.DataBits = 8;
serial1.StopBits = StopBits.One;
serial1.Parity = Parity.None;
serial1.Open();
} private void in_data(object sender, SerialDataReceivedEventArgs e)
{
string text1 = "";
ASCIIEncoding d = new ASCIIEncoding();
int i = serial1.BytesToRead;
byte[] c = new byte[i];
serial1.Read(c, 0, i);
text1 = d.GetString(c);
if (textBox1.InvokeRequired)
{
setText f = new setText(setListText);
textBox1.Invoke(f, new object[] { text1 });
}
else
{
textBox1.Text = text1;
}
}
private void setListText(string text)
{
textBox1.Text = text;
}
}
}
如:发送abcdefghijk 结果好像是触发了两次DataReceive事件 最后收到的数据是 ijk
想了好长时间还是不明白,请各位大侠帮忙!
using System.IO;
using System.IO.Ports;
namespace 串口练习
{
public partial class Form1 : Form
{
delegate void setText(string text);
SerialPort serial1 = new SerialPort();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serial1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(in_data);
serial1.PortName = "COM1";
serial1.BaudRate = 9600;
serial1.DataBits = 8;
serial1.StopBits = StopBits.One;
serial1.Parity = Parity.None;
serial1.Open();
} private void in_data(object sender, SerialDataReceivedEventArgs e)
{
string text1 = "";
ASCIIEncoding d = new ASCIIEncoding();
int i = serial1.BytesToRead;
byte[] c = new byte[i];
serial1.Read(c, 0, i);
text1 = d.GetString(c);
if (textBox1.InvokeRequired)
{
setText f = new setText(setListText);
textBox1.Invoke(f, new object[] { text1 });
}
else
{
textBox1.Text = text1;
}
}
private void setListText(string text)
{
textBox1.Text = text;
}
}
}
解决方案 »
- close 在那个类中
- SQL2000存储过程如何在Access中改写
- 请问招两个数据库连接有什么不同
- 关于DataGridView???
- C#已经入门,现在用C#在做程序,希望达到精通C#,希望推荐一本书籍,还有有关XML的
- (winform)dataGrid1.select(10)选择行有问题啊!
- 如何让WINFORM的DATAGRID控件的列有的为只读属性,有的不是只读属性
- ==== 请教界面(Win Form)上图形的基本思路 =====
- 来自数据源的 Single 类型的给定值不能转换为指定目标列的类型 decimal
- 聊天软件OpenFileDialog的问题【郁闷啊】
- 水晶报表自定义纸张大小问题
- 为什么RDLC报表导出Excel这么慢呐?
debug.print吗?
没看出来什么
debug.print吗?
没看出来什么
{
if (e.EventType == SerialData.Chars)
{
...
}
}
我试了你的方法,可是还是不行
http://ligen.cn/serial_test.rar