我正尝试在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;
}
我可以使用超级终端应用程序(随Windows XP提供)和上面给出的用于打开端口的相同串行端口参数来读取重量。但是从上面的代码片段中,我可以打开端口,每次它都返回空数据。
我尝试使用给定的this Stack Overflow thread代码打开端口,但仍然返回空数据。
请帮帮我。
发布于 2011-06-21 21:20:57
我知道这可能有点旧了..。但为了将来参考..。
看看握手的样子。既有硬件握手,也有软件握手。你的问题可能是其中之一--所以你需要同时尝试这两种方法。
对于硬件握手,您可以尝试:
mySerialPort.DtrEnable = True
mySerialPort.RtsEnable = True
请注意,
mySerialPort.Handshake = Handshake.RequestToSend
我不认为设置某些串行设备可能需要的DTR线
软件握手也称为XON/XOFF,可以使用
mySerialPort.Handshake = Handshake.XOnXOff
或
mySerialPort.Handshake = Handshake.RequestToSendXOnXOff
您可能仍需要启用DTR
当所有其他方法都失败时--不要忘记检查所有这些握手的组合。
发布于 2012-08-02 01:55:32
由于将来其他人可能会在这方面遇到问题,握手是一个可选的选项。
在大多数余额中,您将看到软件、硬件2字符、硬件1字符的选项。Sartorius平衡的默认设置是Hardware 2 Char。我通常建议改用Software。
此外,如果它停止工作,它通常可以通过使用911参数默认单元来修复。然后重置通信设置。
有关如何更改设置的示例,请参阅本页的手册:
http://www.dataweigh.com/products/sartorius/cpa-analytical-balances/
https://stackoverflow.com/questions/6277619
复制相似问题