问题描述
这几天在用485控制下位机的时候发现了以下问题之前用USB转串口控制不需要设置Rts状态串口配置:Com.Clock=newSystem.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获取流,一个一个字节的写串口,结果最后一个字节变为0xFFStreamstm=Com.Clock.BaseStream;Com.Clock.RtsEnable=true;for(inti=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的各路大神帮小弟看看这个问题要被这个整死了。。。
解决方案
解决方案二:
0xFF是不是默认的结束符啊