提问人:Xarlixe 提问时间:11/3/2023 最后编辑:Christoph RackwitzXarlixe 更新时间:11/3/2023 访问量:42
处理 4.3 问题:“软件包”javax.xml.bind“不存在。你可能缺少一个库“,同时遵循 GitHub 教程
Processing 4.3 Issue : "The package “javax.xml.bind” does not exist. You might be missing a library." while following a GitHub tutorial
问:
我正在尝试在我的Arduino板上运行Google的可教AI(“可教机器”),以根据AI检测到的内容来控制内容。 我正在按照这个GitHub教程来了解如何在我的Arduino板上运行AI:
一切都很好,但后来我到达了以下指令:“接下来下载 [TMConnector 处理草图],将其解压缩并通过双击 .pde 文件在处理 IDE 中打开它。点击左上角的播放。您应该会看到一个这样的窗口:“。 但是当我在处理上运行代码时,出现此错误:“包”javax.xml.bind“不存在。你可能错过了图书馆。
以下是处理代码:
import processing.serial.*;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import websockets.*;
import javax.xml.bind.DatatypeConverter; // I think that the issue comes from here ?
import controlP5.*;
import java.util.*;
Serial myPort;
WebsocketServer ws;
// must match resolution used in the sketch
final int cameraWidth = 96;
final int cameraHeight = 96;
final int cameraBytesPerPixel = 1;
final int bytesPerFrame = cameraWidth * cameraHeight * cameraBytesPerPixel;
PImage myImage;
byte[] frameBuffer = new byte[bytesPerFrame];
String[] portNames;
ControlP5 cp5;
ScrollableList portsList;
boolean clientConnected = false;
void setup()
{
size(448, 224);
pixelDensity(displayDensity());
frameRate(30);
cp5 = new ControlP5(this);
portNames = Serial.list();
portNames = filteredPorts(portNames);
ws = new WebsocketServer(this, 8889, "/");
portsList = cp5.addScrollableList("portSelect")
.setPosition(235, 10)
.setSize(200, 220)
.setBarHeight(40)
.setItemHeight(40)
.addItems(portNames);
portsList.close();
// wait for full frame of bytes
//myPort.buffer(bytesPerFrame);
//myPort = new Serial(this, "COM5", 9600);
//myPort = new Serial(this, "/dev/ttyACM0", 9600);
//myPort = new Serial(this, "/dev/cu.usbmodem14201", 9600);
myImage = createImage(cameraWidth, cameraHeight, RGB);
noStroke();
}
void draw()
{
background(240);
image(myImage, 0, 0, 224, 224);
drawConnectionStatus();
}
void drawConnectionStatus() {
fill(0);
textAlign(RIGHT, CENTER);
if (!clientConnected) {
text("Not Connected to TM", 410, 100);
fill(255, 0, 0);
} else {
text("Connected to TM", 410, 100);
fill(0, 255, 0);
}
ellipse(430, 102, 10, 10);
}
void portSelect(int n) {
String selectedPortName = (String) cp5.get(ScrollableList.class, "portSelect").getItem(n).get("text");
try {
myPort = new Serial(this, selectedPortName, 9600);
myPort.buffer(bytesPerFrame);
}
catch (Exception e) {
println(e);
}
}
boolean stringFilter(String s) {
return (!s.startsWith("/dev/tty"));
}
int lastFrame = -1;
String [] filteredPorts(String[] ports) {
int n = 0;
for (String portName : ports) if (stringFilter(portName)) n++;
String[] retArray = new String[n];
n = 0;
for (String portName : ports) if (stringFilter(portName)) retArray[n++] = portName;
return retArray;
}
void serialEvent(Serial myPort) {
// read the saw bytes in
myPort.readBytes(frameBuffer);
//println(frameBuffer);
// access raw bytes via byte buffer
ByteBuffer bb = ByteBuffer.wrap(frameBuffer);
bb.order(ByteOrder.BIG_ENDIAN);
int i = 0;
while (bb.hasRemaining()) {
//0xFF & to treat byte as unsigned.
int r = (int) (bb.get() & 0xFF);
myImage.pixels[i] = color(r, r, r);
i++;
//println("adding pixels");
}
if (lastFrame == -1) {
lastFrame = millis();
}
else {
int frameTime = millis() - lastFrame;
print("fps: ");
println(frameTime);
lastFrame = millis();
}
myImage.updatePixels();
myPort.clear();
String data = DatatypeConverter.printBase64Binary(frameBuffer);
ws.sendMessage(data);
}
void webSocketServerEvent(String msg) {
if (msg.equals("tm-connected")) clientConnected = true;
}
我安装了 GitHub 告诉我的库,但我不知道该怎么做才能解决这个问题。
在互联网上,我找到了解决问题的方法,但它们与GitHub给我的处理代码不兼容(似乎是用Arduino语言编写的,解决方案不是)。如果您有任何解决方案,请告诉我。
答:
评论