开始之前:

1. 识别条形码输出相关数据

在条形码识别功能下,HUSKYLENS 2 能识别出现在画面中的条形码,可以通过编程统计条形码总数、获取画面中离十字光标最近的标签的相关数据并在串口打印出来,可以读取标签数据有:条形码ID、条形码内容、条形码宽度、条形码高度以及条形码中心点的X坐标位置和Y坐标位置。

以下是示例程序。

#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;


// 主程序开始
void setup() {
	Serial.begin(9600);
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	huskylens.switchAlgorithm(ALGORITHM_BARCODE_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_BARCODE_RECOGNITION);
	if ((huskylens.available(ALGORITHM_BARCODE_RECOGNITION))) {
		Serial.println((String("条形码总数为:") + String((huskylens.getCachedResultNum(ALGORITHM_BARCODE_RECOGNITION)))));
		Serial.println((String("靠近中心的条形码ID为:") + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, ID)))));
		Serial.println((String("靠近中心的条形码中心点坐标为:") + String((String((String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, xCenter))) + String(","))) + String((RET_ITEM_NUM(huskylens.getCachedCenterResult(ALGORITHM_BARCODE_RECOGNITION), Result, yCenter)))))));
		Serial.println((String("检测到的第一个条形码的ID为") + String((RET_ITEM_NUM(huskylens.getCachedResultByIndex(ALGORITHM_BARCODE_RECOGNITION, 1-1), Result, ID)))));
	}
	delay(500);
}


当识别出条形码后,观察HUSKYLENS 2 的屏幕会将标签框出,并在方框的左上角显示解析出条形码内容,打开Mind+的串口,观察串口输出离十字光标最近的一个条形码的相关数据。

**运行结果:**如下,对于未学习过的条形码默认输出ID为0,串口输出的条形码内容与HUSKYLENS 2 的屏幕显示的保持一致。

Interface Diagram

2. 识别条形码输出相关数据

当画面中出现多张同一ID的条形码(已学习的标签ID按学习顺序分配,未学习的ID统一为0)时,可以使用以下示例程序统计画面中的同一ID条形码的数量,获取指定一张ID条形码的相关数据。

以下是示例程序。

#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;


// 主程序开始
void setup() {
	Serial.begin(9600);
	Wire.begin();
  while (!huskylens.begin(Wire)) {
    delay(100);
  }
	huskylens.switchAlgorithm(ALGORITHM_BARCODE_RECOGNITION);
}
void loop() {
	huskylens.getResult(ALGORITHM_BARCODE_RECOGNITION);
	if ((huskylens.available(ALGORITHM_BARCODE_RECOGNITION))) {
		if (((huskylens.getCachedResultByID(ALGORITHM_BARCODE_RECOGNITION, 1) != NULL))) {
			Serial.println((String("ID1条形码的总数为:") + String((huskylens.getCachedResultNumByID(ALGORITHM_BARCODE_RECOGNITION, 1)))));
			Serial.println((String("ID1条形码的内容为:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_BARCODE_RECOGNITION, 1), Result, content)))));
			Serial.println((String("第一个ID1条形码的中心点坐标为") + String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_BARCODE_RECOGNITION, 1, 1-1), Result, xCenter))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_BARCODE_RECOGNITION, 1, 1-1), Result, yCenter)))))))));
		}
	}
	delay(500);
}

**运行结果:**如下,当画面中出现多个条形码时,HUSKYLENS 2 可以识别到所有条形码(未学习和已学习的),通过串口能观察统计的当前画面的条形码总数。同时串口输出打印指定的ID为1的条形码的相关数据。

Interface Diagram