none
关于从串口接收数据的serialport类的输入缓冲区的读取问题 RRS feed

  • 问题

  • 任务是通过单片机硬件通过串口发送数据到PC上,然后存到文件中。

    单片机中串口使用的是HL340 USB转串口芯片,发送的数据为0-255之间的数。

    visual c#的串口接收部分程序为

    using System;

    using System.IO.Ports;

    using System.IO;

    public class PortChat

    {

    static bool _continue;

    static SerialPort _serialPort;

    public static void Main()

    {

    int message;

    _serialPort = new SerialPort();

    StreamWriter sw = File.CreateText("文件路径+文件名");

    _serialPort.BaudRate = 115200;

    _serialPort.PortName = "COM3";

    _serialPort.ReadTimeout = -1;

    _serialPort.WriteTimeout = -1;

    _serialPort.Open();

    _continue = true;

    while(_continue)

    {

    message = _serialPort.ReadByte();

    sw.WriteLine(message);

    }

    }

    }

    目前出现的问题是文件中的前10几个数(个数每次也不太固定)有些问题,这10几个数中原值凡是超过128的,写入文件中的值均是减去128的,不知道是什么原因?为什么ReadByte在读取输入缓冲区的一个字节的时候没有把最高位的“1”读到吗?

    2015年6月10日 9:11

全部回复

  • 对了, 除了那10几个数外后续的都是正确的
    2015年6月10日 9:44
  • 代码看起来似乎没什么问题啊,如果不转成int

    byte data = (byte)_serialPort.ReadByte();

    这样输出的原值是多少?



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年6月11日 5:44