我的项目在Processing中编码,是否有可用于处理的分析器?如果没有,如何测试Processing程序的性能?
谢谢和最诚挚的问候
我使用这个简单的代码将一些字符串写入名为"example.csv"的文件,但每次运行程序时,它都会覆盖文件中的现有数据.有没有办法将文字附加到它?
void setup(){
PrintWriter output = createWriter ("example.csv");
output.println("a;b;c;this;that ");
output.flush();
output.close();
}
Run Code Online (Sandbox Code Playgroud) 我有一个小问题.
我从arduino附加的3轴加速度计+ 3轴磁力计+罗盘标题传递信息.这些缩放到midi范围(0-127).
ARDUINO:这是通过串行打印传递的,格式为76a45b120c23d12e23f34g
Serial.print(shiftAx);
Serial.print("a");
Serial.print(shiftAy);
Serial.print("b");
Serial.print(shiftAz);
Serial.print("c");
Serial.print(shiftMx);
Serial.print("d");
Serial.print(shiftMy);
Serial.print("e");
Serial.print(shiftMz);
Serial.print("f");
Serial.print(shiftHead);
Serial.print("g");
Run Code Online (Sandbox Code Playgroud)
我可以看到这使用我的串行监视器.(但我不确定是否以"g"打印为println.)
处理2:
我缓冲到我的void设置中的g()
port = new Serial(this, "/dev/tty.usbmodem411", 9600);
port.bufferUntil('g');
Run Code Online (Sandbox Code Playgroud)
我有这个功能
void serialEvent (Serial port)
{
data = port.readStringUntil('g');
AxVal = data.substring(0, data.indexOf('a'));
AyVal = data.substring(data.indexOf("a") + 1, data.indexOf("b"));
AzVal = data.substring(data.indexOf("b") + 1, data.indexOf("c"));
MxVal = data.substring(data.indexOf("c") + 1, data.indexOf("d"));
MyVal = data.substring(data.indexOf("d") + 1, data.indexOf("e"));
MzVal = data.substring(data.indexOf("e") + 1, data.indexOf("f"));
HeadVal = data.substring(data.indexOf("f") + 1, data.indexOf("g"));
}
Run Code Online (Sandbox Code Playgroud)
问题所以这不起作用.没有显示文字.(它只是一个简单的fill(),text())
我不明白为什么.问题是我的协议(如果我可以称之为),我是如何解压缩字符串的?或者其他一些问题. …
processing serial-port communication arduino serial-communication
如何在Processing中创建单个草图的多个窗口?
实际上我想在一个窗口中检测并跟踪特定颜色(通过网络摄像头)并将检测到的坐标显示为另一个窗口中的一个点.现在我可以在同一个窗口中显示检测它的点.但是我想将它分成两个不同的窗口.
最近我一直在试验音频和FFT,特别是Processing中的Minim库(基本上是Java,而不是它对这个问题特别重要).我所了解的是,使用缓冲区/样本大小N和采样率K,在执行正向FFT之后,我将获得N个频率区间(仅N/2个可用数据,实际上Minim仅返回N/2个区间)线性间隔表示从0到K/2HZ的光谱.
使用Minim(以及其他典型的FFT实现),您需要等待收集N个样本,然后执行正向变换,然后再等待N个样本,依此类推.为了获得合理的帧速率(用于音频可视化,节拍检测等),我必须使用相对于采样频率的小样本量.
然而,问题在于,当我计算对数间隔平均值时,小样本量导致频谱低端的分辨率非常低(因为低音八度音程比高音调八度音程窄得多).
我想知道一种可能的方法来挤出更明显的分辨率是否比在我目前使用的稍大的样本大小上每N个样本更频繁地执行FFT.(输入缓冲区大小为2048的IE,每100个样本,将这些样本添加到输入缓冲区并删除最旧的100个样本,并执行FFT).看起来这可能会产生滚动平均类型的影响(我可以忍受),但我不太确定.
这种方法的优点和缺点是什么?有没有其他方法可以提高我的表观分辨率,同时仍然能够进行实时可视化和分析?
您好我可以将数据从android发送到arduino但我无法通过蓝牙将数据从arduino发送到android上我没有得到任何错误但我看不到任何显示的Android应用程序..我用于blueToothSerial.print(XXX); 对于arduino side ..并使用了文本(readMessage,width,heigth); 处理方.请检查一下 .我的错在哪里?.我错过了什么?提前致谢
**在arduino方面**
#include <SoftwareSerial.h>
#include <Stepper.h>
#define RxD 6 // This is the pin that the Bluetooth (BT_TX) will transmit to the Arduino (RxD)
#define TxD 7 // This is the pin that the Bluetooth (BT_RX) will receive from the Arduino (TxD)
#define DEBUG_ENABLED 1
#define RELAY 4
SoftwareSerial blueToothSerial(RxD, TxD);
int led = 9 ;
int in1Pin = 10;
int in2Pin = 12;
int in3Pin = 11;
int in4Pin = 13;
data = 100; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用(此处可运行代码)生成具有 15 种不同颜色的彩虹:
size(360,100);
colorMode(HSB, 360, 100, 100); // Hue in degrees in [0, 360],
// saturation/brightness in [0, 100]
// like in Photoshop
noStroke();
for (int i = 0; i < 15; i++)
{
fill(i*24, 100, 100); // 24*15 = 360
rect(i*24, 0, 25, 100);
}
Run Code Online (Sandbox Code Playgroud)
但它不会产生丰富的 15 种彩虹调色板,而是缺少一些颜色(例如鲜艳的黄色)。
是否有一种众所周知的算法可以产生生动的彩虹调色板?
我在使用Processing 3.3.6(x64)for Windows 10 来识别我的LG V20安卓设备时遇到了麻烦.
起初,NoClassDefFoundError当我尝试运行草图时,我得到了一个,并且Android SDK更新程序有2个建议的更新,由于更多错误我无法安装.我的手机没有列在Processing中.该设备是我启用USB调试,连接工作; 我可以传输文件.
在通过互联网阅读时,我没有提出任何建议或成功,我尝试卸载计算机上所有与Android相关的文件,以及任何与处理相关的文件.我卸载了Java,JRE和JDK.然后我重新安装它们:
Java 8u161 JDK和JRE
处理3.3.6
Android SDK(由Processing自动安装)
这一切安装没有抱怨,一切似乎都很好.但是,Processing仍无法找到或识别我的设备.我也在我的笔记本电脑上尝试了这些确切的步骤,这些步骤大部分都是干净安装的Windows 10(除了镀铬和一些英国媒体报道),结果相同.
我也试过通过Processing的模拟器运行一些东西; 我可能做错了,但这会出现"启动时与模拟器失去联系"错误.
从这一点来看,感觉就像手机一样,因为它在多台PC上.但它也是PC的问题,因为它发生在手机和模拟器上.坦率地说,我对于问题是什么感到茫然.
我不确定我还能做什么或尝试什么; 我没有在其他任何地方找到我的问题,并尝试解决所有类似的问题没有成功.有人有什么想法吗?
编辑:我解决了这个问题.我找到了adb.exe的位置,并在该位置的cmd中运行了"adb devices".它列出了一个设备(我的),并表示它是未经授权的.我的手机上出现提示,确认后,设备已获得授权.
目前,我尝试编写代码来计算您可以看到的屏幕部分以及由于物体在 2d 中阻挡光线而无法看到的部分,例如在我们中间:

代码应该在规格非常低的处理器上运行(至少在 2020 年),即 C64。在如此简单的 CPU 上,不可能以足够快的速度为游戏进行如此复杂的数学运算,所以我想出了一个想法:首先,我让所有东西都基于平铺,这使得处理更容易,也意味着我可以改变整个字符或其颜色单元格。然后我只在 Processing 中为 PC 编写代码(这是一种类似于 Java 但更易于使用的编码语言)来计算光线将如何移动(下图应该更容易理解),首先只使用一个矩形(和一个单象限):
然后我写了一些完全凌乱的汇编代码,用于使用记录的坐标,根据当前在射线上绘制的射线数量,继续用倒置字符填充瓷砖,直到它们碰到一个对象(/它想要填充的瓷砖是不倒置,也不是空格),然后转到下一条射线。我将半径减小到 7,因此它只占用 256 个字节,这对 ASM 很有用。这完全奏效了,我能够修复每一个错误,结果令人印象深刻,因为我需要添加暂停语句,否则一切都运行得太快以至于你什么都看不到。
工作后,我用圆圈试了一下,使用以下代码设置点:
int pointNum = ceil(radius * PI * 2); // calculates the circumference
for(int i = 0;i < pointNum;i++){
float angle = map(i, 0, pointNum, 0, PI*2);
setPixel(sin(angle) * radius, cos(angle) * radius);
}
Run Code Online (Sandbox Code Playgroud)
我以前使用过 Bresenham 圆算法,但效果不佳,所以我尝试了一种更简单的方法。所以 ...
所有标记的黑色瓷砖永远不会被任何光线击中,这是一个非常大的问题,因为在游戏中你看不到这些瓷砖没有多大意义。我使用的代码是用Processing编写的:
float[] xPoints = new float[0];
float[] yPoints = new float[0];
float[] xPointsT;
float[] yPointsT;
float[] xPointsHad = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Processing 为基本的 Kinect (v2) 深度云调整 Daniel Shiffman 的代码,但是屏幕中间总是有一个像素不会去任何地方,这很烦人。这是我的意思的一个例子。
您可以看到它似乎就在前面,并且在视野中的任何物体移动时都不会移动。
这是我用来生成上面图像的代码,(这是我正在尝试做的非常精简的版本)
// imports for openkinect
import org.openkinect.freenect2.*;
import org.openkinect.processing.*;
import java.nio.FloatBuffer;
// dots size is dot_size*skip
int dot_size = 2;
// step size when iterating through pixel array
int skip = 5;
// Kinect Library object
Kinect2 kinect2;
// Angle for rotation
float a = 3.1;
void setup() {
// Rendering in P3D
size(1500,1000,P3D);
// start the kinect
kinect2 = new Kinect2(this);
kinect2.initDepth();
kinect2.initDevice();
smooth(16);
// Black background
background(0);
} …Run Code Online (Sandbox Code Playgroud)