使用C#进行串行端口读取

时间:2017-05-11 20:08:07

标签: c# serial-port

我目前正在通过串口从一些旧机器上读取一些数据。起初,我使用.ReadChar()来获取我的数据(整数),但我的程序会随机冻结,我会得到一些IO错误,所以我想我会尝试使用ReadAsync()来获取我的信息。但是在使用ReadAsync时,我得到的数字与我以前使用ReadChar()的数字完全不同。我已经尝试将我的字节数组转换为int,但我仍然得到奇怪的数字。

使用ReadAsync时有什么我忘了做的吗?

这是一个代码片段

private async void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        try
        {
            byte[] buffer = new byte[4];
            await port.BaseStream.ReadAsync(buffer, 0, 4);

            Console.WriteLine("from port1 " + BitConverter.ToInt32(buffer,0));
        }
        catch(Exception w)
        {
            string logPath = Directory.GetCurrentDirectory() + "TanukiLog.txt";
            using (StreamWriter writer = new StreamWriter(logPath, true))
            {
                writer.WriteLine("Message :" + w.Message + "<br/>" + Environment.NewLine + "StackTrace :" + w.StackTrace + "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
                writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
            }

            Console.WriteLine("An error occured: '{0}'", e);
        }
    }

0 个答案:

没有答案