读取串口

four432

我有一个涉及串行端口读取和代码处理方式的问题。

我正在使用的设备是扫描仪/磅秤,我正在使程序显示恒定的重量以及扫描条形码

comport.NewLine = "\r";
comport.Write("S14\r");
while (comport.BytesToRead > 0)
{
    data = comport.ReadLine();

    if (data.StartsWith("S08"))
    {
        try
        {
            string data1 = data.Substring(4);
            data1 = data1.Trim();

            textBox1.Clear();
            textBox1.AppendText(data1);
            timer3.Stop();
            scan();
            timer3.Start();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        comport.DiscardInBuffer();
    }
    else if (data.StartsWith("S144"))
    {
        if (data == "S1440000")
        {
            label8.Text = "0.00";
        }
        else
        {
            string data3 = data.Substring(4);
            data3 = data3.Trim();
            var data4 = data3.Insert(2, ".");
            string data5 = double.Parse(data4).ToString("F", CultureInfo.GetCultureInfo("en-US"));

            label8.Text = data5;
            comport.DiscardInBuffer();
        }
    }
    else if (data == "S143")
    {
        label8.Text = "0.00";
    }
    else if(data =="S145")
    {
        label8.Text = "- - - - -";
    }
    else if(data == "S141")
    {
        label8.Text = "- - - - -";
    }
}

这将不断显示重量,只要没有重量,它就会扫描条形码,试图找出为什么没有重量的原因,它不会扫描,请注意,如果我扫描7次,它可能会捕获到十分之一的重量。次

编辑好,我现在知道为什么它不进行处理,它仅在从扫描仪接收到的数据中首先处理upc时处理,但是我不知道我如何观察数据的输入和输入的正确性多种方式

有时我会从扫描仪收到此信息

S143.S08A07166200024。有时是S1440050.S08A0716620024。有时是S08A0716620024.S143。

有没有人对我应该如何阅读此书有任何建议,所以无论数据以什么顺序显示,我所有的if语句都会触发?

four432
comport.NewLine = "\r";
comport.Write("S14\r");
while (comport.BytesToRead > 0)
{
    data = comport.ReadLine();

if (data.StartsWith("S08"))
{
    try
    {
        string data1 = data.Substring(4);
        data1 = data1.Trim();

        textBox1.Clear();
        textBox1.AppendText(data1);
        timer3.Stop();
        scan();
        timer3.Start();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    comport.DiscardInBuffer();
}
else if (data.StartsWith("S144"))
{
    if (data == "S1440000")
    {
        label8.Text = "0.00";
    }
    else
    {
        string data3 = data.Substring(4);
        data3 = data3.Trim();
        var data4 = data3.Insert(2, ".");
        string data5 = double.Parse(data4).ToString("F", CultureInfo.GetCultureInfo("en-US"));

        label8.Text = data5;
        comport.DiscardInBuffer();
    }
}
else if (data == "S143")
{
    label8.Text = "0.00";
}
else if(data =="S145")
{
    label8.Text = "- - - - -";
}
else if(data == "S141")
{
    label8.Text = "- - - - -";
}
}

将我的if更改为while循环

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

后台串口读取循环

来自分类Dev

从串口读取双倍

来自分类Dev

Linux C串口读取

来自分类Dev

如何从串口读取响应

来自分类Dev

串口读取多行

来自分类Dev

如何用中断串口读取串口?

来自分类Dev

如何从JavaScript读取串口数据

来自分类Dev

从C语言的串口读取arduino

来自分类Dev

Arduino Python 3 读取串口

来自分类Dev

C#串口读取HEX数据

来自分类Dev

串口readline方法读取奇怪的字符

来自分类Dev

从串口读取PuTTY时出现蓝屏

来自分类Dev

从linux命令行从串口读取

来自分类Dev

通过串口读取一些字节

来自分类Dev

串口readline方法读取奇怪的字符

来自分类Dev

串口未读取所有数据

来自分类Dev

不能从串口读取代码

来自分类Dev

读取串口数据并保存到 .csv Python

来自分类Dev

从串口读取会拆分字符串

来自分类Dev

串口ReadFile读取0字节并返回true

来自分类Dev

使用WinApi函数在c中读取串口;WaitCommEvent失败

来自分类Dev

如何通过phonegap读取低功耗蓝牙串口?

来自分类Dev

如何从串口读取数据并将其写入文件

来自分类Dev

如何从文本框中读取串口名称(可编辑)

来自分类Dev

从串口com1读取的Intermec SR61T扫描仪数据

来自分类Dev

使用 JAVA 和 jssc lib 从 Arduino 串口读取字符串

来自分类Dev

我无法正确读取数据,我使用 c# 从串口接收

来自分类Dev

火鸟数据读取器

来自分类Dev

记录读取器的概念