从串口读取 - 出现问号而不是值

时间:2014-05-13 12:38:00

标签: c# serial-port

我目前正在将旧的vbs应用程序转换为c#应用程序,因此我可以提供更多功能。此应用程序的目的是扫描身份证并从中获取身份证。然后,我可以使用它通过CSV文件将数据导入门禁系统。

现在这是我的问题。当我使用vb应用程序通过COM端口扫描卡时,它的值为:

3E8783D0

我可以看到这种方法正常。但是,当我在c#中使用我的新程序并扫描条形码时,我得到以下输出:

2π E878 ????

所以我可以看到该卡正在扫描。但部分代码中填充了问号。

我已经考虑过改变波特率等,这是我能得到最有意义的数据。 COM端口的设置与旧的VB程序相同,所以我不会认为这不应该是一个问题吗?

我使用的编码如下所示。有人可以帮助解释问号出现的原因吗?我错过了一些明显的事吗?我正在使用的表格带有一个文本按钮和一个开始/停止按钮,以准备设备从接近传感器输入。

    public Form1()
    {
        InitializeComponent();
    }

    private void buttonStart_Click(object sender, EventArgs e)
    {
        serialPort1.PortName = "COM1";
        serialPort1.BaudRate = 4800;
        serialPort1.Parity = System.IO.Ports.Parity.None;
        serialPort1.DtrEnable = true;
        serialPort1.RtsEnable = false;
        serialPort1.ReadTimeout = 500;
        serialPort1.WriteTimeout = 500;
        serialPort1.Open();
        if (serialPort1.IsOpen)
        {
            buttonStart.Enabled = false;
            buttonStop.Enabled = true;
            textBox1.ReadOnly = false;
        }
    }

    private void buttonStop_Click(object sender, EventArgs e)
    {
        if (serialPort1.IsOpen)
        {
            serialPort1.Close();
            buttonStart.Enabled = true;
            buttonStop.Enabled = false;
            textBox1.ReadOnly = true;
        }
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (serialPort1.IsOpen) serialPort1.Close();
    }

    private void DisplayText(object sender, EventArgs e)
    {
        textBox1.AppendText("!");
        textBox1.AppendText(RxString);
    }

    private string ExtractPACID(string s)
    {
        return s.ToString() + "";
    }

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        RxString = serialPort1.ReadExisting();
        this.Invoke(new EventHandler(DisplayText));
    }

0 个答案:

没有答案