我试图为称重桥架制作软件,同时尝试读取使用C#代码,它显示类似下面如何使用C#
)0 12589 00 )0 12589 00 )0 12589 00 )0 12589 00 )0 12589 00 )0 12589 00
private void timer1_Tick(object sender, EventArgs e)
{
string Port = GenDbUtility.GetElixirConfigValue("SERIAL_PORT", Globals.CompCode);
//<-- This block ensures that no exceptions happen
if (serialPort1 != null && serialPort1.IsOpen)
serialPort1.Close();
if (serialPort1 != null)
serialPort1.Dispose();
//<-- End of Block
serialPort1 = new SerialPort("COM1"); //<-- Creates new SerialPort using the name selected in the combobox
serialPort1.Encoding = Encoding.ASCII;
serialPort1.BaudRate = 9660;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
serialPort1.DataBits = 50;
serialPort1.Handshake = Handshake.None;
serialPort1.RtsEnable = true;
serialPort1.ReadBufferSize = 4096;
serialPort1.ReceivedBytesThreshold = 100000;
serialPort1.NewLine = "\r\n";
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
serialPort1.Open(); //<-- make the comport listen
}
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (serialPort1.IsOpen)
{
SerialPort sp = (SerialPort)sender;
string newVal = sp.ReadExisting().ToString();
///string[] qty = newVal.Split(' ');
//txtQuantity.Invoke(this.myDelegate, new Object[] { qty[3].ToString() });
//string[] qty = newVal.Split(' ');
//decimal Quantity1 = Convert.ToDecimal(qty[0]);
//decimal Quantity2 = Convert.ToDecimal(qty[1]);
//decimal Quantity3 = Convert.ToDecimal(qty[2]);
//decimal Quantity4 = Convert.ToDecimal(qty[3]);
//txtQuantity.Text = Quantity3.ToString();
//if (String.Compare(txtQuantity.Text, qty[3]) != 0)
//{
// txtQuantity.Text = Convert.ToString(qty[3]);
// //lblweight.Text = Convert.ToString(qty[2]);
// //qty[2].ToString();
//}
}
}
你正在阅读的数据包中的每个字节应该是有意义的。阅读他们的意思文档。并非全部都是数据。 – Ogbe
可能会尝试使用工具来读出COM端口以将结果与您收到的结果进行比较。可能适应COM端口的项目会返回错误的数据。 – Oswald
尝试像MSDN(https://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx)中的示例一样实现串行端口读取器有一个完整的示例你可以使用的课程。 – Oswald