Serial.write documentation errors.
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- arduino
- Lĩnh vực
- documentation, embedded-iot
Hướng nghiên cứu
Mở tài liệu tham khảo Serial.write được liên kết và so sánh các ví dụ về tham số của tài liệu đó với hành vi một đối số được thể hiện trong sketch Processing và đầu ra Arduino. Cập nhật tài liệu tham khảo để các chữ ký được hỗ trợ và hành vi của byte ít quan trọng nhất là chính xác, sau đó xác minh rằng các ví dụ không còn cho rằng có thể gọi với nhiều tham số.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
- The reference for Serial.write implies that you can have one or more parameters of type byte[], String or int. As far as I can see it accepts only one parameter (of any of those types).
The method write(int) in the type Serial is not applicable for the arguments (String, int)
The method write(int) in the type Serial is not applicable for the arguments (int, String)
- Serial.write with integer parameter sends only the least-significant byte.
Assuming that serial.write(int-var) is valid, although not an example in Processing-4 (it was an example in Processing-3). It sends only the least-sig byte. Maybe this is as intended, but the reference doesn't say that so you'd expect the whole integer, all 4 bytes, to be written.
Expected Behavior
I'd expect the serial.write() to accept all the formats given in the reference. Assuming that the code is working correctly, then the reference should have examples of each possibility write(byte[]), byte, String, int. (I've only tested int.) No examples with multiple parameters.
I'd expect write(int) to send the whole integer, or if the help states that it only sends the least-sig byte, then 1 byte will do.
Current Behavior
Serial.write does not accept the reference multi-parameter examples.
The method write(int) in the type Serial is not applicable for the arguments (int, String)
The method write(int) in the type Serial is not applicable for the arguments (String, int)
Serial.write(int) sends only the least-sig byte.
Steps to Reproduce
Processing code.
- Comment in lines 28,29 and they are not accepted.
- Sends int to Ard at 1Hz. Prints out the returned text.) You can see that Ard is getting only the least sig-byte.
final boolean T = true;
final boolean F = false;
import processing.serial.*;
Serial port;
byte b1;
int i1 = 0;
long l1;
void setup() {
frameRate(10);
size(140, 80);
port = new Serial(this, "COM13", 9600);
noStroke();
smooth();
}
void draw() {
boolean inComing = F;
char ch;
if (frameCount > 50 && frameCount % 10 == 0) {
b1 = (byte) i1;
l1 = i1;
//port.write(i1, "");
//port.write("", i1);
port.write(i1);
print(String.format("X %d ",l1));
i1 += 53;
}
if (port.available() > 0) {print("R "); inComing = T; delay(10);}
while (port.available() > 0)
{
ch = (char) port.read();
print(ch);
}
if (inComing) {print(" "); inComing = F;}
}
Arduino Code
#define pM pinMode
#define dW digitalWrite
int i1;
int led = 7;
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println(__FILE__);
Serial.println(__DATE__);
Serial.println(__TIME__);
pM(led, OUTPUT);
}
void loop()
{
dW(led, 0);
if (Serial.available() > 0) {
i1 = Serial.read();
dW(led, 1);
Serial.print(i1);
}
delay(10);
}
Output:
X 0 R 0 X 53 R 53 X 106 R 106 X 159 R 159 X 212 R 212 X 265 R 9
X 318 R 62 X 371 R 115 X 424 R 168 X 477 R 221 X 530 R 18
X 583 R 71 X 636 R 124 X 689 R 177 X 742 R 230 X 795 R 27
X 848 R 80 X 901 R 133
X is the value Processing has, continues increasing. Arduino is sending back value of only 1 byte, limited to 255.
Your Environment
Windows-10, Processing 4.0b3, Ard 1.8.5, Ard-Nano.
Possible Causes / Solutions
Which is right, the serial.write() behaviour, or the reference? Why was the documentation changed between Processing 3 and 4. The easy solution is to make the reference match the current behaviour. Only 1 parameter of 3 types.
For the write(int) add the reference line, something like "with an integer parameter the least-significant byte is sent (value 0..255).
- Ngôn ngữ chính
- MDX
- Star
- 90
- Fork
- 122
- Merge trung bình
- 1 giờ 43 phút
- Pull request đã merge (30 ngày)
- 3
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của processing/processing-website
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
processing/processing-website#716 ·
-
Missing isLooping documentation Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
processing/processing-website#703 ·
-
Good First Issue Help Wanted Reference
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
processing/processing-website#698 · 5 bình luận · 1 reaction ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
processing/processing-website#681 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
processing/processing-website#646 · 3 bình luận ·
Tất cả issue của processing/processing-website
Issue tương tự
-
Add: hunch Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
AbdelStark/awesome-typesafe#104 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
A11y ♿️
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Link Checker Report Đang mởautomated issue report
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
-
documentation improve or update documentation priority/low triage
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 86/100
warpdotdev/docs#782 · 1 bình luận ·