读取串口C#.net 2.0以获得称重机输出的问题

时间:2011-06-08 10:55:18

标签: windows-xp .net-2.0 serial-port c#-2.0

我正试图在Windows XP机器上使用C#.net 2.0中的以下代码从Sartorius称重秤型号No BS2202S读取重量:

public string readWeight()
{
    string lastError = "";
    string weightData = "";
    SerialPort port = new SerialPort();
    port.PortName = "COM1";
    port.BaudRate = 9600;
    port.Parity = Parity.Even;
    port.DataBits = 7;
    port.StopBits = StopBits.One;
    port.Handshake = Handshake.RequestToSend;
    try {
        port.Open();
        weightData = port.ReadExisting();
        if(weightData == null || weightData.Length == 0) {
            lastError = "Unable to read weight. The data returned form weighing machine is empty or null.";
            return lastError;
        }
    }
    catch(TimeoutException) {
        lastError = "Operation timed out while reading weight";
        return lastError;
    }
    catch(Exception ex) {
        lastError = "The following exception occurred while reading data." + Environment.NewLine + ex.Message;
        return lastError;
    }
    finally {
        if(port.IsOpen == true) {
            port.Close();
            port.Dispose();
        }
    }
    return weightData;
}

我可以使用Hyperterminal应用程序(Windows XP附带)读取重量,并使用上面给出的相同串口参数打开端口。但是从上面的代码片段中,我可以打开端口,每次返回空数据 我尝试使用给定this Stack Overflow thread的代码打开端口,但它仍返回空数据 请帮助我。

2 个答案:

答案 0 :(得分:1)

我知道现在可能已经老了......但是为了将来参考...

看看握手。有硬件握手和软件握手。你的问题可能是 - 所以你需要尝试两者。

对于硬件握手,您可以尝试:

        mySerialPort.DtrEnable = True
        mySerialPort.RtsEnable = True

请注意

        mySerialPort.Handshake = Handshake.RequestToSend

我不认为设置一些串行设备可能需要的DTR线

软件握手也称为XON / XOFF,可以用

设置
        mySerialPort.Handshake = Handshake.XOnXOff

OR

        mySerialPort.Handshake = Handshake.RequestToSendXOnXOff

您可能仍需要启用DTR

当其他所有方法都失败时 - 别忘了检查所有这些握手组合。

答案 1 :(得分:0)

由于其他人将来可能会遇到此问题,因此握手是一个可选择的选项。

在大多数余额中,您将看到Software,Hardware 2 char,Hardware 1 char的选项。 Sartorius天平的默认设置是Hardware 2 Char。我通常建议更改为软件。

此外,如果它一起停止工作,通常可以通过使用9 1 1参数默认单位来修复它。然后重置通信设置。

有关如何更改设置的示例,请参见本页手册:

http://www.dataweigh.com/products/sartorius/cpa-analytical-balances/