C# RS485 控制RtsEnable 半双工通讯的问题

vagile 2015-06-30 03:12:03
这几天在用485控制下位机的时候发现了以下问题
之前用USB转串口控制不需要设置Rts状态
串口配置:

Com.Clock = new System.IO.Ports.SerialPort();
Com.Clock.PortName = Com.Com_Clock;
Com.Clock.BaudRate = 9600;
Com.Clock.DataBits = 8;
Com.Clock.Parity = System.IO.Ports.Parity.None;
Com.Clock.StopBits = System.IO.Ports.StopBits.One;
Com.Clock.ReadTimeout = 200;
Com.Clock.WriteTimeout = 200;
Com.Clock.Handshake = Handshake.None;

现在用原生串口 不设置RtsEnable=true 无法发送数据 不设置RtsEnable=false不能接收数据

但是 我发送数据前把RtsEnable=true 发送完之后RtsEnable=false
结果 下位机收到的数据 变成了 0xFF
贴代码

Com.Clock.RtsEnable = true;
Com.Clock.Write(sdata, 0, sdata.Length);
Com.Clock.RtsEnable = false;


然后我又通过BaseStream获取流,一个一个字节的写串口,结果最后一个字节变为0xFF

Stream stm = Com.Clock.BaseStream;
Com.Clock.RtsEnable = true;
for (int i = 0; i < sdata.Length; i++)
{
stm.WriteByte(sdata[i]);
}
Com.Clock.RtsEnable = false;


之后我又做了另外的尝试,设置了Handshake ,下位机接受没有问题,但是我收不到下位机的回复
感觉像是RtsEnable没有设置为fasle

//串口初始化
Com.Clock.Handshake = Handshake.None;
//Com.Clock.RtsEnable=true;//这句也设置过 效果也是一样

发送代码

Com.Clock.Write(sdata, 0, sdata.Length);


求CSDN的各路大神帮小弟看看这个问题 要被这个整死了。。。
...全文
366 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
拜一刀 2015-06-30
  • 打赏
  • 举报
回复
0xFF是不是默认的结束符啊

110,537

社区成员

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

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

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