串口发送命令

long_alon 2012-04-20 11:27:47
串口发送命令就是写入数据. 对吗?
serialPort1.Write(data, 0, data.Length);
这样就是对串口发送命令了吗?
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
orochiheart 2012-04-20
  • 打赏
  • 举报
回复
是的 发送之后 对方就会回传给你数据 用serialPort1.Read
watermelon_2008 2012-04-20
  • 打赏
  • 举报
回复
serialPort1.Write(data, 0, data.Length);
Thread.Sleep(500);延时一下
风之影子 2012-04-20
  • 打赏
  • 举报
回复
private void selMonitor_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
byte[] data = new byte[this.selMonitor.BytesToRead];
selMonitor.Read(data, 0, data.Length);
this.Invoke(interfaceUpdateHandle, new string[] { BitConverter.ToString(data) });
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
  • 打赏
  • 举报
回复
serialPort1.Write(data, 0, data.Length);
int n = this.serialPort1.BytesToRead;
byte[] buf = new byte[n];
this.serialPort1.Read(buf, 0, n);

在计算机系统中最慢的部分是IO。
你的代码往串口写,然后执行线程马上就去执行(不考虑线程被抢占的情况)
int n = this.serialPort1.BytesToRead;
这一句,CPU在执行这两句时的时间是非常短暂的。往往是程序执行到这里时,串口还没有这么快给出响应。所以你这里多数情况可能会是0.(当然也有不为0的可能)

正确的做法是使用serialPort1的接收事件。
long_alon 2012-04-20
  • 打赏
  • 举报
回复
发送完就可以
serialPort1.Write(data, 0, data.Length);
int n = this.serialPort1.BytesToRead;
byte[] buf = new byte[n];
this.serialPort1.Read(buf, 0, n);
this.Invoke((EventHandler)(delegate
{
string receiveData = Encoding.Unicode.GetString(buf); MessageBox.Show(receiveData);
}));
这样接收传回来的数据了是吗?
[Quote=引用 1 楼 的回复:]

是的 发送之后 对方就会回传给你数据 用serialPort1.Read
[/Quote]

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧