![](/img/trans.png)
[英]Problems with connecting to the serial port of the arduino using processing
[英]Rapid Serial Port writing to Arduino from Processing
我需要一些幫助來加速寫入串口。 我發現了一些類似的問題,但沒有涉及Processing語言或Java的任何問題,所以我希望有人可以幫我解決這個問題。
編輯
正如John在下面指出的那樣,看起來串行的速度不夠快,無法以我想要的速度發送這么多數據。 有沒有人知道其他可用的arduino接口?
結束編輯
我正在使用arduino控制我連接的400個RGB LED網格。 為了向arduino發送命令,我在Processing中編寫了一個小程序來操作代表LED的大型數組。 然后,我嘗試通過串行發送800字節的數據,每隔20分鍾以115200波特率向arduino發送更新網格。 每20ms調用的處理代碼是:
noStroke();
int dataPos = 0; // position in LED data array
byte[] dataLedGrid = new byte[400*2]; // array for bytes to send
for(int j=0; j<LEDS_TALL; j++) {
for(int i=0; i<LEDS_WIDE; i++) {
int pos = j*20+i;
int r = ledGrid[LEDS_WIDE-i-1][LEDS_TALL-j-1][0], g = ledGrid[LEDS_WIDE-i-1][LEDS_TALL-j-1][1] ,b = ledGrid[LEDS_WIDE-i-1][LEDS_TALL-j-1][2];
int colorData = ((g & 0x1F) << 10) | ((b & 0x1F) << 5) | (r & 0x1F);
dataLedGrid[dataPos] = byte(colorData & 0x00FF);
dataLedGrid[dataPos+1] = byte(colorData & 0xFF00);
dataPos+=2;
// draw LED squares on gui
fill(ledGrid[i][j][0], ledGrid[i][j][1], ledGrid[i][j][2]);
rect(SIDE_PANEL_WIDTH+(LED_SQUARE_SIDE+LED_SQUARE_SPACING)*i+HORIZONTAL_MARGIN,
(LED_SQUARE_SIDE+LED_SQUARE_SPACING)*j+VERTICAL_MARGIN,
LED_SQUARE_SIDE, LED_SQUARE_SIDE);
}
}
myPort.write(dataLedGrid); // write to serial
在arduino上我有一個數組(顯示)代表arduino一側的網格。 循環代碼是:
void loop() {
unsigned int pos, c1, c2;
if (Serial.available() > 0) {
for(byte j=0; j<20; ++j) {
for(byte i=0; i<20; ++i) {
c1 = Serial.read();
c2 = Serial.read();
pos = i+20*j;
if(j % 2 != 0) // it's a square of leds created by a zigzaging line
pos = 20*(j+1)-i-1; // so I have to reverse every other line
Display[pos] = (unsigned int)(c1<<8 | c2);
}
}
show();
}
}
現在代碼本身工作正常,但是當串行寫入減慢了一切。 當我在沒有串行寫入的情況下運行Processing代碼時,一切都很好,以預期的速度運行。 但是,當我添加連續寫入時,一切都變得有些不穩定。 CPU沒有最大化或任何其他所以我假設它是我調用的serial.write方法。 我該怎么做才能加速這段代碼或消除序列編寫的滯后?
謝謝你的幫助!
算一算。
115200波特,8-N-1,每秒11,520字節,或86.8 usec /字節。
在20毫秒,您可以發送230.4字節。 發送800個字節大約需要70毫秒。
嘗試每20毫秒以115200波特率發送800個字節是行不通的。
嘗試將Serial.setTimeout(0)
添加到arduino sketch的setup()
中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.