C#通过串口服务器另一台计算机发送数据,本机接收数据,为什么偶尔的时候发送18个字节,int bytesRead = serialPort.BytesToRead;只读到17个字节,why?求解C#监听串口串口服务器
解决方案 »
- 设计时向Imagelist添加的图片每次运行程序都有,怎么在程序运行时动态添加的图片也永远保存在Imagelist中?
- 关于IO
- winform中实现模板文件的打印
- 一个C#的入门级问题待解决
- c#里调用oralce自定义函数
- 大虾们 帮下忙 如何在 文本框(TextBox)中输入数据后 马上刷新页面啊???
- 怎样用opengl沿任意曲线(由三维点列给出)生成圆柱?
- C#如何实现DrawEdge的效果
- 在webform中怎么改变DataGrid1的Columns的显示位置?
- 动态生成类型问题,.net 2003
- 窗体隐藏到托盘后,不执行按钮操作,急求解决方案!
- (基础)C#string类函数小结
const int BUFSIZE = 256;
byte[] bt = new byte[BUFSIZE];
private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)//接收数据事件
{
int toRead = SerialPort1.BytesToRead > BUFSIZE ? BUFSIZE : SerialPort1.BytesToRead;
SerialPort1.Read(bt, 0, SerialPort1.BytesToRead);
LinShiJieShou.Fuzhi(bt, toRead);
} private static ArrayList number = new ArrayList(); public static void Fuzhi(byte[] Data, int toRerad)
{
for (int i = 0; i < toRerad; i++)
{
number.Add(Data[i]);
}
}
用DataReceived事件接收的话,第一次没有全部读取,剩下的字节会再次触发该事件的。
定义一个字段来存储读取到的数据,每次在DataReceived事件里将串口的数据放到这个字段里。
ReadLine()超时,说明你接收的串口数据里没有换行符号,你可以用ReadExisting接收
串口延时只是说等待数据到达
真正的使用中需要有串口数据协议
根据协议解析接收到的数据
这就是一般说的缓存数据,然后分析