首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取串口C#.net 2.0以获取称重机输出时出现问题

读取串口C#.net 2.0以获取称重机输出时出现问题
EN

Stack Overflow用户
提问于 2011-06-08 18:55:18
回答 2查看 4K关注 0票数 0

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

代码语言:javascript
运行
复制
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;
}

我可以使用超级终端应用程序(随Windows XP提供)和上面给出的用于打开端口的相同串行端口参数来读取重量。但是从上面的代码片段中,我可以打开端口,每次它都返回空数据。

我尝试使用给定的this Stack Overflow thread代码打开端口,但仍然返回空数据。

请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 21:20:57

我知道这可能有点旧了..。但为了将来参考..。

看看握手的样子。既有硬件握手,也有软件握手。你的问题可能是其中之一--所以你需要同时尝试这两种方法。

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

代码语言:javascript
运行
复制
        mySerialPort.DtrEnable = True
        mySerialPort.RtsEnable = True

请注意,

代码语言:javascript
运行
复制
        mySerialPort.Handshake = Handshake.RequestToSend

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

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

代码语言:javascript
运行
复制
        mySerialPort.Handshake = Handshake.XOnXOff

代码语言:javascript
运行
复制
        mySerialPort.Handshake = Handshake.RequestToSendXOnXOff

您可能仍需要启用DTR

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

票数 1
EN

Stack Overflow用户

发布于 2012-08-02 01:55:32

由于将来其他人可能会在这方面遇到问题,握手是一个可选的选项。

在大多数余额中,您将看到软件、硬件2字符、硬件1字符的选项。Sartorius平衡的默认设置是Hardware 2 Char。我通常建议改用Software。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6277619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档