【问题标题】:Problem reading Serial Port C#.net 2.0 to get Weighing machine output读取串行端口 C#.net 2.0 以获取称重机输出时出现问题
【发布时间】:2011-09-10 18:44:25
【问题描述】:

我正在尝试在 Windows XP 机器上使用 C#.net 2.0 中的以下代码从 Sartorius 称重秤型号 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 提供)读取重量,该应用程序与上面给出的用于打开端口的串行端口参数相同。但是从上面的代码sn-p,我可以打开端口,每次都返回空数据。
我尝试使用this Stack Overflow thread 给出的代码打开端口,但它仍然返回空数据。
请帮助我。

【问题讨论】:

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


    【解决方案1】:

    我知道这可能已经过时了……但供将来参考……

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

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

            mySerialPort.DtrEnable = True
            mySerialPort.RtsEnable = True
    

    注意

            mySerialPort.Handshake = Handshake.RequestToSend
    

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

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

            mySerialPort.Handshake = Handshake.XOnXOff
    

            mySerialPort.Handshake = Handshake.RequestToSendXOnXOff
    

    您可能仍需要启用 DTR

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

    【讨论】:

      【解决方案2】:

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

      在大多数天平中,您会看到软件、硬件 2 字符、硬件 1 字符的选项。 Sartorius 天平的默认设置是 Hardware 2 Char。我通常建议更改为软件。

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

      可以在此页面的手册中找到如何更改设置的示例:

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

      【讨论】:

      • 根据常见问题解答,您应该披露您隶属于所提供的链接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多