当前位置: 首页 > 知识库问答 >
问题:

每隔一次处理跳过

莘绍元
2023-03-14

我正在尝试将XBee输出的段分组到一个变量中,该变量将它们连接起来。我正在使用Processing来编码和编译。我遇到的问题是输出(println)每隔一个字节就跳过一次(也许这是错误的术语)。因此i=4到11的XBee输出应该如下所示:

0,19,162,0,64,121,230,206(这是由十六进制转换的XBee地址)。

void draw() {
    if (myPort.available() > 21) {
        int[] XBeeAddr = new int[22];
        for (int i=0; i<22; i++) {
            XBeeAddr[i] = myPort.read();
            if (myPort.read == 126) {
                i=0;
            }
        println(XBeeAddr[0] + "," + XBeeAddr[1] + "," + XBeeAddr[2]);
    }
}
import processing.serial.*;
import de.bezier.data.sql.*; // For SQLite database

SQLite db; // For SQLite database
Serial myPort;

void setup() {
    println(Serial.list());
    myPort = new Serial(this, Serial.list()[0],9600);

    // For SQLite database...
    size( 100, 100 );
    db = new SQLite( this, "test.db" );  // Open database file
    if ( db.connect() ) {
        String[] tableNames = db.getTableNames();
        db.query( "SELECT * FROM %s", tableNames[0] );
        while (db.next()) {
            TableOne t = new TableOne();
            db.setFromRow( t );
            println( t );
        }
    }
}

// For SQLite database
class TableOne {
    public String fieldOne;
    public int fieldTwo;
    public String toString () {
        return String.format("fieldOne: %s fieldTwo: %d", fieldOne, fieldTwo);
    }
}

void draw() {
    if (myPort.available() > 21) {
        int XBeeAddr1 = 0;
        int XBeeAddr2 = 0;
        int XBeeAddr3 = 0;
        int XBeeAddr4 = 0;
        int XBeeAddr5 = 0;
        int XBeeAddr6 = 0;
        int XBeeAddr7 = 0;
        int XBeeAddr8 = 0;

        for (int i=0; i<22; i++) {
            int inByte = myPort.read();
            if (inByte == 126) {
                i=0; // This resets the counter if XBee data was incomplete on the last run.
            }
            if (i == 4) {
                XBeeAddr1 = myPort.read();
            }
            if (i == 5) {
                XBeeAddr2 = myPort.read();
            }
            if (i == 6) {
                XBeeAddr3 = myPort.read();
            }
            if (i == 7) {
                XBeeAddr4 = myPort.read();
            }
            if (i == 8) {
                XBeeAddr5 = myPort.read();
            }
            if (i == 9) {
                XBeeAddr6 = myPort.read();
            }
            if (i == 10) {
                XBeeAddr7 = myPort.read();
            }
            if (i == 11) {
                XBeeAddr8 = myPort.read();
            }

            String XBeeAddrAll = XBeeAddr1 + "," + 
                                 XBeeAddr2 + "," + 
                                 XBeeAddr3 + "," + 
                                 XBeeAddr4 + "," + 
                                 XBeeAddr5 + "," + 
                                 XBeeAddr6 + "," + 
                                 XBeeAddr7 + "," + 
                                 XBeeAddr8;
            println(XBeeAddrAll);
        }
    }
}

共有1个答案

何峰
2023-03-14

通过将myport.read==126更改为if xbeeaddr[0]!=126,break来修复。随后,我执行了一个if xbeeaddr[0]==126println

 类似资料:
  • 问题内容: 我正在尝试扫描文本文件并将每一行放入arraylist,并在下一行为’*’时停止扫描,但是,我的arraylist存储第二行,我不确定为什么。 文本文件: 我的arraylist中存储了什么: [Dip, crazy, maple, mat, pod, juice, slice, spice, stock] 问题答案: 您总是会两次阅读该行(除非您收到) 您只阅读一次,然后进行比较。

  • 问题内容: 和别的: 两者都不起作用(强制关闭应用程序)。我可以尝试其他哪些选择? 问题答案: 您的代码失败,因为您在后台线程中执行睡眠,但是显示数据必须在UI线程中执行。 您必须从runOnUiThread(Runnable)运行displayData或定义处理程序并将消息发送给它。 例如:

  • 我定义了一个块,提交间隔为10,跳过限制为10。处理器类通过应用一些算术运算来操作字段。其中一条记录(比如第6条记录)在处理器类中发生异常。在此之后,再次处理1到5条记录,跳过第6条记录,处理7到10条记录,并将其写入XML(自定义XML编写器类)。由于处理器处理1-5条记录两次,因此预期字段值计算两次是错误的。您能否建议一种解决方案,让处理器只处理一次记录,只跳过失败的记录,并将处理后的记录写入

  • 问题内容: 我在Django中的应用程序 可以 创建一些 非常大的SQL查询。我目前使用一个对象,作为我需要的数据,然后使用一个,以返回要显示给用户的内容。 显然,我可以让用户等待一分钟,同时正在执行这些许多查询集并从数据库中提取查询,然后返回此单一HTML页面。 理想情况下,我想在需要时更新页面,例如: 这可能吗? 问题答案: 我最近发现HttpResponse可以是生成器: 这将逐步将结果返回

  • 关于skip,我有一个非常基本的问题。我正在使用spring示例提供的spring batch simple cli项目,并试图理解跳过行为。它有一个非常基本的示例读取器,可以读取字符串数组(我将其修改为从Hellowworld 1到Hellowworld 10的10个字符串列表中读取),还有一个基本的编写器,可以登录到控制台。writer抛出java。每写一次都有例外。我在作业配置中增加了4个跳

  • 此场景的解决方案-提交间隔为10,跳过限制为10,总输入记录为20,前9个记录有效,其余无效。 当已读取9条记录时,第10条无效。块大小是10,跳过限制是10,那么Spring批处理会在输出文件中写入那9条记录吗?如果不是,则继续读取剩余的记录,当读取第20条记录时,错误记录的计数为11,定义的跳过限制为10。因此该过程将立即停止。首先读取的有效记录的命运如何。 前9条记录是否写入输出文件。 请让