c# 串口通信 数据是怎么存储 我该怎么去读?

c# 串口通信 数据是怎么存储 我该怎么去读?
我现在串口通信已经成功,但是在读取数据的时候会出错,我不知道接收到的数据是怎么存储的,接收数据的buff是不是有限度,该怎么清buff,麻烦哪位高手指点下.
不是报错,是我不知道怎么读, 不清楚它在buff里怎么存的,我读连续的数据时会有错位的情况,导致解码不对。 对方一直给我发数据,我每10ms去读一次buff,目前我不明白的是,串口收到数据后是怎么存储在buff里的,它是不是一直存?buff有多大? 查询方式. C#可以用中断方式去读串口数据吗?

如果是同步读写的话,可以用我以下我实际项目中用的代码:用while (sp.BytesToRead > 0)加上Thread.Sleep来确保读完成。

SerialPort sp = new SerialPort("COM4");
sp.BaudRate = 9600;
sp.ReadTimeout = 1000;
sp.WriteTimeout = 1000;
sp.NewLine = "\r\n";
//sp.DataReceived += sp_DataReceived;
sp.RtsEnable = true;
sp.DtrEnable = true;
sp.Open();
sp.WriteLine("AT+CMEE=1");
Thread.Sleep(500);
sp.WriteLine("AT+CNMI=2,2,0,1,1");
Thread.Sleep(500);
sp.WriteLine("AT+CMGF=0");
Thread.Sleep(500);

resultTB.Text += ("发送成功\r\n");

string s = "";
while (sp.BytesToRead > 0)
{
try
{
s += sp.ReadExisting();
Thread.Sleep(6000);
}
catch
{ }
}
//s为收到的信息

如果是异步,自己实现DataReceived代码即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-04
串口通信的话 看你的外设是什么啊? 一般需要一个 接口程序的吧!!
你要看接口 传过来是什么 类型的数据。 API里面应该有 数据接收的方法的吧,然后怎么处理看你自己了啊。 我当时的短信程序,读过来之后我保存在
DATASET里面。 取得话就很简单了。
第2个回答  2009-12-31
报什么错?
第3个回答  2010-01-04
不知道你是采用的是查询还是中断?
相似回答
大家正在搜