CSharp - C# Putty 默认串行配置

  显示原文与译文双语对照的内容

使用 C# 时,我只能读取COM2中最后 4个字符的值。

英镑 Putty 正确地读取它。

我没有控制或者信息,对于放置该值的数据源。

我的C# 设置类似于 Putty 配置屏幕的基本设置,但是 C# 提供更多设置,所以 Putty 必须具有一些底层设置,不显示。

我检查了 Putty的文档,但在串口上找不到默认设置。

我的代码:


 using System.IO.Ports;



...



SerialPort mySerialPort = null;


mySerialPort = new SerialPort("COM2");


mySerialPort.BaudRate = 19200;


mySerialPort.Parity = System.IO.Ports.Parity.None;


mySerialPort.StopBits = System.IO.Ports.StopBits.One


mySerialPort.DataBits = 8;


mySerialPort.Handshake = System.IO.Ports.Handshake.None;


mySerialPort.DiscardNull = true;


mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);


mySerialPort.ReadBufferSize = 2147483647;



...



private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)


 {


 SerialPort sp = (SerialPort)sender;


 string value= sp.ReadExisting();//I onle get the last four characters 


 }



我应该得到" 17159160118"的值,但是onle得到" 118a",Putty 正确地读取整个字符串

因这里,我没有关于信号源的信息,我最好的选择是在代码中使用类似的配置。 或者我在做什么?

时间: 原作者:

,删除所有代码,然后再次使用干净的控制台应用程序重新开始,源是发送数据的两个部分,源,我只是想知道,我的字符串是空的。下面是我的代码,我的代码是:


class Program


{


 static void Main(string[] args)


 {



 using (SerialPort sp = new SerialPort("COM2", 19200, Parity.None, 8, StopBits.One))


 {


//sp.DiscardNull = true;


 sp.Handshake = Handshake.XOnXOff;


 sp.ReadBufferSize = 16384;


 sp.Open();


 sp.DataReceived += sp_DataReceived;


 AppDomain.CurrentDomain.ProcessExit += new EventHandler((x, y) =>


 {


 sp.Close();


 });


 Console.ReadKey();


 }



 }


 static string myString = string.Empty;


 static void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)


 {



 SerialPort sp = (sender as SerialPort);


 if (sp.BytesToRead> 0)


 {


 myString += sp.ReadExisting().Trim();


 if (myString.Last() == '')


 {


 myString = myString.Trim('').Trim();


 if (!string.IsNullOrWhiteSpace(myString))


 {


 Console.WriteLine(myString);


 }


 sp.DiscardInBuffer();


 myString = string.Empty;


 }


 }


 }


}



我注释了//sp. DiscardNull = true ;因为它正在删除所有空字符,所以任何方式都感谢 downvote 。

原作者:
...