我是网络编程的初学者。我开始连接体重秤并在我的文本框中获取刻度数字
Posted
技术标签:
【中文标题】我是网络编程的初学者。我开始连接体重秤并在我的文本框中获取刻度数字【英文标题】:i am beginner in ,net programming.i am starting to connect with weigh scale and get scale digit in my textbox 【发布时间】:2017-10-11 08:43:18 【问题描述】:当我执行我的代码时,当重量发生变化时它可以正常工作。但问题是我的文本框显示 01B 等。请帮助我找出代码中的错误。我希望它是人类可读格式的 int,如 0546 等。
if (InvokeRequired) //<-- Makes sure the function is invoked to work properly in the UI-Thread
BeginInvoke(new Closure(() => SerialPortOnDataReceived(sender, serialDataReceivedEventArgs); )); //<-- Function invokes itself
else
while (_serialPort.BytesToRead > 0) //<-- repeats until the In-Buffer is empty
int dataLength = _serialPort.BytesToRead;
byte[] data = new byte[dataLength];
int nbrDataRead = _serialPort.Read(data, 0, dataLength);
if (nbrDataRead == 0)
return;
string str = System.Text.Encoding.UTF8.GetString(data);
textBox1.Text = str.ToString();
【问题讨论】:
04C, 03N ,03D, 04F,这是什么,十六进制?因为是缓冲区的真实字符串值 003 是十六进制值:/ 您需要检查您需要哪种格式并转换值,您没有告诉我们您需要的格式类型 当然我需要 int 格式 0030kg 等 我只想知道为什么文本框显示 04C, 03N ,03D, 04F 而不是数字权重:/ 【参考方案1】:您需要将获取的十六进制重量转换为十进制:
string str = GetValidNumber(System.Text.Encoding.UTF8.GetString(data));
int dec = int.Parse(str, System.Globalization.NumberStyles.HexNumber);
textBox1.Text = dec.ToString() + "kg";
您需要检查字符串中的有效 ascii 字符,以便您可以使用以下方法:
public string GetValidNumber(String numberToValid)
string validNumber = "";
bool isValidChar = false;
try
for (int i = 0; i < numberToValid.Length; i++)
isValidChar = CheckAsciiChar(numberToValid[i].ToString());
if (isValidChar)
validNumber += numberToValid[i];
return validNumber;
catch (Exception ex)
private bool CheckAsciiChar(string c)
bool isValid = false;
try
byte[] asciiBytes = Encoding.ASCII.GetBytes(c);
for (int i = 48; i <= 57; i++)
if (asciiBytes[0] == i)
isValid = true;
for (int i = 65; i <= 90; i++)
if (asciiBytes[0] == i)
isValid = true;
for (int i = 97; i <= 122; i++)
if (asciiBytes[0] == i)
isValid = true;
if (asciiBytes[0] == 250)
isValid = true;
return isValid;
catch (Exception ex)
【讨论】:
它的显示异常消息输入字符串格式不正确 在哪个车道?? int dec = int.Parse(str, System.Globalization.NumberStyles.HexNumber);在这一行 你能告诉我str
的价值吗?
这是文本框01Bkg中字符串的输出值以上是关于我是网络编程的初学者。我开始连接体重秤并在我的文本框中获取刻度数字的主要内容,如果未能解决你的问题,请参考以下文章